LMDZ
suphel.F90
Go to the documentation of this file.
1 
2 ! $Id$
3 
4 SUBROUTINE suphel
5 
6  include "YOMCST.h"
7  include "YOETHF.h"
8  ! IM cf. JLD
9  LOGICAL firstcall
10  SAVE firstcall
11  !$OMP THREADPRIVATE(firstcall)
12  DATA firstcall/.true./
13 
14  IF (firstcall) THEN
15  print *, 'suphel initialise les constantes du GCM'
16  firstcall = .false.
17  ELSE
18  print *, 'suphel DEJA APPELE '
19  RETURN
20  END IF
21  ! -----------------------------------------------------------------
22 
23  ! * 1. DEFINE FUNDAMENTAL CONSTANTS.
24  ! -----------------------------
25 
26  WRITE (unit=6, fmt='(''0*** Constants of the ICM ***'')')
27  rpi = 2.*asin(1.)
28  rclum = 299792458.
29  rhpla = 6.6260755e-34
30  rkbol = 1.380658e-23
31  rnavo = 6.0221367e+23
32  WRITE (unit=6, fmt='('' *** Fundamental constants ***'')')
33  WRITE (unit=6, fmt='('' PI = '',E13.7,'' -'')') rpi
34  WRITE (unit=6, fmt='('' c = '',E13.7,''m s-1'')') rclum
35  WRITE (unit=6, fmt='('' h = '',E13.7,''J s'')') rhpla
36  WRITE (unit=6, fmt='('' K = '',E13.7,''J K-1'')') rkbol
37  WRITE (unit=6, fmt='('' N = '',E13.7,''mol-1'')') rnavo
38 
39  ! ----------------------------------------------------------------
40 
41  ! * 2. DEFINE ASTRONOMICAL CONSTANTS.
42  ! ------------------------------
43 
44  rday = 86400.
45  rea = 149597870000.
46  repsm = 0.409093
47 
48  rsiyea = 365.25*rday*2.*rpi/6.283076
49  rsiday = rday/(1.+rday/rsiyea)
50  romega = 2.*rpi/rsiday
51 
52  ! exp1 R_ecc = 0.05
53  ! exp1 R_peri = 102.04
54  ! exp1 R_incl = 22.5
55  ! exp1 print*, 'Parametres orbitaux modifies'
56  ! ref R_ecc = 0.016724
57  ! ref R_peri = 102.04
58  ! ref R_incl = 23.5
59 
60  ! IM 161002 : pour avoir les ctes AMIP II
61  ! IM 161002 R_ecc = 0.016724
62  ! IM 161002 R_peri = 102.04
63  ! IM 161002 R_incl = 23.5
64  ! IM on mets R_ecc, R_peri, R_incl dans conf_phys.F90
65  ! R_ecc = 0.016715
66  ! R_peri = 102.7
67  ! R_incl = 23.441
68 
69  WRITE (unit=6, fmt='('' *** Astronomical constants ***'')')
70  WRITE (unit=6, fmt='('' day = '',E13.7,'' s'')') rday
71  WRITE (unit=6, fmt='('' half g. axis = '',E13.7,'' m'')') rea
72  WRITE (unit=6, fmt='('' mean anomaly = '',E13.7,'' -'')') repsm
73  WRITE (unit=6, fmt='('' sideral year = '',E13.7,'' s'')') rsiyea
74  WRITE (unit=6, fmt='('' sideral day = '',E13.7,'' s'')') rsiday
75  WRITE (unit=6, fmt='('' omega = '',E13.7,'' s-1'')') romega
76  ! write(unit=6,fmt='('' excentricite = '',e13.7,''-'')')R_ecc
77  ! write(unit=6,fmt='('' equinoxe = '',e13.7,''-'')')R_peri
78  ! write(unit=6,fmt='('' inclinaison = '',e13.7,''-'')')R_incl
79 
80  ! ------------------------------------------------------------------
81 
82  ! * 3. DEFINE GEOIDE.
83  ! --------------
84 
85  rg = 9.80665
86  ra = 6371229.
87  r1sa = sngl(1.d0/dble(ra))
88  WRITE (unit=6, fmt='('' *** Geoide ***'')')
89  WRITE (unit=6, fmt='('' Gravity = '',E13.7,'' m s-2'')') rg
90  WRITE (unit=6, fmt='('' Earth radius = '',E13.7,'' m'')') ra
91  WRITE (unit=6, fmt='('' Inverse E.R. = '',E13.7,'' m'')') r1sa
92 
93  ! -----------------------------------------------------------------
94 
95  ! * 4. DEFINE RADIATION CONSTANTS.
96  ! ---------------------------
97 
98  ! z.x.li RSIGMA=2. * RPI**5 * RKBOL**4 /(15.* RCLUM**2 * RHPLA**3)
99  rsigma = 2.*rpi**5*(rkbol/rhpla)**3*rkbol/rclum/rclum/15.
100  ! IM init. dans conf_phys.F90 RI0=1365.
101  WRITE (unit=6, fmt='('' *** Radiation ***'')')
102  WRITE (unit=6, fmt='('' Stefan-Bol. = '',E13.7,'' W m-2 K-4'' &
103  & &
104  & )') rsigma
105  ! IM init. dans conf_phys.F90 WRITE(UNIT=6,FMT='('' Solar const. =
106  ! '',E13.7,'' W m-2'')')
107  ! IM init. dans conf_phys.F90 S RI0
108 
109  ! -----------------------------------------------------------------
110 
111  ! * 5. DEFINE THERMODYNAMIC CONSTANTS, GAS PHASE.
112  ! ------------------------------------------
113 
114  r = rnavo*rkbol
115  rmd = 28.9644
116  rmo3 = 47.9942
117  rmv = 18.0153
118  rd = 1000.*r/rmd
119  rv = 1000.*r/rmv
120  rcpd = 3.5*rd
121  rcvd = rcpd - rd
122  rcpv = 4.*rv
123  rcvv = rcpv - rv
124  rkappa = rd/rcpd
125  retv = rv/rd - 1.
126  WRITE (unit=6, fmt='('' *** Thermodynamic, gas ***'')')
127  WRITE (unit=6, fmt='('' Perfect gas = '',e13.7)') r
128  WRITE (unit=6, fmt='('' Dry air mass = '',e13.7)') rmd
129  WRITE (unit=6, fmt='('' Ozone mass = '',e13.7)') rmo3
130  WRITE (unit=6, fmt='('' Vapour mass = '',e13.7)') rmv
131  WRITE (unit=6, fmt='('' Dry air cst. = '',e13.7)') rd
132  WRITE (unit=6, fmt='('' Vapour cst. = '',e13.7)') rv
133  WRITE (unit=6, fmt='('' Cpd = '',e13.7)') rcpd
134  WRITE (unit=6, fmt='('' Cvd = '',e13.7)') rcvd
135  WRITE (unit=6, fmt='('' Cpv = '',e13.7)') rcpv
136  WRITE (unit=6, fmt='('' Cvv = '',e13.7)') rcvv
137  WRITE (unit=6, fmt='('' Rd/Cpd = '',e13.7)') rkappa
138  WRITE (unit=6, fmt='('' Rv/Rd-1 = '',e13.7)') retv
139 
140  ! ----------------------------------------------------------------
141 
142  ! * 6. DEFINE THERMODYNAMIC CONSTANTS, LIQUID PHASE.
143  ! ---------------------------------------------
144 
145  rcw = rcpv
146  WRITE (unit=6, fmt='('' *** Thermodynamic, liquid ***'')')
147  WRITE (unit=6, fmt='('' Cw = '',E13.7)') rcw
148 
149  ! ----------------------------------------------------------------
150 
151  ! * 7. DEFINE THERMODYNAMIC CONSTANTS, SOLID PHASE.
152  ! --------------------------------------------
153 
154  rcs = rcpv
155  WRITE (unit=6, fmt='('' *** thermodynamic, solid ***'')')
156  WRITE (unit=6, fmt='('' Cs = '',E13.7)') rcs
157 
158  ! ----------------------------------------------------------------
159 
160  ! * 8. DEFINE THERMODYNAMIC CONSTANTS, TRANSITION OF PHASE.
161  ! ----------------------------------------------------
162 
163  rtt = 273.16
164  rlvtt = 2.5008e+6
165  rlstt = 2.8345e+6
166  rlmlt = rlstt - rlvtt
167  ratm = 100000.
168  WRITE (unit=6, fmt='('' *** Thermodynamic, trans. ***'')')
169  WRITE (unit=6, fmt='('' Fusion point = '',E13.7)') rtt
170  WRITE (unit=6, fmt='('' RLvTt = '',E13.7)') rlvtt
171  WRITE (unit=6, fmt='('' RLsTt = '',E13.7)') rlstt
172  WRITE (unit=6, fmt='('' RLMlt = '',E13.7)') rlmlt
173  WRITE (unit=6, fmt='('' Normal press. = '',E13.7)') ratm
174  WRITE (unit=6, fmt='('' Latent heat : '')')
175 
176  ! ----------------------------------------------------------------
177 
178  ! * 9. SATURATED VAPOUR PRESSURE.
179  ! --------------------------
180 
181  restt = 611.14
182  rgamw = (rcw-rcpv)/rv
183  rbetw = rlvtt/rv + rgamw*rtt
184  ralpw = log(restt) + rbetw/rtt + rgamw*log(rtt)
185  rgams = (rcs-rcpv)/rv
186  rbets = rlstt/rv + rgams*rtt
187  ralps = log(restt) + rbets/rtt + rgams*log(rtt)
188  rgamd = rgams - rgamw
189  rbetd = rbets - rbetw
190  ralpd = ralps - ralpw
191 
192  ! ------------------------------------------------------------------
193 
194  ! * 10. CONSTANTS FOR THERMODYNAMICAL FUNCTIONS.
195  ! ----------------------------------------
196 
197  rvtmp2 = rcpv/rcpd - 1.
198  rhoh2o = ratm/100.
199  r2es = restt*rd/rv
200  r3les = 17.269
201  r3ies = 21.875
202  r4les = 35.86
203  r4ies = 7.66
204  r5les = r3les*(rtt-r4les)
205  r5ies = r3ies*(rtt-r4ies)
206 
207  ! ------------------------------------------------------------------
208 
209  ! * 10. CONSTANTS FOR METHANE OXIDATION AND PHOTOLYSIS.
210  ! -----------------------------------------------
211 
212  CALL sumethox()
213 
214  RETURN
215 END SUBROUTINE suphel
!$Id mode_top_bound COMMON comconstr r
Definition: comconst.h:7
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL false
Definition: calcul_STDlev.h:26
subroutine suphel
Definition: suphel.F90:5
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL true
subroutine sumethox
Definition: sumethox.F90:2
!$Header!integer nvarmx s s unit
Definition: gradsdef.h:20
real rg
Definition: comcstphy.h:1