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
Partager