/[lmdze]/trunk/dyn3d/fxyhyper.f
ViewVC logotype

Diff of /trunk/dyn3d/fxyhyper.f

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/dyn3d/fxyhyper.f90 revision 76 by guez, Fri Nov 15 18:45:49 2013 UTC trunk/dyn3d/fxyhyper.f revision 118 by guez, Thu Dec 18 17:30:24 2014 UTC
# Line 4  module fxyhyper_m Line 4  module fxyhyper_m
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
56         IF(rlonp025(i).LT.rlonv(i)) THEN         IF (rlonp025(i).LT.rlonv(i)) THEN
57            print *, ' Attention ! rlonp025 < rlonv', i            print *, ' Attention ! rlonp025 < rlonv', i
58            STOP 1            STOP 1
59         ENDIF         ENDIF
60    
61         IF(rlonv(i).LT.rlonm025(i)) THEN         IF (rlonv(i).LT.rlonm025(i)) THEN
62            print *, ' Attention ! rlonm025 > rlonv', i            print *, ' Attention ! rlonm025 > rlonv', i
63            STOP 1            STOP 1
64         ENDIF         ENDIF
65    
66         IF(rlonp025(i).GT.rlonu(i)) THEN         IF (rlonp025(i).GT.rlonu(i)) THEN
67            print *, ' Attention ! rlonp025 > rlonu', i            print *, ' Attention ! rlonp025 > rlonu', i
68            STOP 1            STOP 1
69         ENDIF         ENDIF
# Line 68  contains Line 72  contains
72      print *, 'Test de coherence ok pour fx'      print *, 'Test de coherence ok pour fx'
73    
74      DO j = 1, jjm      DO j = 1, jjm
75         IF(rlatu1(j).LE.rlatu2(j)) THEN         IF (rlatu1(j).LE.rlatu2(j)) THEN
76            print *, 'Attention ! rlatu1 < rlatu2 ', rlatu1(j), rlatu2(j), j            print *, 'Attention ! rlatu1 < rlatu2 ', rlatu1(j), rlatu2(j), j
77            STOP 13            STOP 13
78         ENDIF         ENDIF
79    
80         IF(rlatu2(j).LE.rlatu(j+1)) THEN         IF (rlatu2(j).LE.rlatu(j+1)) THEN
81            print *, 'Attention ! rlatu2 < rlatup1 ', rlatu2(j), rlatu(j+1), j            print *, 'Attention ! rlatu2 < rlatup1 ', rlatu2(j), rlatu(j+1), j
82            STOP 14            STOP 14
83         ENDIF         ENDIF
84    
85         IF(rlatu(j).LE.rlatu1(j)) THEN         IF (rlatu(j).LE.rlatu1(j)) THEN
86            print *, ' Attention ! rlatu < rlatu1 ', rlatu(j), rlatu1(j), j            print *, ' Attention ! rlatu < rlatu1 ', rlatu(j), rlatu1(j), j
87            STOP 15            STOP 15
88         ENDIF         ENDIF
89    
90         IF(rlatv(j).LE.rlatu2(j)) THEN         IF (rlatv(j).LE.rlatu2(j)) THEN
91            print *, ' Attention ! rlatv < rlatu2 ', rlatv(j), rlatu2(j), j            print *, ' Attention ! rlatv < rlatu2 ', rlatv(j), rlatu2(j), j
92            STOP 16            STOP 16
93         ENDIF         ENDIF
94    
95         IF(rlatv(j).ge.rlatu1(j)) THEN         IF (rlatv(j).ge.rlatu1(j)) THEN
96            print *, ' Attention ! rlatv > rlatu1 ', rlatv(j), rlatu1(j), j            print *, ' Attention ! rlatv > rlatu1 ', rlatv(j), rlatu1(j), j
97            STOP 17            STOP 17
98         ENDIF         ENDIF
99    
100         IF(rlatv(j).ge.rlatu(j)) THEN         IF (rlatv(j).ge.rlatu(j)) THEN
101            print *, ' Attention ! rlatv > rlatu ', rlatv(j), rlatu(j), j            print *, ' Attention ! rlatv > rlatu ', rlatv(j), rlatu(j), j
102            STOP 18            STOP 18
103         ENDIF         ENDIF

Legend:
Removed from v.76  
changed lines
  Added in v.118

  ViewVC Help
Powered by ViewVC 1.1.21