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 ! ------------------------------------------------------------------
49 
50 #include "tsmbkind.h"
51 
52 USE yomcst , ONLY : rpi ,rclum ,rhpla ,rkbol ,&
53  &rnavo ,rday ,rea ,repsm ,rsiyea ,&
54  &rsiday ,romega ,ra ,rg ,r1sa ,&
55  &rsigma ,ri0 ,r ,rmd ,rmv ,&
56  &rmo3 ,rd ,rv ,rcpd ,rcpv ,&
57  &rcvd ,rcvv ,rkappa ,retv ,rcw ,&
58  &rcs ,rlvtt ,rlstt ,rlvzer ,rlszer ,&
59  &rlmlt ,rtt ,ratm ,rdt ,restt ,&
60  &ralpw ,rbetw ,rgamw ,ralps ,rbets ,&
62 USE yomrip , ONLY : rtimst ,rtimtr
63 
64 IMPLICIT NONE
65 
66 
67 ! DUMMY INTEGER SCALARS
68 integer_m :: kdat
69 integer_m :: kprintlev
70 integer_m :: ksss
71 integer_m :: kulout
72 
73 
74 ! LOCAL INTEGER SCALARS
75 integer_m :: ia, id, idat, im, isss, j
76 
77 ! LOCAL REAL SCALARS
78 real_b :: zde, zet, zju, zrs, zrsrel, zteta, zti
79 
80 
81 #include "fctast.h"
82 #include "fcttrm.h"
83 #include "fcttim.h"
84 ! -----------------------------------------------------------------
85 
86 !* 1. DEFINE FUNDAMENTAL CONSTANTS.
87 ! -----------------------------
88 
89 
90 rpi=_two_*asin(_one_)
91 rclum=299792458._jprb
92 rhpla=6.6260755e-34_jprb
93 rkbol=1.380658e-23_jprb
94 rnavo=6.0221367e+23_jprb
95 
96 ! ------------------------------------------------------------------
97 
98 !* 2. DEFINE ASTRONOMICAL CONSTANTS.
99 ! ------------------------------
100 
101 rday=86400._jprb
102 rea=149597870000._jprb
103 repsm=0.409093_jprb
104 
105 rsiyea=365.25_jprb*rday*_two_*rpi/6.283076_jprb
106 rsiday=rday/(_one_+rday/rsiyea)
107 romega=_two_*rpi/rsiday
108 
109 idat=kdat
110 isss=ksss
111 id=ndd(idat)
112 im=nmm(idat)
113 ia=nccaa(idat)
114 zju=rjudat(ia,im,id)
115 zti=rtime(ia,im,id,isss)
116 rtimst=zti
117 rtimtr=zti
118 zteta=rteta(zti)
119 zrs=rrs(zteta)
120 zde=rds(zteta)
121 zet=ret(zteta)
122 zrsrel=zrs/rea
123 
124 ! ------------------------------------------------------------------
125 
126 !* 3. DEFINE GEOIDE.
127 ! --------------
128 
129 rg=9.80665_jprb
130 ra=6371229._jprb
131 r1sa=REAL(_ONE_/REAL(RA,KIND(_ONE_)),KIND(r1sa))
132 
133 ! ------------------------------------------------------------------
134 
135 !* 4. DEFINE RADIATION CONSTANTS.
136 ! ---------------------------
137 
138 rsigma=_two_ * rpi**5 * rkbol**4 /(15._jprb* rclum**2 * rhpla**3)
139 ri0=1370._jprb
140 
141 ! ------------------------------------------------------------------
142 
143 !* 5. DEFINE THERMODYNAMIC CONSTANTS, GAS PHASE.
144 ! ------------------------------------------
145 
146 r=rnavo*rkbol
147 rmd=28.9644_jprb
148 rmv=18.0153_jprb
149 rmo3=47.9942_jprb
150 rd=1000._jprb*r/rmd
151 rv=1000._jprb*r/rmv
152 rcpd=3.5_jprb*rd
153 rcvd=rcpd-rd
154 rcpv=4._jprb *rv
155 rcvv=rcpv-rv
156 rkappa=rd/rcpd
157 retv=rv/rd-_one_
158 
159 ! ------------------------------------------------------------------
160 
161 !* 6. DEFINE THERMODYNAMIC CONSTANTS, LIQUID PHASE.
162 ! ---------------------------------------------
163 
164 rcw=4218._jprb
165 
166 ! ------------------------------------------------------------------
167 
168 !* 7. DEFINE THERMODYNAMIC CONSTANTS, SOLID PHASE.
169 ! --------------------------------------------
170 
171 rcs=2106._jprb
172 
173 ! ------------------------------------------------------------------
174 
175 !* 8. DEFINE THERMODYNAMIC CONSTANTS, TRANSITION OF PHASE.
176 ! ----------------------------------------------------
177 
178 rtt=273.16_jprb
179 rdt=11.82_jprb
180 rlvtt=2.5008e+6_jprb
181 rlstt=2.8345e+6_jprb
185 ratm=100000._jprb
186 
187 ! ------------------------------------------------------------------
188 
189 !* 9. SATURATED VAPOUR PRESSURE.
190 ! --------------------------
191 
192 restt=611.14_jprb
193 rgamw=(rcw-rcpv)/rv
195 ralpw=log(restt)+rbetw/rtt+rgamw*log(rtt)
196 rgams=(rcs-rcpv)/rv
198 ralps=log(restt)+rbets/rtt+rgams*log(rtt)
202 
203 ! ------------------------------------------------------------------
204 
205 !* 10. PRINTS
206 
207 IF (kprintlev >= 1) THEN
208  WRITE(kulout,'(''0*** Constants of the ICM ***'')')
209  WRITE(kulout,'('' *** Fundamental constants ***'')')
210  WRITE(kulout,'('' PI = '',E13.7,'' -'')')rpi
211  WRITE(kulout,'('' c = '',E13.7,''m s-1'')')rclum
212  WRITE(kulout,'('' h = '',E13.7,''J s'')')rhpla
213  WRITE(kulout,'('' K = '',E13.7,''J K-1'')')rkbol
214  WRITE(kulout,'('' N = '',E13.7,''mol-1'')')rnavo
215  WRITE(kulout,'('' *** Astronomical constants ***'')')
216  WRITE(kulout,'('' day = '',E13.7,'' s'')')rday
217  WRITE(kulout,'('' half g. axis = '',E13.7,'' m'')')rea
218  WRITE(kulout,'('' mean anomaly = '',E13.7,'' -'')')repsm
219  WRITE(kulout,'('' sideral year = '',E13.7,'' s'')')rsiyea
220  WRITE(kulout,'('' sideral day = '',E13.7,'' s'')')rsiday
221  WRITE(kulout,'('' omega = '',E13.7,'' s-1'')')romega
222 
223  WRITE(kulout,'('' The initial date of the run is :'')')
224  WRITE(kulout,'(1X,I8,1X,I5,5X,I4,1X,I2,1X,I2)')idat,isss,ia,im,id
225  WRITE(kulout,'('' The Julian date is : '',F11.2)') zju
226  WRITE(kulout,'('' Time of the model : '',F15.2,'' s'')')zti
227  WRITE(kulout,'('' Distance Earth-Sun : '',E13.7,'' m'')')zrs
228  WRITE(kulout,'('' Relative Dist. E-S : '',E13.7,'' m'')')zrsrel
229  WRITE(kulout,'('' Declination : '',F12.5)') zde
230  WRITE(kulout,'('' Eq. of time : '',F12.5,'' s'')')zet
231  WRITE(kulout,'('' *** Geoide ***'')')
232  WRITE(kulout,'('' Gravity = '',E13.7,'' m s-2'')')rg
233  WRITE(kulout,'('' Earth radius = '',E13.7,'' m'')')ra
234  WRITE(kulout,'('' Inverse E.R. = '',E13.7,'' m'')')r1sa
235  WRITE(kulout,'('' *** Radiation ***'')')
236  WRITE(kulout,'('' Stefan-Bol. = '',E13.7,'' W m-2 K-4'')') rsigma
237  WRITE(kulout,'('' Solar const. = '',E13.7,'' W m-2'')')ri0
238  WRITE(kulout,'('' *** Thermodynamic, gas ***'')')
239  WRITE(kulout,'('' Perfect gas = '',e13.7)') r
240  WRITE(kulout,'('' Dry air mass = '',e13.7)') rmd
241  WRITE(kulout,'('' Vapour mass = '',e13.7)') rmv
242  WRITE(kulout,'('' Ozone mass = '',e13.7)') rmo3
243  WRITE(kulout,'('' Dry air cst. = '',e13.7)') rd
244  WRITE(kulout,'('' Vapour cst. = '',e13.7)') rv
245  WRITE(kulout,'('' Cpd = '',e13.7)') rcpd
246  WRITE(kulout,'('' Cvd = '',e13.7)') rcvd
247  WRITE(kulout,'('' Cpv = '',e13.7)') rcpv
248  WRITE(kulout,'('' Cvv = '',e13.7)') rcvv
249  WRITE(kulout,'('' Rd/Cpd = '',e13.7)') rkappa
250  WRITE(kulout,'('' Rv/Rd-1 = '',e13.7)') retv
251  WRITE(kulout,'('' *** Thermodynamic, liquid ***'')')
252  WRITE(kulout,'('' Cw = '',E13.7)') rcw
253  WRITE(kulout,'('' *** thermodynamic, solid ***'')')
254  WRITE(kulout,'('' Cs = '',E13.7)') rcs
255  WRITE(kulout,'('' *** Thermodynamic, trans. ***'')')
256  WRITE(kulout,'('' Fusion point = '',E13.7)') rtt
257  WRITE(kulout,'('' RTT-Tx(ew-ei) = '',E13.7)') rdt
258  WRITE(kulout,'('' RLvTt = '',E13.7)') rlvtt
259  WRITE(kulout,'('' RLsTt = '',E13.7)') rlstt
260  WRITE(kulout,'('' RLv0 = '',E13.7)') rlvzer
261  WRITE(kulout,'('' RLs0 = '',E13.7)') rlszer
262  WRITE(kulout,'('' RLMlt = '',E13.7)') rlmlt
263  WRITE(kulout,'('' Normal press. = '',E13.7)') ratm
264  WRITE(kulout,'('' Latent heat : '')')
265  WRITE(kulout,'(10(1X,E10.4))') (10._jprb*j,j=-4,4)
266  WRITE(kulout,'(10(1X,E10.4))') (rlv(rtt+10._jprb*j),j=-4,4)
267  WRITE(kulout,'(10(1X,E10.4))') (rls(rtt+10._jprb*j),j=-4,4)
268  WRITE(kulout,'('' *** Thermodynamic, satur. ***'')')
269  WRITE(kulout,'('' Fusion point = '',E13.7)') rtt
270  WRITE(kulout,'('' es(Tt) = '',e13.7)') restt
271  WRITE(kulout,'('' es(T) : '')')
272  WRITE(kulout,'(10(1X,E10.4))') (10._jprb*j,j=-4,4)
273  WRITE(kulout,'(10(1X,E10.4))') (esw(rtt+10._jprb*j),j=-4,4)
274  WRITE(kulout,'(10(1X,E10.4))') (ess(rtt+10._jprb*j),j=-4,4)
275  WRITE(kulout,'(10(1X,E10.4))') (es(rtt+10._jprb*j),j=-4,4)
276 ENDIF
277 
278 ! ------------------------------------------------------------------
279 
280 RETURN
281 END SUBROUTINE sucst
282 
283 
284 
285 
286 
287 
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
!$Id mode_top_bound COMMON comconstr omeg dissip_zref ihf INTEGER im
Definition: comconst.h:7
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) rclum
Definition: yomcst.F90:16
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) 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) rcw
Definition: yomcst.F90:57
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) ri0
Definition: yomcst.F90:33
real(kind=jprb) rtimtr
Definition: yomrip.F90:76
real(kind=jprb) ra
Definition: yomcst.F90:28
real(kind=jprb) retv
Definition: yomcst.F90:46
real(kind=jprb) ralpw
Definition: yomcst.F90:70
real(kind=jprb) rkappa
Definition: yomcst.F90:45
real(kind=jprb) rlmlt
Definition: yomcst.F90:64
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
real(kind=jprb) rsiyea
Definition: yomcst.F90:24
real(kind=jprb) rbets
Definition: yomcst.F90:74
real(kind=jprb) ralps
Definition: yomcst.F90:73
real(kind=jprb) ralpd
Definition: yomcst.F90:76
Definition: yomcst.F90:1
real(kind=jprb) rlszer
Definition: yomcst.F90:63
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