source: LMDZ5/trunk/libf/dyn3dmem/fxyhyper.F @ 1892

Last change on this file since 1892 was 1632, checked in by Laurent Fairhead, 12 years ago

Import initial du répertoire dyn3dmem

Attention! ceci n'est qu'une version préliminaire du code "basse mémoire":
le code contenu dans ce répertoire est basé sur la r1320 et a donc besoin
d'être mis à jour par rapport à la dynamique parallèle d'aujourd'hui.
Ce code est toutefois mis à disposition pour circonvenir à des problèmes
de mémoire que certaines configurations du modèle pourraient rencontrer.
Dans l'état, il compile et tourne sur vargas et au CCRT


Initial import of dyn3dmem

Warning! this is just a preliminary version of the memory light code:
it is based on r1320 of the code and thus needs to be updated before
it can replace the present dyn3dpar code. It is nevertheless put at your
disposal to circumvent some memory problems some LMDZ configurations may
encounter. In its present state, it will compile and run on vargas and CCRT

File size: 4.1 KB
Line 
1!
2! $Header$
3!
4c
5c
6       SUBROUTINE fxyhyper ( yzoom, grossy, dzoomy,tauy  ,   
7     ,                       xzoom, grossx, dzoomx,taux  ,
8     , rlatu,yprimu,rlatv,yprimv,rlatu1,  yprimu1,  rlatu2,  yprimu2  ,
9     , rlonu,xprimu,rlonv,xprimv,rlonm025,xprimm025,rlonp025,xprimp025)
10
11       IMPLICIT NONE
12c
13c      Auteur :  P. Le Van .
14c
15c      d'apres  formulations de R. Sadourny .
16c
17c
18c     Ce spg calcule les latitudes( routine fyhyp ) et longitudes( fxhyp )
19c            par des  fonctions  a tangente hyperbolique .
20c
21c     Il y a 3 parametres ,en plus des coordonnees du centre du zoom (xzoom
22c                      et  yzoom )   : 
23c
24c     a) le grossissement du zoom  :  grossy  ( en y ) et grossx ( en x )
25c     b) l' extension     du zoom  :  dzoomy  ( en y ) et dzoomx ( en x )
26c     c) la raideur de la transition du zoom  :   taux et tauy   
27c
28c  N.B : Il vaut mieux avoir   :   grossx * dzoomx <  pi    ( radians )
29c ******
30c                  et              grossy * dzoomy <  pi/2  ( radians )
31c
32#include "dimensions.h"
33#include "paramet.h"
34
35
36c   .....  Arguments  ...
37c
38       REAL xzoom,yzoom,grossx,grossy,dzoomx,dzoomy,taux,tauy
39       REAL rlatu(jjp1), yprimu(jjp1),rlatv(jjm), yprimv(jjm),
40     , rlatu1(jjm), yprimu1(jjm), rlatu2(jjm), yprimu2(jjm)
41       REAL rlonu(iip1),xprimu(iip1),rlonv(iip1),xprimv(iip1),
42     , rlonm025(iip1),xprimm025(iip1), rlonp025(iip1),xprimp025(iip1)
43       REAL(KIND=8)  dxmin, dxmax , dymin, dymax
44
45c   ....   var. locales   .....
46c
47       INTEGER i,j
48c
49
50       CALL fyhyp ( yzoom, grossy, dzoomy,tauy  ,
51     ,  rlatu, yprimu,rlatv,yprimv,rlatu2,yprimu2,rlatu1,yprimu1 ,
52     ,  dymin,dymax                                               )
53
54       CALL fxhyp(xzoom,grossx,dzoomx,taux,rlonm025,xprimm025,rlonv,
55     , xprimv,rlonu,xprimu,rlonp025,xprimp025 , dxmin,dxmax         )
56
57
58        DO i = 1, iip1
59          IF(rlonp025(i).LT.rlonv(i))  THEN
60           WRITE(6,*) ' Attention !  rlonp025 < rlonv',i
61            STOP
62          ENDIF
63
64          IF(rlonv(i).LT.rlonm025(i))  THEN
65           WRITE(6,*) ' Attention !  rlonm025 > rlonv',i
66            STOP
67          ENDIF
68
69          IF(rlonp025(i).GT.rlonu(i))  THEN
70           WRITE(6,*) ' Attention !  rlonp025 > rlonu',i
71            STOP
72          ENDIF
73        ENDDO
74
75        WRITE(6,*) '  *** TEST DE COHERENCE  OK    POUR   FX **** '
76
77c
78       DO j = 1, jjm
79c
80       IF(rlatu1(j).LE.rlatu2(j))   THEN
81         WRITE(6,*)'Attention ! rlatu1 < rlatu2 ',rlatu1(j), rlatu2(j),j
82         STOP 13
83       ENDIF
84c
85       IF(rlatu2(j).LE.rlatu(j+1))  THEN
86        WRITE(6,*)'Attention ! rlatu2 < rlatup1 ',rlatu2(j),rlatu(j+1),j
87        STOP 14
88       ENDIF
89c
90       IF(rlatu(j).LE.rlatu1(j))    THEN
91        WRITE(6,*)' Attention ! rlatu < rlatu1 ',rlatu(j),rlatu1(j),j
92        STOP 15
93       ENDIF
94c
95       IF(rlatv(j).LE.rlatu2(j))    THEN
96        WRITE(6,*)' Attention ! rlatv < rlatu2 ',rlatv(j),rlatu2(j),j
97        STOP 16
98       ENDIF
99c
100       IF(rlatv(j).ge.rlatu1(j))    THEN
101        WRITE(6,*)' Attention ! rlatv > rlatu1 ',rlatv(j),rlatu1(j),j
102        STOP 17
103       ENDIF
104c
105       IF(rlatv(j).ge.rlatu(j))     THEN
106        WRITE(6,*) ' Attention ! rlatv > rlatu ',rlatv(j),rlatu(j),j
107        STOP 18
108       ENDIF
109c
110       ENDDO
111c
112       WRITE(6,*) '  *** TEST DE COHERENCE  OK    POUR   FY **** '
113c
114        WRITE(6,18)
115        WRITE(6,*) '  Latitudes  '
116        WRITE(6,*) ' *********** '
117        WRITE(6,18)
118        WRITE(6,3)  dymin, dymax
119        WRITE(6,*) ' Si cette derniere est trop lache , modifiez les par
120     ,ametres  grossism , tau , dzoom pour Y et repasser ! '
121c
122        WRITE(6,18)
123        WRITE(6,*) '  Longitudes  '
124        WRITE(6,*) ' ************ '
125        WRITE(6,18)
126        WRITE(6,3)  dxmin, dxmax
127        WRITE(6,*) ' Si cette derniere est trop lache , modifiez les par
128     ,ametres  grossism , tau , dzoom pour Y et repasser ! '
129        WRITE(6,18)
130c
1313      Format(1x, ' Au centre du zoom , la longueur de la maille est',
132     ,  ' d environ ',f8.2 ,' degres  ',
133     , ' alors que la maille en dehors de la zone du zoom est d environ
134     , ', f8.2,' degres ' )
13518      FORMAT(/)
136
137       RETURN
138       END
139
Note: See TracBrowser for help on using the repository browser.