# High Order Rogue Waves on the Salerno Lattice ## Context We're interested in understanding the focusing mechanisms for the so-called Salerno model $$ i \frac{d u_n}{d t}=-h^{-2}\left(u_{n+1}+u_{n-1}\right)-\left|u_n\right|^2\left(2\mu u_n+(1-\mu)\left(u_{n+1}+u_{n-1}\right)\right) $$ where $h$ is the lattice spacing the Salerno parameter $\mu$ interpolates from the so-called Ablowitz-Ladik (AL) model $(\mu=0)$ to the so-called discrete nonlinear Schrodinger (DNLS) equation $(\mu=1)$. The AL model is integrable which makes this a testbed for our favorite mathematical methods. We found that in the continuous case, we could engineer Thomas-Fermi-like initial conditions and use these as proxies for the Talanov semi-circular initial condition; this initial condition was shown to generate infinite order rogue waves. The procedure for generating the TF state is described in https://arxiv.org/abs/2406.06869 The parameters (nonlinear strength, trap strength, chemical potential) I used to generate the TF state for the Salerno model is not that critical. The main point is to fix a family of initial conditions and to track the dynamics of the model as the lattice stepsize $h$ is varied. ## Observed Dynamics All plots are rescaled by the value of the ground state at the origin so that what we observe the magnification. For the Ablowitz-Ladik model I observe ![ALDynamics](https://hackmd.io/_uploads/HJIpH5Qc1e.gif) For DNLS ![DNLSDynamics](https://hackmd.io/_uploads/BkOCIcQ91l.gif) For Salerno ![SalernoDynamics](https://hackmd.io/_uploads/rJprwqXc1e.gif) We see there is an $h$ value where the dynamics of the Ablowitz-Ladik model abruptly change into a strongly focusing wave. I want to understand this and I propose to do so by computing the nonlinear spectrum of the Ablowitz-Ladik model over $h$. Then, maybe I can use this as a proxy to understand Salerno and somehow continue through the parameter $\mu$ from zero to one. ## Reproducing Chen and Pelinovsky, 2023 Luckily, rogue waves on the Ablowitz-Ladik lattice where studied extensively by Chen and Pelinovsky https://arxiv.org/abs/2303.17052 Indeed, I am quite fortunate that they did work here before I did. Like every good Pelinovsky paper on an integrable model, he states *very* cleanly what the Lax pair is: \begin{equation*} U\left(u_n, \lambda\right)=\frac{1}{\sqrt{1+\left|u_n\right|^2}}\left(\begin{array}{cc} \lambda & u_n \\ -\bar{u}_n & \lambda^{-1} \end{array}\right) \end{equation*} \begin{equation*} \begin{aligned} V\left(u_n, \lambda\right): V_{11}&=\frac{i}{2}\left(\lambda^2+\lambda^{-2}+u_n \bar{u}_{n-1}+\bar{u}_n u_{n-1}\right) \\ V_{12}&=i\lambda u_n-i\lambda^{-1} u_{n-1} \\ V_{21}&=-i\lambda \bar{u}_{n-1}+i\lambda^{-1} \bar{u}_n \\ V_{22}&=-\frac{i}{2}\left(\lambda^2+\lambda^{-2}+u_n \bar{u}_{n-1}+\bar{u}_n u_{n-1}\right) \end{aligned} \end{equation*} Compatibility of the operators $V$ and $U$ can be shown to reproduce the $h=1$ Ablowitz-Ladik model written above. As written, computing the spectrum of $U\left(u_n, \lambda\right)$ amounts to solving an operator pencil problem. Originally, we implemented a Newton trace method with deflation (to remove multiple roots) that numerically solves this nonlinear root-finding problem. Although I had a lot of fun in operator pencil land and even had a working implementation, this method is too computationally inefficient for this nonlinear waves study. Chen and Pelinovsky of course found a much easier approach. Just bit of algebra and reshifting indices leads to $$ \left\{\begin{array}{l} \sqrt{1+|u_n|^2} P_{n+1}+\sqrt{1+|u_{n-1}|^2} P_{n-1}-\left(U_n-U_{n-1}\right) Q_n=z P_n \\ \sqrt{1+|u_n|^2} Q_{n+1}+\sqrt{1+|u_{n-1}|^2} Q_{n-1}+\left(\bar{u}_n-\bar{u}_{n-1}\right) P_n=z Q_n \end{array}\right. $$ where $z:=\lambda+\lambda^{-1}$. This is now an eigenvalue problem in $z$, and much easier to solve than an operator pencil problem! Since I'm using periodic boundary conditions, the problem I'm left with is \begin{equation*} M\xi=z \xi \end{equation*} where \begin{equation*} M=\left[\begin{array}{l|l} A & B \\ \hline C & A \end{array}\right] \end{equation*} \begin{equation*} a_n=\left(1+\left|u_{n-1}\right|^2\right),\qquad b_n=\left(u_{n-1}-u_n\right),\qquad c_n=\left(\bar{u}_n-\bar{u}_{n-1}\right) \end{equation*} \begin{equation*} B=\operatorname{diag}(\vec{b}), \qquad C=\operatorname{diag}(\vec{c}) \end{equation*} $$ A = \begin{pmatrix} 0 & 1 & 0 & 0 & \dots & a_{1} \\ a_2 & 0 & 1 & 0 & \dots & 0 \\ 0 & a_3 & 0 &1 & \dots & 0 \\ \vdots & \ddots & \ddots & \ddots & & \vdots \\ 1 & 0 & \dots & & a_N & 0 \end{pmatrix} $$ Using the Floquet-Hill method to fill in the continuous spectrum turns out to be really easy; this 20 year old article shows how easy it is https://www.sciencedirect.com/science/article/pii/S0021999106001665 We now perform a test to compute the nonlinear AL spectra of the dnoidal $$u_{\rm dn}=\frac{\operatorname{sn}(\alpha ; k)}{\operatorname{cn}(\alpha ; k)} \operatorname{dn}(\alpha n ; k),$$ and cnoidal $$u_{\rm cn}=\frac{k \operatorname{sn}(\alpha ; k)}{\operatorname{dn}(\alpha ; k)} \operatorname{cn}(\alpha n ; k)$$ waves, where $\alpha \in(0, K(k))$ and $k \in(0,1)$, where $k$ is the elliptic modulus. Compare this with Chen and Pelinovsky, Figure 3 ![Dnoidal](https://hackmd.io/_uploads/r1pANoXqyl.png) Compare this with Chen and Pelinovsky, Figure 5 top ![Cnoidal1](https://hackmd.io/_uploads/rko6Nsm9Jl.png) Compare this with Chen and Pelinovsky, Figure 5 bottom ![Cnoidal2](https://hackmd.io/_uploads/rJQCNsm5Jx.png) Looks like my implementation is aligned with theirs. Here's the whole MATLAB code so that you can run it yourself and see how satisfying it is to use Floquet-Hill to fill out the continuous spectrum ```matlab %% A Test to Compute the nonlinear Ablowitz-Ladik Spectrum % spatial domain is one period of a discrete dnoidal wave ss=0; N=40+ss*40; x=-(N-1)/2:(N+1)/2; x(end)=[]; % wave parameters consistent with Chen and Pelinovsky Section 4.2 M=20; k=.8; K= ellipke(k); alpha=K/M; % here is the dnoidal wave (Equation 2.8) [S,C,~] = ellipj(alpha,k); [~,~,D] = ellipj(alpha*x,k); u0=S.*D./C; % here is the cnoidal wave (Equation 2.11) % [S,~,D] = ellipj(alpha,k); % [~,C,~] = ellipj(alpha*x,k); % u0=S/D.*C; % use the Floquet-Hill Method and loop over Floquet parameters for theta=0:pi/M/8:pi % Compute the Ablowitz Ladik Spectrum for one theta [lambda,z]=getLaxSpectrum(u0,theta); % visualize the spectrum (compare with Figure 3) subplot(3,1,1) plot(real(lambda),imag(lambda),'.k'), axis tight, hold on xlabel('$\Re\{\lambda\}$'),ylabel('$\Im\{\lambda\}$') title('Nonlinear Ablowitz-Ladik Spectrum') xlim([.9 1.1]), ylim([-.08 .08]) subplot(3,1,2) plot(real(lambda),imag(lambda),'.k'), axis tight, hold on xlabel('$\Re\{\lambda\}$'),ylabel('$\Im\{\lambda\}$') xlim([-1.1 -.9]), ylim([-.08 .08]) subplot(3,1,3) plot(real(lambda),imag(lambda),'.k'), axis tight, hold on xlabel('$\Re\{\lambda\}$'),ylabel('$\Im\{\lambda\}$') axis equal drawnow end function [lambda,z]=getLaxSpectrum(u0,theta) N=length(u0); % make the u0 dependent functions appearing in the block matrix for k=2:N a(k)=sqrt(1+abs(u0(k-1))^2); end for k=1:N d(k)=sqrt(1+abs(u0(k))^2); end % enforces periodicity a(1)=a(end); % note that these coefficients equal zero when k=1 (as they should) for k=2:N b(k)=(u0(k-1)-u0(k)); c(k)=(conj(u0(k))-conj(u0(k-1))); end % make the tridiagonal matrix A A=spdiags(a(2:end).',-1,N,N)+spdiags(d.',-1,N,N).'; % enforce periodicity in A (this is the only Floquet-Hill modification) A(end,1)=d(end).*exp(-1i*theta); A(1,end)=a(1).*exp(1i*theta); % construct the inhomogeneous diagonal matrices B and C B=spdiags(b.',0,N,N); C=spdiags(c.',0,N,N); % the full matrix is M=[A B;C A]; % compute the spectrum [~,DD]=eigs(M,2*N); z=diag(DD); % infer lambda via the quadratic formula lambdap=(z+sqrt(z.^2-4))/2; lambdam=(z-sqrt(z.^2-4))/2; lambda=([lambdam; lambdap]); end ``` ## Computing the Nonlinear Spectrum for the TF States First of all, I need to verify that the nonlinear spectrum of the dynamics is invariant over time. Indeed, if I compute the nonlinear spectrum of $h\vec{u}(t)$ using the above MATLAB code from some $\vec{u}_0$ then I observe isospectrality of the spectral operator. I was lucky that the rescaling was simple and I found it. Great. Here is what the spectra look like for AL ground states ![ALSpectrum](https://hackmd.io/_uploads/By1-joQqkl.gif) DNLS ground states ![DNLSLSpectrum](https://hackmd.io/_uploads/BkuxsiXqyl.gif) and Salerno ($\mu=1/2$) ground states ![SalernoSpectrum](https://hackmd.io/_uploads/rJJMijXqkl.gif) I think there's some interesting mathematics that could probably be done here. I could probably resolve space so that $h$ values change more continuously. By the way, here is the entire MATLAB code that gets the ground states and computes the nonlinear spectrum of each one. ``` matlab % spatial domain L=3*pi; mu=0; for N=3:2:51 x=linspace(-L,L,N)'; %lattice spacing h=x(2)-x(1); % build the matrix for the derivative A=diag(ones(1,N-1),-1) + diag(ones(1,N-1),1); % use periodic boundary conditions A(1,N)=1; A(N,1)=1; % time domain to get the Ground State T=8;dt=2^-14; t=0:dt:T; % T-F like Initial Condition Computed as the GS with potential V omega=3; V=(omega^2/2*x.^2); tol=1e-12; u=4.5*exp(-x.^2); u0=getGroundState(x,u,A,V,mu,h,t,tol); % compute the nonlinear spectrum using Floquet-Hill for theta=0:pi/80:pi % Compute the Spectrum for one Theta [lambda,z]=getLaxSpectrum(h*u0,theta); % visualize plot(real(lambda),imag(lambda),'.k'), axis tight, xlim([-2 2]), hold on xlabel('$\Re\{\lambda\}$'),ylabel('$\Im\{\lambda\}$') axis equal title(['Nonlinear AL Spectrum at h=' num2str(h)]) end % draw it now that the continuous spectrum has been filled in drawnow % if you want some control, uncomment to pause % pause clf end function u=getGroundState(x,u0,A,V,mu,h,t,tol) nt=length(t); dt=t(2)-t(1); norm=sqrt(trapz(x,abs(u0).^2)); MatExp=expm(dt*A*h^(-2)); % set the initial condition u=u0; %Time-Stepping Loop for ktime=2:nt % Full-Step of DNLS u=u-2*dt*mu*u.^3-dt/2*V.*u; % Full-Step of AL NL u=u-dt*(1-mu)*abs(u).^2.*A*u-dt/2*V.*u; % Full Step of Linear u=MatExp*u; % Renormalize u=norm*u/sqrt(trapz(x,abs(u).^2)); if trapz(x,abs(u-u0).^2)<tol % we've converged to the steady state break end u0=u; end end ``` For completeness, here's the MATLAB code that computes the focusing Salerno dynamics ``` matlab function [u,U]=SolveFocusing(u,mu,A,MatExp,x,t,nplt,plots) nt=length(t); dt=t(2)-t(1); counter=1; U(:,counter)=u; %Time-Stepping Loop for ktime=2:nt % Full Step of Linear u=MatExp*u; % Full-Step of DNLS NL theta=angle(u)+2*mu*dt*abs(u).^2; u=abs(u).*exp(1i*theta); % Full-Step of AL NL u=u+1i*(1-mu)*dt*abs(u).^2.*A*u; % visualize if mod(ktime,nplt)==0 counter=counter+1; U(:,counter)=u; if plots plot(x,abs(u)) xlim([-10 10]), ylim([0 5]), pause(1), hold off end end end end ``` ## Further Studies I noticed that can interpolate from a "Christmas tree pattern" to a KM breather. Interesting. The way I do this is by rescaling the dynamics through a single parameter $a$, I did away with the $h$ dependence, such a way the the continuum dynamics are acheived via the ansatz $$ u_n(t)=a \mathfrak{u}\left(a n, a^2 t\right) e^{2 i t} $$ where $\mathfrak{u}$ asymptotically approaches the solution the continuum NLS $$ i \mathfrak{u}_T+\mathfrak{u}_{X X}+2|\mathfrak{u}|^2 \mathfrak{u}=0 $$ as $a\to0$. ![ALDynamicsA](https://hackmd.io/_uploads/r1bEsVGhJl.gif) I would like to make quantitative statements about what I am observing. It would be great if I could compute the spectrum of exact solutions and make fits of my computed dynamics to them, etc... By the way, I found this interesting picture of the spectrum over specific values of $a$. I don't know how to interpret it, but it looks like a cnoidal spectrum colliding and merging into the main branch of the continuous spectrum. ![SDynamicsA](https://hackmd.io/_uploads/HJ2rcSMhye.gif)