LMDZ
sucst.F90
Go to the documentation of this file.
1 SUBROUTINE sucst(KULOUT,KDAT,KSSS,KPRINTLEV)
2 
3 !**** *SUCST * - Routine to initialize the constants of the model.
4 
5 ! Purpose.
6 ! --------
7 ! Initialize and print the common YOMCST + initialize
8 ! date and time of YOMRIP.
9 
10 !** Interface.
11 ! ----------
12 ! *CALL* *SUCST (..)
13 
14 ! Explicit arguments :
15 ! --------------------
16 
17 ! KULOUT - logical unit for the output
18 ! KDAT - date in the form AAAAMMDD
19 ! KSSS - number of seconds in the day
20 ! KPRINTLEV - printing level
21 
22 ! Implicit arguments :
23 ! --------------------
24 ! COMMON YOMCST
25 ! COMMON YOMRIP
26 
27 ! Method.
28 ! -------
29 ! See documentation
30 
31 ! Externals.
32 ! ----------
33 
34 ! Reference.
35 ! ----------
36 ! ECMWF Research Department documentation of the IFS
37 
38 ! Author.
39 ! -------
40 ! Mats Hamrud and Philippe Courtier *ECMWF*
41 
42 ! Modifications.
43 ! --------------
44 ! Original : 87-10-15
45 ! Additions : 90-07-30 (J.-F. Geleyn)
46 ! 91-11-15 (M. Deque)
47 ! 96-08-12 M.Hamrud - Reduce printing
48 ! M.Hamrud 01-Oct-2003 CY28 Cleaning
49 ! ------------------------------------------------------------------
50 
51 USE parkind1 ,ONLY : jpim ,jprb
52 USE yomhook ,ONLY : lhook, dr_hook
53 
54 USE yomcst , ONLY : rpi ,rclum ,rhpla ,rkbol ,&
55  & rnavo ,rday ,rea ,repsm ,rsiyea ,&
56  & rsiday ,romega ,ra ,rg ,r1sa ,&
57  & rsigma ,ri0 ,r ,rmd ,rmv ,&
58  & rmo3 ,rd ,rv ,rcpd ,rcpv ,&
59  & rmco2 ,rmch4 ,rmn2o ,rmco ,rmhcho ,&
60  & rmso2 ,rmno2 ,rmsf6 ,rmra ,&
61  & rcvd ,rcvv ,rkappa ,retv ,rcw ,&
62  & rcs ,rlvtt ,rlstt ,rlvzer ,rlszer ,&
63  & rlmlt ,rtt ,ratm ,rdt ,restt ,&
64  & ralpw ,rbetw ,rgamw ,ralps ,rbets ,&
65  & rgams ,ralpd ,rbetd ,rgamd
66 USE yomrip , ONLY : rtimst ,rtimtr
67 
68 IMPLICIT NONE
69 
70 INTEGER(KIND=JPIM),INTENT(IN) :: KULOUT
71 INTEGER(KIND=JPIM),INTENT(IN) :: KDAT
72 INTEGER(KIND=JPIM),INTENT(IN) :: KSSS
73 INTEGER(KIND=JPIM),INTENT(IN) :: KPRINTLEV
74 INTEGER(KIND=JPIM) :: IA, ID, IDAT, IM, ISSS, J
75 
76 REAL(KIND=JPRB) :: ZDE, ZET, ZJU, ZRS, ZRSREL, ZTETA, ZTI
77 REAL(KIND=JPRB) :: ZHOOK_HANDLE
78 
79 #include "fctast.h"
80 #include "fcttrm.h"
81 #include "fcttim.h"
82 ! -----------------------------------------------------------------
83 
84 !* 1. DEFINE FUNDAMENTAL CONSTANTS.
85 ! -----------------------------
86 
87 print*,'DANS SUCST CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
88 IF (lhook) CALL dr_hook('SUCST',0,zhook_handle)
89 rpi=2.0_jprb*asin(1.0_jprb)
90 rclum=299792458._jprb
91 rhpla=6.6260755e-34_jprb
92 rkbol=1.380658e-23_jprb
93 rnavo=6.0221367e+23_jprb
94 
95 ! ------------------------------------------------------------------
96 
97 !* 2. DEFINE ASTRONOMICAL CONSTANTS.
98 ! ------------------------------
99 
100 rday=86400._jprb
101 rea=149597870000._jprb
102 repsm=0.409093_jprb
103 
104 rsiyea=365.25_jprb*rday*2.0_jprb*rpi/6.283076_jprb
105 rsiday=rday/(1.0_jprb+rday/rsiyea)
106 romega=2.0_jprb*rpi/rsiday
107 
108 idat=kdat
109 isss=ksss
110 id=ndd(idat)
111 im=nmm(idat)
112 ia=nccaa(idat)
113 zju=rjudat(ia,im,id)
114 zti=rtime(ia,im,id,isss)
115 rtimst=zti
116 rtimtr=zti
117 zteta=rteta(zti)
118 zrs=rrs(zteta)
119 zde=rds(zteta)
120 zet=ret(zteta)
121 zrsrel=zrs/rea
122 
123 ! ------------------------------------------------------------------
124 
125 !* 3. DEFINE GEOIDE.
126 ! --------------
127 
128 rg=9.80665_jprb
129 ra=6371229._jprb
130 r1sa=REAL(1.0_JPRB/REAL(RA,KIND(1.0_JPRB)),KIND(r1sa))
131 
132 ! ------------------------------------------------------------------
133 
134 !* 4. DEFINE RADIATION CONSTANTS.
135 ! ---------------------------
136 
137 rsigma=2.0_jprb * rpi**5 * rkbol**4 /(15._jprb* rclum**2 * rhpla**3)
138 ri0=1370._jprb
139 
140 ! ------------------------------------------------------------------
141 
142 !* 5. DEFINE THERMODYNAMIC CONSTANTS, GAS PHASE.
143 ! ------------------------------------------
144 
145 r=rnavo*rkbol
146 rmd=28.9644_jprb
147 rmv=18.0153_jprb
148 rmo3=47.9942_jprb
149 rd=1000._jprb*r/rmd
150 rv=1000._jprb*r/rmv
151 rcpd=3.5_jprb*rd
152 rcvd=rcpd-rd
153 rcpv=4._jprb *rv
154 rcvv=rcpv-rv
155 rkappa=rd/rcpd
156 retv=rv/rd-1.0_jprb
157 rmco2=44.0095_jprb
158 rmch4=16.04_jprb
159 rmn2o=44.013_jprb
160 rmsf6=146.05_jprb
161 rmra=222._jprb
162 rmco=28.01_jprb
163 rmhcho=30.03_jprb
164 rmno2=46.01_jprb
165 rmso2=64.07_jprb
166 
167 ! ------------------------------------------------------------------
168 
169 !* 6. DEFINE THERMODYNAMIC CONSTANTS, LIQUID PHASE.
170 ! ---------------------------------------------
171 
172 rcw=4218._jprb
173 
174 ! ------------------------------------------------------------------
175 
176 !* 7. DEFINE THERMODYNAMIC CONSTANTS, SOLID PHASE.
177 ! --------------------------------------------
178 
179 rcs=2106._jprb
180 
181 ! ------------------------------------------------------------------
182 
183 !* 8. DEFINE THERMODYNAMIC CONSTANTS, TRANSITION OF PHASE.
184 ! ----------------------------------------------------
185 
186 rtt=273.16_jprb
187 rdt=11.82_jprb
188 rlvtt=2.5008e+6_jprb
189 rlstt=2.8345e+6_jprb
193 ratm=100000._jprb
194 
195 ! ------------------------------------------------------------------
196 
197 !* 9. SATURATED VAPOUR PRESSURE.
198 ! --------------------------
199 
200 restt=611.14_jprb
201 rgamw=(rcw-rcpv)/rv
203 ralpw=log(restt)+rbetw/rtt+rgamw*log(rtt)
204 print *,'SUCST: RESTT,RBETW,RTT,RGAMW',restt,rbetw,rtt,rgamw
205 print *,'SUCST: RALPW',ralpw
206 rgams=(rcs-rcpv)/rv
208 ralps=log(restt)+rbets/rtt+rgams*log(rtt)
209 print *,'SUCST: RESTT,RBETS,RTT,RGAMS',restt,rbets,rtt,rgams
210 print *,'SUCST: RALPS',ralps
211 rgams=(rcs-rcpv)/rv
215 
216 ! ------------------------------------------------------------------
217 
218 !* 10. PRINTS
219 
220 print*,'KPRINTLEV ',kprintlev
221 print*,'KULOUT ',kulout
222 
223 IF (kprintlev >= 1) THEN
224  WRITE(kulout,'(''0*** Constants of the ICM ***'')')
225  WRITE(kulout,'('' *** Fundamental constants ***'')')
226  WRITE(kulout,'('' PI = '',E13.7,'' -'')')rpi
227  WRITE(kulout,'('' c = '',E13.7,''m s-1'')')rclum
228  WRITE(kulout,'('' h = '',E13.7,''J s'')')rhpla
229  WRITE(kulout,'('' K = '',E13.7,''J K-1'')')rkbol
230  WRITE(kulout,'('' N = '',E13.7,''mol-1'')')rnavo
231  WRITE(kulout,'('' *** Astronomical constants ***'')')
232  WRITE(kulout,'('' day = '',E13.7,'' s'')')rday
233  WRITE(kulout,'('' half g. axis = '',E13.7,'' m'')')rea
234  WRITE(kulout,'('' mean anomaly = '',E13.7,'' -'')')repsm
235  WRITE(kulout,'('' sideral year = '',E13.7,'' s'')')rsiyea
236  WRITE(kulout,'('' sideral day = '',E13.7,'' s'')')rsiday
237  WRITE(kulout,'('' omega = '',E13.7,'' s-1'')')romega
238 
239  WRITE(kulout,'('' The initial date of the run is :'')')
240  WRITE(kulout,'(1X,I8,1X,I5,5X,I4,1X,I2,1X,I2)')idat,isss,ia,im,id
241  WRITE(kulout,'('' The Julian date is : '',F11.2)') zju
242  WRITE(kulout,'('' Time of the model : '',F15.2,'' s'')')zti
243  WRITE(kulout,'('' Distance Earth-Sun : '',E13.7,'' m'')')zrs
244  WRITE(kulout,'('' Relative Dist. E-S : '',E13.7,'' m'')')zrsrel
245  WRITE(kulout,'('' Declination : '',F12.5)') zde
246  WRITE(kulout,'('' Eq. of time : '',F12.5,'' s'')')zet
247  WRITE(kulout,'('' *** Geoide ***'')')
248  WRITE(kulout,'('' Gravity = '',E13.7,'' m s-2'')')rg
249  WRITE(kulout,'('' Earth radius = '',E13.7,'' m'')')ra
250  WRITE(kulout,'('' Inverse E.R. = '',E13.7,'' m'')')r1sa
251  WRITE(kulout,'('' *** Radiation ***'')')
252  WRITE(kulout,'('' Stefan-Bol. = '',E13.7,'' W m-2 K-4'')') rsigma
253  WRITE(kulout,'('' Solar const. = '',E13.7,'' W m-2'')')ri0
254  WRITE(kulout,'('' *** Thermodynamic, gas ***'')')
255  WRITE(kulout,'('' Perfect gas = '',e13.7)') r
256  WRITE(kulout,'('' Dry air mass = '',e13.7)') rmd
257  WRITE(kulout,'('' Vapour mass = '',e13.7)') rmv
258  WRITE(kulout,'('' Ozone mass = '',e13.7)') rmo3
259  WRITE(kulout,'('' Dry air cst. = '',e13.7)') rd
260  WRITE(kulout,'('' Vapour cst. = '',e13.7)') rv
261  WRITE(kulout,'('' Cpd = '',e13.7)') rcpd
262  WRITE(kulout,'('' Cvd = '',e13.7)') rcvd
263  WRITE(kulout,'('' Cpv = '',e13.7)') rcpv
264  WRITE(kulout,'('' Cvv = '',e13.7)') rcvv
265  WRITE(kulout,'('' Rd/Cpd = '',e13.7)') rkappa
266  WRITE(kulout,'('' Rv/Rd-1 = '',e13.7)') retv
267  WRITE(kulout,'('' *** Thermodynamic, liquid ***'')')
268  WRITE(kulout,'('' Cw = '',E13.7)') rcw
269  WRITE(kulout,'('' *** thermodynamic, solid ***'')')
270  WRITE(kulout,'('' Cs = '',E13.7)') rcs
271  WRITE(kulout,'('' *** Thermodynamic, trans. ***'')')
272  WRITE(kulout,'('' Fusion point = '',E13.7)') rtt
273  WRITE(kulout,'('' RTT-Tx(ew-ei) = '',E13.7)') rdt
274  WRITE(kulout,'('' RLvTt = '',E13.7)') rlvtt
275  WRITE(kulout,'('' RLsTt = '',E13.7)') rlstt
276  WRITE(kulout,'('' RLv0 = '',E13.7)') rlvzer
277  WRITE(kulout,'('' RLs0 = '',E13.7)') rlszer
278  WRITE(kulout,'('' RLMlt = '',E13.7)') rlmlt
279  WRITE(kulout,'('' Normal press. = '',E13.7)') ratm
280  WRITE(kulout,'('' Latent heat : '')')
281  WRITE(kulout,'(10(1X,E10.4))') (10._jprb*j,j=-4,4)
282  WRITE(kulout,'(10(1X,E10.4))') (rlv(rtt+10._jprb*j),j=-4,4)
283  WRITE(kulout,'(10(1X,E10.4))') (rls(rtt+10._jprb*j),j=-4,4)
284  WRITE(kulout,'('' *** Thermodynamic, satur. ***'')')
285  WRITE(kulout,'('' Fusion point = '',E13.7)') rtt
286  WRITE(kulout,'('' es(Tt) = '',e13.7)') restt
287  WRITE(kulout,'('' es(T) : '')')
288  WRITE(kulout,'(10(1X,E10.4))') (10._jprb*j,j=-4,4)
289  WRITE(kulout,'(10(1X,E10.4))') (esw(rtt+10._jprb*j),j=-4,4)
290  WRITE(kulout,'(10(1X,E10.4))') (ess(rtt+10._jprb*j),j=-4,4)
291 ! call flush(0) !!!!! A REVOIR (MPL) les 7 lignes qui suivent
292  do j=1,9
293  print*,'TEST J',j
294  print*,'RTT...',rtt+10._jprb*(j-5)
295  print*,'ES(RTT...',es(rtt+10._jprb*(j-5))
296  enddo
297  call flush(0)
298 
299  WRITE(kulout,'(10(1X,E10.4))') (es(rtt+10._jprb*j),j=-4,4)
300 ENDIF
301 
302 ! ------------------------------------------------------------------
303 
304 IF (lhook) CALL dr_hook('SUCST',1,zhook_handle)
305 END SUBROUTINE sucst
306 
real(kind=jprb) rgamw
Definition: yomcst.F90:72
real(kind=jprb) rpi
Definition: yomcst.F90:15
real(kind=jprb) rbetw
Definition: yomcst.F90:71
real(kind=jprb) rgams
Definition: yomcst.F90:75
!$Id mode_top_bound COMMON comconstr r
Definition: comconst.h:7
real(kind=jprb) rday
Definition: yomcst.F90:21
real(kind=jprb) rtimst
Definition: yomrip.F90:74
real(kind=jprb) rd
Definition: yomcst.F90:39
real(kind=jprb) restt
Definition: yomcst.F90:69
real(kind=jprb) rlstt
Definition: yomcst.F90:61
real(kind=jprb) ratm
Definition: yomcst.F90:66
real(kind=jprb) rtt
Definition: yomcst.F90:65
real(kind=jprb) rg
Definition: yomcst.F90:29
real(kind=jprb) rmra
Definition: yomcst.F90:51
real(kind=jprb) rclum
Definition: yomcst.F90:16
real(kind=jprb) rmhcho
Definition: yomcst.F90:53
real(kind=jprb) rnavo
Definition: yomcst.F90:19
real(kind=jprb) rlvtt
Definition: yomcst.F90:60
subroutine sucst(KULOUT, KDAT, KSSS, KPRINTLEV)
Definition: sucst.F90:2
real(kind=jprb) rmo3
Definition: yomcst.F90:38
real(kind=jprb) rmco
Definition: yomcst.F90:52
real(kind=jprb) rkbol
Definition: yomcst.F90:18
real(kind=jprb) rcs
Definition: yomcst.F90:58
real(kind=jprb) rlvzer
Definition: yomcst.F90:62
real(kind=jprb) r1sa
Definition: yomcst.F90:30
real(kind=jprb) rmco2
Definition: yomcst.F90:47
real(kind=jprb) rcw
Definition: yomcst.F90:57
integer, parameter jprb
Definition: parkind1.F90:31
real(kind=jprb) rmv
Definition: yomcst.F90:37
real(kind=jprb) rcpv
Definition: yomcst.F90:42
real(kind=jprb) rdt
Definition: yomcst.F90:67
real(kind=jprb) rgamd
Definition: yomcst.F90:78
real(kind=jprb) rhpla
Definition: yomcst.F90:17
real(kind=jprb) rsiday
Definition: yomcst.F90:25
real(kind=jprb) rcpd
Definition: yomcst.F90:41
real(kind=jprb) rcvv
Definition: yomcst.F90:44
real(kind=jprb) rmno2
Definition: yomcst.F90:54
real(kind=jprb) ri0
Definition: yomcst.F90:33
real(kind=jprb) rmso2
Definition: yomcst.F90:55
real(kind=jprb) rtimtr
Definition: yomrip.F90:76
real(kind=jprb) ra
Definition: yomcst.F90:28
real(kind=jprb) retv
Definition: yomcst.F90:46
logical lhook
Definition: yomhook.F90:12
real(kind=jprb) ralpw
Definition: yomcst.F90:70
real(kind=jprb) rkappa
Definition: yomcst.F90:45
real(kind=jprb) rlmlt
Definition: yomcst.F90:64
real(kind=jprb) rmn2o
Definition: yomcst.F90:49
Definition: yomrip.F90:1
real(kind=jprb) repsm
Definition: yomcst.F90:23
real(kind=jprb) romega
Definition: yomcst.F90:26
real(kind=jprb) rsigma
Definition: yomcst.F90:32
real(kind=jprb) rv
Definition: yomcst.F90:40
subroutine dr_hook(CDNAME, KSWITCH, PKEY)
Definition: yomhook.F90:17
real(kind=jprb) rsiyea
Definition: yomcst.F90:24
real(kind=jprb) rbets
Definition: yomcst.F90:74
real(kind=jprb) ralps
Definition: yomcst.F90:73
integer, parameter jpim
Definition: parkind1.F90:13
real(kind=jprb) rmch4
Definition: yomcst.F90:48
real(kind=jprb) ralpd
Definition: yomcst.F90:76
Definition: yomcst.F90:1
real(kind=jprb) rlszer
Definition: yomcst.F90:63
real(kind=jprb) rmsf6
Definition: yomcst.F90:50
real(kind=jprb) rea
Definition: yomcst.F90:22
real(kind=jprb) rmd
Definition: yomcst.F90:36
real(kind=jprb) rbetd
Definition: yomcst.F90:77
real(kind=jprb) rcvd
Definition: yomcst.F90:43