6 SUBROUTINE sunpos (KYEAR, KMONTH, KDAY, PTIME, &
7 PLON, PLAT, PTSUN, PZENITH, PAZIMSOL)
74 INTEGER,
INTENT(IN) :: KYEAR
75 INTEGER,
INTENT(IN) :: KMONTH
76 INTEGER,
INTENT(IN) :: KDAY
77 REAL,
INTENT(IN) :: PTIME
78 REAL,
DIMENSION(:),
INTENT(IN) :: PLON
79 REAL,
DIMENSION(:),
INTENT(IN) :: PLAT
81 REAL,
DIMENSION(:),
INTENT(OUT) :: PZENITH
82 REAL,
DIMENSION(:),
INTENT(OUT) :: PAZIMSOL
83 REAL,
DIMENSION(:),
INTENT(OUT) :: PTSUN
90 REAL,
DIMENSION(SIZE(PLON)) :: ZTUT ,&
98 INTEGER,
DIMENSION(0:11) :: IBIS, INOBIS
108 INTEGER :: JI, JJ, INKPROMA
109 INTEGER :: IINDX1, IINDX2
110 REAL(KIND=JPRB) :: ZHOOK_HANDLE, ZHOOK_HANDLE_OMP
119 zut = mod( 24.0+mod(ptime/3600.,24.0),24.0 )
121 inobis(:) = (/0,31,59,90,120,151,181,212,243,273,304,334/)
122 ibis(0:1) = inobis(0:1)
124 ibis(ji) = inobis(ji)+1
126 IF( mod(kyear,4).EQ.0 .AND. (mod(kyear,100).NE.0 .OR. mod(kyear,400).EQ.
THEN 127 zdate = float(kday + ibis(kmonth-1)) - 1 + ptime/
xday 128 zad = 2.0*
xpi*zdate/366.0
130 zdate = float(kday + inobis(kmonth-1)) - 1 + ptime/
xday 131 zad = 2.0*
xpi*zdate/365.0
134 za1 = (1.00554*zdate- 6.28306)*(
xpi/180.0)
135 za2 = (1.93946*zdate+23.35089)*(
xpi/180.0)
136 ztsider = (7.67825*sin(za1)+10.09176*sin(za2)) / 60.0
143 zdecsol = 0.006918-0.399912*cos(zad) +0.070257*sin(zad) &
144 -0.006758*cos(2.*zad)+0.000907*sin(2.*zad) &
145 -0.002697*cos(3.*zad)+0.00148 *sin(3.*zad)
146 zsindel = sin(zdecsol)
147 zcosdel = cos(zdecsol)
160 zlat(jj) = plat(jj)*(
xpi/180.)
161 zlon(jj) = plon(jj)*(
xpi/180.)
168 ztut(jj) = zut - ztsider + zlon(jj)*((180./
xpi)/15.0)
170 ptsun(jj) = mod(ptime -ztsider*3600. +plon(jj)*240.,
xday)
176 zsolang(jj) = (ztut(jj)-12.0)*15.0*(
xpi/180.)
178 zcoszen(jj) = sin(zlat(jj))*zsindel + &
179 cos(zlat(jj))*zcosdel*cos(zsolang(jj))
181 zsinzen(jj) = sqrt( 1. - zcoszen(jj)*zcoszen(jj) )
188 pzenith(jj) = acos(zcoszen(jj))
195 IF (zsinzen(jj)/=0.)
THEN 197 zsinazi(jj) = - zcosdel * sin(zsolang(jj)) / zsinzen(jj)
198 zcosazi(jj) = (-sin(zlat(jj))*zcosdel*cos(zsolang(jj)) &
199 +cos(zlat(jj))*zsindel &
201 pazimsol(jj) = atan2(zsinazi(jj),zcosazi(jj))
subroutine sunpos(KYEAR, KMONTH, KDAY, PTIME, PLON, PLAT, PTSUN, PZENITH, PAZIMSOL)