halfway merged and pulled?!
This commit is contained in:
39
Classes/02_optical/dp_fiber_lib/nl_step.m
Normal file
39
Classes/02_optical/dp_fiber_lib/nl_step.m
Normal file
@@ -0,0 +1,39 @@
|
||||
|
||||
%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
|
||||
Reference in New Issue
Block a user