18 |
! 1., taux=0., clon=0.) est à - 180 degrés. |
! 1., taux=0., clon=0.) est à - 180 degrés. |
19 |
|
|
20 |
USE dimens_m, ONLY: iim |
USE dimens_m, ONLY: iim |
21 |
use fxhyp_loop_ik_m, only: fxhyp_loop_ik, nmax |
use dynetat0_m, only: clon, grossismx, dzoomx, taux |
22 |
|
use invert_zoom_x_m, only: invert_zoom_x, nmax |
23 |
use nr_util, only: pi, pi_d, twopi, twopi_d, arth |
use nr_util, only: pi, pi_d, twopi, twopi_d, arth |
24 |
use principal_cshift_m, only: principal_cshift |
use principal_cshift_m, only: principal_cshift |
|
use serre, only: clon, grossismx, dzoomx, taux |
|
25 |
|
|
26 |
REAL, intent(out):: xprimm025(:), rlonv(:), xprimv(:) ! (iim + 1) |
REAL, intent(out):: xprimm025(:), rlonv(:), xprimv(:) ! (iim + 1) |
27 |
real, intent(out):: rlonu(:), xprimu(:), xprimp025(:) ! (iim + 1) |
real, intent(out):: rlonu(:), xprimu(:), xprimp025(:) ! (iim + 1) |
33 |
DOUBLE PRECISION xtild(0:2 * nmax) |
DOUBLE PRECISION xtild(0:2 * nmax) |
34 |
DOUBLE PRECISION fhyp(nmax:2 * nmax), ffdx, beta, Xprimt(0:2 * nmax) |
DOUBLE PRECISION fhyp(nmax:2 * nmax), ffdx, beta, Xprimt(0:2 * nmax) |
35 |
DOUBLE PRECISION Xf(0:2 * nmax), xxpr(2 * nmax) |
DOUBLE PRECISION Xf(0:2 * nmax), xxpr(2 * nmax) |
36 |
DOUBLE PRECISION xzoom, fa, fb |
DOUBLE PRECISION fa, fb |
37 |
INTEGER i, is2 |
INTEGER i, is2 |
38 |
DOUBLE PRECISION xmoy, fxm |
DOUBLE PRECISION xmoy, fxm |
39 |
|
|
41 |
|
|
42 |
print *, "Call sequence information: fxhyp" |
print *, "Call sequence information: fxhyp" |
43 |
|
|
|
xzoom = clon * pi_d / 180d0 |
|
|
|
|
44 |
test_grossismx: if (grossismx == 1.) then |
test_grossismx: if (grossismx == 1.) then |
45 |
step = twopi / iim |
step = twopi / iim |
46 |
|
|
49 |
xprimv(:iim) = step |
xprimv(:iim) = step |
50 |
xprimu(:iim) = step |
xprimu(:iim) = step |
51 |
|
|
52 |
rlonv(:iim) = arth(- pi + clon * pi / 180., step, iim) |
rlonv(:iim) = arth(- pi + clon, step, iim) |
53 |
rlonm025(:iim) = rlonv(:iim) - 0.25 * step |
rlonm025(:iim) = rlonv(:iim) - 0.25 * step |
54 |
rlonp025(:iim) = rlonv(:iim) + 0.25 * step |
rlonp025(:iim) = rlonv(:iim) + 0.25 * step |
55 |
rlonu(:iim) = rlonv(:iim) + 0.5 * step |
rlonu(:iim) = rlonv(:iim) + 0.5 * step |
56 |
else |
else test_grossismx |
57 |
dzoom = dzoomx * twopi_d |
dzoom = dzoomx * twopi_d |
58 |
xtild = arth(- pi_d, pi_d / nmax, 2 * nmax + 1) |
xtild = arth(- pi_d, pi_d / nmax, 2 * nmax + 1) |
59 |
|
|
157 |
|
|
158 |
Xf(2 * nmax) = pi_d |
Xf(2 * nmax) = pi_d |
159 |
|
|
160 |
call fxhyp_loop_ik(xf, xtild, Xprimt, xzoom, rlonm025(:iim), & |
call invert_zoom_x(xf, xtild, Xprimt, rlonm025(:iim), xprimm025(:iim), & |
161 |
xprimm025(:iim), xuv = - 0.25d0) |
xuv = - 0.25d0) |
162 |
call fxhyp_loop_ik(xf, xtild, Xprimt, xzoom, rlonv(:iim), & |
call invert_zoom_x(xf, xtild, Xprimt, rlonv(:iim), xprimv(:iim), & |
163 |
xprimv(:iim), xuv = 0d0) |
xuv = 0d0) |
164 |
call fxhyp_loop_ik(xf, xtild, Xprimt, xzoom, rlonu(:iim), & |
call invert_zoom_x(xf, xtild, Xprimt, rlonu(:iim), xprimu(:iim), & |
165 |
xprimu(:iim), xuv = 0.5d0) |
xuv = 0.5d0) |
166 |
call fxhyp_loop_ik(xf, xtild, Xprimt, xzoom, rlonp025(:iim), & |
call invert_zoom_x(xf, xtild, Xprimt, rlonp025(:iim), xprimp025(:iim), & |
167 |
xprimp025(:iim), xuv = 0.25d0) |
xuv = 0.25d0) |
168 |
end if test_grossismx |
end if test_grossismx |
169 |
|
|
170 |
is2 = 0 |
is2 = 0 |
205 |
print *, "Minimum longitude step:", MINval(d_rlonv) * 180. / pi, "degrees" |
print *, "Minimum longitude step:", MINval(d_rlonv) * 180. / pi, "degrees" |
206 |
print *, "Maximum longitude step:", MAXval(d_rlonv) * 180. / pi, "degrees" |
print *, "Maximum longitude step:", MAXval(d_rlonv) * 180. / pi, "degrees" |
207 |
|
|
208 |
|
! Check that rlonm025 <= rlonv <= rlonp025 <= rlonu: |
209 |
DO i = 1, iim + 1 |
DO i = 1, iim + 1 |
210 |
IF (rlonp025(i) < rlonv(i)) THEN |
IF (rlonp025(i) < rlonv(i)) THEN |
211 |
print *, 'rlonp025(', i, ') = ', rlonp025(i) |
print *, 'rlonp025(', i, ') = ', rlonp025(i) |