Programme FORTRAN en C
Fermé
FortranNoobs
-
29 mai 2009 à 18:30
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 - 3 juin 2009 à 00:29
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 - 3 juin 2009 à 00:29
A voir également:
- Programme FORTRAN en C
- Programme demarrage windows 10 - Guide
- Désinstaller programme windows 10 - Guide
- Mettre en veille un programme - Guide
- Forcer la fermeture d'un programme - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
3 réponses
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
30 mai 2009 à 12:33
30 mai 2009 à 12:33
Bonjour,
Voici quelques remarques sur cette portion de code Fortran :
Cordialement.
Cchristian.
Voici quelques remarques sur cette portion de code Fortran :
C Dans un programme Fortran, si l'option IMPLICIT NONE n'est pas C active, toutes les variables dont la première lettre est I,J, C K,L,M, ou N sont considérées de type INTEGER*4 (représentation C interne sur 4 octets). C Les autres variables sont considérées REAL*4 (représentation C intene sur 4 octets). Ici NN=25000 aurait très bien pu être C défini de la manière suivante : INTEGER NN /250000/ C Dans cet extrait de programme Fortran l'option IMPLICIT NONE C n'est vraisemblablement pas activée. NN=250000 print *, time pause C Ici les variables time et dt sont des variable de type REAL*8 car C le paramètre d ou (D) = double précision est codé dans la partie C fractionnaire. Il induit le type REAL*8 (représentation interne C sur 8 octets). time=140.0d0 C Pour la compatibilité du calcul NN est converti en REAL*4 grâce C à la fonction intrinsèque FLOAT. dt=time/dble(float(NN)) c c c starting values for active en0, nonactive en1 and daughter endd c c eN0=1.0d0 eN1=0.000002d0 endd=3.0d0/100.0d0*eN0 C Boucle équivalente à une boucle FOR (k = 1, k < NN; k++) { ..... do k=1,NN t=dble(float(k))*dt w=0.885d0 C Fonction intrinsèque COSinus. ff=p*(1.0d0+1.0d0*cos(w*t)) C Opérations classiques : dn0=-(p_ec+p_loss+p_bp+ff)*eN0+p_01*eN1 dn0=dn0*dt dn1=ff*eN0-(p_01+p_bp+p_loss)*eN1 dn1=dn1*dt dnd=p_ec*eN0-p_loss*endd dnd=dnd*dt eN0=en0+dn0 eN1=eN1+dn1 endd=endd+dnd C équivalent: "}" d'une boucle FOR. enddo
Cordialement.
Cchristian.
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
3 juin 2009 à 00:29
3 juin 2009 à 00:29
Bonsoir,
Merci pour le retour. Si dans la limite de mes connaissances en Fortran je peux vous aider davantage, ça sera avec plaisir. Mais pour les équations, qu'elles soient différentielles ou non, ne comptez pas sur moi.
Bon courage !
Merci pour le retour. Si dans la limite de mes connaissances en Fortran je peux vous aider davantage, ça sera avec plaisir. Mais pour les équations, qu'elles soient différentielles ou non, ne comptez pas sur moi.
Bon courage !