40 lines
1.5 KiB
Matlab
40 lines
1.5 KiB
Matlab
|
|
%function [rOpt,state] = nl_step(state,aOpt,aDz)
|
|
|
|
function [rOpt_x,rOpt_y] = nl_step(opt_x,opt_y, dz, gamma, chi, use_manakov, beatlength, alpha_lin_x, alpha_lin_y)
|
|
|
|
if ~use_manakov % CNLSE
|
|
|
|
rOpt_x = opt_x .* exp( (-1j*(1/3)*gamma*dz).* ...
|
|
( (2 + cos(2*chi)^2)*(abs(opt_x).^2) + ...
|
|
(2+2*sin(2*chi)^2)*(abs(opt_y).^2) ) );
|
|
|
|
rOpt_y = opt_y .* exp( (-1j*(1/3)*gamma*dz).* ...
|
|
( (2 + cos(2*chi)^2)*(abs(opt_y).^2) + ...
|
|
(2+2*sin(2*chi)^2)*(abs(opt_x).^2) ) );
|
|
|
|
% A_x = opt_x;
|
|
% A_y = opt_y;
|
|
%
|
|
% rOpt_x = 1i* gamma * (abs(A_x).^2 + (2/3 .* abs(A_y).^2) ) .* A_x + ((1i * gamma / 3) * conj(A_x).*(A_y.^2) * exp(-2i * dz * 2*pi / beatlength ));
|
|
% rOpt_y = 1i* gamma * (abs(A_y).^2 + (2/3 .* abs(A_x).^2) ) .* A_y + ((1i * gamma / 3) * conj(A_y).*(A_x.^2) * exp(-2i * dz * 2*pi / beatlength ));
|
|
|
|
|
|
else
|
|
% estimate effective length of dz (ref?)
|
|
if (alpha_lin_x == 0) && (alpha_lin_y == 0)
|
|
Leff = dz;
|
|
else
|
|
Leff = (1-exp(-alpha_lin_x*dz))/alpha_lin_x;
|
|
end
|
|
|
|
%compute power
|
|
power = real(opt_x).^2+imag(opt_x).^2+real(opt_y).^2+imag(opt_y).^2;
|
|
% power= abs(opt_x).^2+abs(opt_y).^2;
|
|
% powers = [powers;power];
|
|
Hnl = exp( -1j*8/9*gamma*power*Leff);
|
|
rOpt_x = opt_x .* Hnl;
|
|
rOpt_y = opt_y .* Hnl;
|
|
end
|
|
end
|