source: LMDZ4/branches/LMDZ4-dev-20091210/libf/dyn3d/fxyhyper.F @ 5444

Last change on this file since 5444 was 1220, checked in by lguez, 15 years ago

-- Replaced "integer*4" declarations by "integer", "real*8" by

"real(kind=8)" and "real*4" by "real". Note that these are the only
modifications in the files "radiation_AR4.F" and "sw_aeroAR4.F90".

-- Corrected the kind of arguments to "max" and "min".

-- Replaced "nH" edit descriptors, which is a deleted feature in

Fortran 95, by character strings.

-- "regr_lat_time_climoz" now allows the pressure coordinate in the

input file to be in descending order.

-- Replaced call to not standard function "float" by call to intrinsic

function "real".

-- Included file "radepsi.h" in "physiq" was not used. Removed it.

The following set of modifications is related to the management of time.

-- In "gcm", "leapfrog" and "sortvarc0", "day_ini" was defined as 1

plus number of days between the reference date "(annee_ref,
day_ref)" and the first day of the current simulation. Changed
definition: "(annee_ref, day_ini)" is the first day of the current
simulation. There is an accompanying modification for "day_end".

-- Corrected bug in call to "ioconf_startdate" in "gcm".

-- Added call to "ioconf_calendar" in "create_etat0_limit".

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
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.