Bonjour,
Voilà, j'ai un problème : je dois convertir un code du Matlab en Fortran 90. Mais je n'ai jamais travaillé sur Fortran, j'ai essayé de m'adapter mais je trouve des difficultés à convertir des boucles écrites en Matlab... Voici les boucles dont je parle et merci infiniment pour votre aide...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
while Nbrloop<cst_loop
 
i=1;
 
% Boucle de calcul aller
while i<Nbr_iteration+1
   Pp_R(i+1)=Pp_R(i)+gamma_p*(sigma_ep*N2_R(i)-sigma_ap*N1_R(i))*Pp_R(i)*deltaX-alpha_p*Pp_R(i)*deltaX;
Psplus_R(i+1)=Psplus_R(i)+gamma_s*(sigma_es*N2_R(i)-sigma_as*N1_R(i))*Psplus_R(i)*deltaX+gamma_s*N2_R(i)*sigma_es*2*nm*h*c^2*(delta_lambda_S/lambda_S^3)*deltaX-alpha_s*Psplus_R(i)*deltaX;   
R12=(sigma_ap*Pp_R(i+1)*gamma_p)/(Aco*h*vp);
R21=(sigma_ep*Pp_R(i+1)*gamma_p)/(Aco*h*vp);
W12=(sigma_as*(Psplus_R(i+1)+Psmoins_R(i+1))*gamma_s)/(Aco*h*vs);    W21=(sigma_es*(Psplus_R(i+1)+Psmoins_R(i+1))*gamma_s)/(Aco*h*vs);      N1_R(i+1)=((R21+W21+A21)*N)/(R12+W12+R21+W21+A21);
N2_R(i+1)=N-N1_R(i+1);
 
i=i+1;
 
end  %fin boucle aller
Imax=i
 
% Boucle de calcul retour
while i>1
Psmoins_R(i-1)=Psmoins_R(i)+gamma_s*(sigma_es*N2_R(i)-sigma_as*N1_R(i))*Psmoins_R(i)*deltaX+gamma_s*N2_R(i)*sigma_es*2*nm*h*c^2*(delta_lambda_S/lambda_S^3)*deltaX-alpha_s*Psmoins_R(i)*deltaX;
R12=(sigma_ap*Pp_R(i-1)*gamma_p)/(Aco*h*vp);
R21=(sigma_ep*Pp_R(i-1)*gamma_p)/(Aco*h*vp);
W12=(sigma_as*(Psplus_R(i-1)+Psmoins_R(i-1))*gamma_s)/(Aco*h*vs);    W21=(sigma_es*(Psplus_R(i-1)+Psmoins_R(i-1))*gamma_s)/(Aco*h*vs);      N1_R(i-1)=((R21+W21+A21)*N)/(R12+W12+R21+W21+A21);
N2_R(i-1)=N-N1_R(i-1);
 
i=i-1;
 
end %fin boucle retour
Nbrloop=Nbrloop+1
end %fin boucle Nombre aller retour