4 |
|
|
5 |
contains |
contains |
6 |
|
|
7 |
SUBROUTINE fxyhyper(yzoom, grossy, dzoomy, tauy, xzoom, grossx, dzoomx, & |
SUBROUTINE fxyhyper(rlatu, yprimu, rlatv, yprimv, rlatu1, yprimu1, rlatu2, & |
8 |
taux, rlatu, yprimu, rlatv, yprimv, rlatu1, yprimu1, rlatu2, yprimu2, & |
yprimu2, rlonu, xprimu, rlonv, xprimv, rlonm025, xprimm025, rlonp025, & |
9 |
rlonu, xprimu, rlonv, xprimv, rlonm025, xprimm025, rlonp025, xprimp025) |
xprimp025) |
10 |
|
|
11 |
! From dyn3d/fxyhyper.F, version 1.1.1.1 2004/05/19 12:53:06 |
! From dyn3d/fxyhyper.F, version 1.1.1.1, 2004/05/19 12:53:06 |
12 |
|
|
13 |
USE dimens_m, ONLY: jjm |
USE dimens_m, ONLY: jjm |
14 |
USE paramet_m, ONLY: iip1, jjp1 |
use fxhyp_m, only: fxhyp |
15 |
|
use fyhyp_m, only: fyhyp |
16 |
|
USE paramet_m, ONLY: iip1 |
17 |
|
use serre, only: clat, grossismy, dzoomy, tauy, clon, grossismx, dzoomx, & |
18 |
|
taux |
19 |
|
|
20 |
! Auteur : P. Le Van d'après formulations de R. Sadourny |
! Auteur : P. Le Van d'après les formulations de R. Sadourny |
21 |
|
|
22 |
|
! f(x, y) à dérivée tangente hyperbolique |
23 |
|
|
24 |
! Cette procédure calcule les latitudes (routine fyhyp) et |
! Cette procédure calcule les latitudes (routine fyhyp) et |
25 |
! longitudes (fxhyp) par des fonctions à tangente hyperbolique. |
! longitudes (fxhyp) par des fonctions à tangente hyperbolique. |
26 |
|
|
27 |
! Il y a 3 paramètres, en plus des coordonnées du centre du zoom (xzoom |
! Il y a trois paramètres, en plus des coordonnées du centre du |
28 |
! et yzoom) : |
! zoom (clon et clat) : |
29 |
|
|
30 |
! a) le grossissement du zoom : grossy (en y) et grossx (en x) |
! a) le grossissement du zoom : grossismy (en y) et grossismx (en x) |
31 |
! b) l' extension du zoom : dzoomy (en y) et dzoomx (en x) |
! b) l' extension du zoom : dzoomy (en y) et dzoomx (en x) |
32 |
! c) la raideur de la transition du zoom : taux et tauy |
! c) la raideur de la transition du zoom : taux et tauy |
33 |
|
|
34 |
! N. B. : il vaut mieux avoir : grossx * dzoomx < pi (radians) et |
! Nota bene : il vaut mieux avoir : grossismx * dzoomx < pi (radians) |
35 |
! grossy * dzoomy < pi/2 (radians) |
! et grossismy * dzoomy < pi/2 (radians) |
|
|
|
|
! Arguments |
|
36 |
|
|
37 |
REAL xzoom, yzoom, grossx, grossy, dzoomx, dzoomy, taux, tauy |
REAL rlatu(:), yprimu(:) ! (jjm + 1) |
38 |
REAL rlatu(jjp1), yprimu(jjp1), rlatv(jjm), yprimv(jjm) |
real rlatv(:), yprimv(:) ! (jjm) |
39 |
real rlatu1(jjm), yprimu1(jjm), rlatu2(jjm), yprimu2(jjm) |
real rlatu1(:), yprimu1(:), rlatu2(:), yprimu2(:) ! (jjm) |
40 |
REAL rlonu(iip1), xprimu(iip1), rlonv(iip1), xprimv(iip1) |
REAL rlonu(:), xprimu(:), rlonv(:), xprimv(:) ! (iim + 1) |
41 |
REAL rlonm025(iip1), xprimm025(iip1), rlonp025(iip1), xprimp025(iip1) |
REAL rlonm025(:), xprimm025(:), rlonp025(:), xprimp025(:) ! (iim + 1) |
|
double precision dxmin, dxmax, dymin, dymax |
|
42 |
|
|
43 |
! Variables locales |
! Local: |
44 |
|
|
45 |
|
double precision dxmin, dxmax, dymin, dymax |
46 |
INTEGER i, j |
INTEGER i, j |
47 |
|
|
48 |
!---------------------------------------------------------- |
!---------------------------------------------------------- |
49 |
|
|
50 |
CALL fyhyp(yzoom, grossy, dzoomy, tauy, rlatu, yprimu, rlatv, yprimv, & |
CALL fyhyp(clat, grossismy, dzoomy, tauy, rlatu, yprimu, rlatv, yprimv, & |
51 |
rlatu2, yprimu2, rlatu1, yprimu1, dymin, dymax) |
rlatu2, yprimu2, rlatu1, yprimu1, dymin, dymax) |
52 |
CALL fxhyp(xzoom, grossx, dzoomx, taux, rlonm025, xprimm025, rlonv, & |
CALL fxhyp(clon, grossismx, dzoomx, taux, rlonm025, xprimm025, rlonv, & |
53 |
xprimv, rlonu, xprimu, rlonp025, xprimp025, dxmin, dxmax) |
xprimv, rlonu, xprimu, rlonp025, xprimp025, dxmin, dxmax) |
54 |
|
|
55 |
DO i = 1, iip1 |
DO i = 1, iip1 |