Bonjour à tous,
Je suis en train de me casser la tête depuis plusieurs heures à essayer d'écrire une formule en Fortran 90.
Voici ce que je dois faire :Pour cela je pars d'un programme déjà conçu et qui fonctionne :Convertir le calcul du jour julien en une fonction (au sens Fortran 90) recevant jour, mois
et année comme arguments et retourant JD (réel).
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 program ToJD implicit none integer::d,m,y real::JD,B,A d=20 m=2 y=2012 IF(m<=2) THEN y=y-1 m=m+12 ENDIF IF(y>1582) THEN A=y/100 B=2-A+(A/4) ELSE B=0 ENDIF JD=INT(365.25*(y+4716))+INT(30.6001*(m+1))+d+B-1524.5 print *,JD end program
Ma première idée (c'est la première formule que j'écris d'ailleurs) :
Cependant j'ai compris que les variables de la fonction ne peuvent être impliqués dans le "calcul" (ex. y=y-1)
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 real function JD(d,m,y) implicit none integer,intent(in)::d,m,y real::B,A IF(m<=2) THEN y=y-1 m=m+12 ENDIF IF(y>1582) THEN A=y/100 B=2-A+(A/4) ELSE B=0 ENDIF JD=INT(365.25*(y+4716))+INT(30.6001*(m+1))+d+B-1524.5 end function
Je suppose que pour l'algorithme il faut utiliser des nouvelles données mais alors je ne comprends pas bien comment ça peut affecter la fonction et ses variables ?
Je sais pas du tout ce que ça vaut le dernier paragraphe ?! Il est sûrement faux :-/
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 real function JD(d,m,y) implicit none integer,intent(in)::d,m,y real::B,A,o,p,q IF(p<=2) THEN q=q-1 p=p+12 ENDIF IF(q>1582) THEN A=q/100 B=2-A+(A/4) ELSE B=0 ENDIF o=d p=m q=y JD=INT(365.25*(q+4716))+INT(30.6001*(p+1))+o+B-1524.5 end function
Au passage est-ce vous pourriez me donner un petit programme qui utilise la fonction en question car j'ai pas encore appris ça mais c'est super utile pour savoir si la fonction fonctionne correctement
Merci d'avance !
Partager