1 | ! (C) Copyright 1989- ECMWF. |
---|
2 | ! (C) Copyright 1989- Meteo-France. |
---|
3 | ! |
---|
4 | ! This software is licensed under the terms of the Apache Licence Version 2.0 |
---|
5 | ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. |
---|
6 | ! |
---|
7 | ! In applying this licence, ECMWF does not waive the privileges and immunities |
---|
8 | ! granted to it by virtue of its status as an intergovernmental organisation |
---|
9 | ! nor does it submit to any jurisdiction. |
---|
10 | |
---|
11 | MODULE YOMRIP |
---|
12 | |
---|
13 | USE PARKIND1 , ONLY : JPIM ,JPRB |
---|
14 | !USE YOEOZOC , ONLY : TEOZOC |
---|
15 | !USE YOECMIP , ONLY : TECMIP |
---|
16 | !USE YOERADGHG, ONLY : TRADGHG |
---|
17 | !USE YOEAERC , ONLY : TEAERC_TEGEN, TEAERC_MACC |
---|
18 | !USE REGLATLON_FIELD_MIX, ONLY : REGLATLON_FIELD |
---|
19 | |
---|
20 | IMPLICIT NONE |
---|
21 | |
---|
22 | SAVE |
---|
23 | |
---|
24 | ! -------------------------------------------------------------------------------- |
---|
25 | ! Date and timestep related variables. |
---|
26 | ! Values may be different for the different models run under the OOPS layer. |
---|
27 | ! In particuliar, we find there all date and timestep variables updated in UPDTIM. |
---|
28 | ! -------------------------------------------------------------------------------- |
---|
29 | |
---|
30 | TYPE :: TRIP |
---|
31 | |
---|
32 | !* Numbering of timesteps |
---|
33 | |
---|
34 | ! NSTART : first timestep of model |
---|
35 | ! NSTOP : last timestep of model |
---|
36 | ! CSTOP : character string defining stopping criteria for run |
---|
37 | |
---|
38 | ! NFOST : NUMBER OF FIRST-ORDER TIME STEPS AT THE START OF THE RUN |
---|
39 | ! IN ORDER TO AVOID TRAJECTORIES GOING OUT OF THE ATMOSPHERE. |
---|
40 | |
---|
41 | ! ------------------------------------------------------------------ |
---|
42 | |
---|
43 | !* Real time related variables (updated in UPDTIM) |
---|
44 | |
---|
45 | ! NSTADD : NUMBER OF DAYS SINCE START OF THE MODEL |
---|
46 | ! NSTASS : NUMBER OF SECONDS since start of model modulo(86400) |
---|
47 | ! RSTATI : NUMBER OF SECONDS SINCE START OF THE MODEL |
---|
48 | ! RTIMTR : ABSOLUTE TIME OF THE MODEL |
---|
49 | |
---|
50 | ! RHGMT : GMT TIME OF THE MODEL (BETWEEN 0 AND 86400) |
---|
51 | ! REQTIM : EQUATION OF TIME |
---|
52 | |
---|
53 | ! ------------------------------------------------------------------ |
---|
54 | |
---|
55 | !* Sun related variables (updated in UPDTIM) |
---|
56 | ! RSOVR : TRUE SOLAR TIME (GMT+EQUATION OF TIME) |
---|
57 | |
---|
58 | ! RDEASO : DISTANCE EARTH-SUN |
---|
59 | ! RDECLI : DECLINATION |
---|
60 | ! RWSOVR : IN RADIANS, TRUE SOLAR TIME (GMT+EQUATION OF TIME) |
---|
61 | ! THIS ANGLE IS ALSO PI - (LONGITUDE OF THE POINT |
---|
62 | ! WHERE THE SUN IS AT ZENITH) |
---|
63 | ! RIP0 : I0 WEIGHTED BY THE DISTANCE EARTH-SUN |
---|
64 | |
---|
65 | ! RCODEC : COSINE OF THE DECLINATION |
---|
66 | ! RSIDEC : SINE OF THE DECLINATION |
---|
67 | |
---|
68 | ! RCOVSR : COSINE OF TRUE SOLAR TIME |
---|
69 | ! RSIVSR : SINE OF TRUE SOLAR TIME |
---|
70 | |
---|
71 | ! NEW VARIABLES FOR LMSE |
---|
72 | ! RCODECN : COSINE OF THE DECLINATION FOR NEXT TIME STEP |
---|
73 | ! RSIDECN : SINE OF THE DECLINATION FOR NEXT TIME STEP |
---|
74 | |
---|
75 | ! RCOVSRN : COSINE OF TRUE SOLAR TIME FOR NEXT TIME STEP |
---|
76 | ! RSIVSRN : SINE OF TRUE SOLAR TIME FOR NEXT TIME STEP |
---|
77 | |
---|
78 | ! RCODECF : COSINE OF THE DECLINATION at the end of radiation step |
---|
79 | ! RSIDECF : SINE OF THE DECLINATION at the end of radiation step |
---|
80 | ! RCOVSRF : COSINE OF TRUE SOLAR TIME at the end of radiation step |
---|
81 | ! RSIVSRF : SINE OF TRUE SOLAR TIME at the end of radiation step |
---|
82 | |
---|
83 | ! ------------------------------------------------------------------ |
---|
84 | |
---|
85 | !* Moon related variables (updated in UPDTIM) |
---|
86 | |
---|
87 | ! RDECLU : LUNAR DECLINATION |
---|
88 | ! RTMOLT : IN RADIANS, TRUE LUNAR TIME (GMT+EQUATION OF TIME) |
---|
89 | ! THIS ANGLE IS ALSO PI - (LONGITUDE OF THE POINT |
---|
90 | ! WHERE THE MOON IS AT ZENITH) |
---|
91 | ! RIP0LU : LUNAR I0 (DOWNWARD TOA LUNAR FLUX) |
---|
92 | |
---|
93 | ! RCODECLU : COSINE OF THE LUNAR DECLINATION |
---|
94 | ! RSIDECLU : SINE OF THE LUNAR DECLINATION |
---|
95 | |
---|
96 | ! RCOVSRLU : COSINE OF TRUE LUNAR TIME |
---|
97 | ! RSIVSRLU : SINE OF TRUE LUNAR TIME |
---|
98 | |
---|
99 | ! ------------------------------------------------------------------ |
---|
100 | |
---|
101 | !* Time step related variables |
---|
102 | |
---|
103 | ! TSTEP : length of the timestep in seconds |
---|
104 | ! TDT : For leap-frog scheme: 2*TSTEP except at the first time step where it is TSTEP |
---|
105 | ! For a two-time level scheme (semi-Lagrangian), TDT is always TSTEP. |
---|
106 | |
---|
107 | ! RDTSA : TDT /RA |
---|
108 | ! RDTSA2 : RDTSA**2 |
---|
109 | ! RDTS62 : RDTSA**2/6 |
---|
110 | ! RDTS22 : RDTSA**2/2 |
---|
111 | |
---|
112 | ! RTDT : TDT |
---|
113 | |
---|
114 | ! ------------------------------------------------------------------ |
---|
115 | |
---|
116 | !* Time-variable climatological distributions of gases / aerosols |
---|
117 | ! YREOZOC : spectral distribution of ozone |
---|
118 | |
---|
119 | ! INTEGER(KIND=JPIM) :: NSTART |
---|
120 | ! INTEGER(KIND=JPIM) :: NSTOP |
---|
121 | ! CHARACTER(LEN=8) :: CSTOP !! added olivier |
---|
122 | ! INTEGER(KIND=JPIM) :: NSTADD |
---|
123 | ! INTEGER(KIND=JPIM) :: NSTASS |
---|
124 | ! INTEGER(KIND=JPIM) :: NFOST |
---|
125 | ! REAL(KIND=JPRB) :: RSTATI |
---|
126 | ! REAL(KIND=JPRB) :: RTIMTR |
---|
127 | ! REAL(KIND=JPRB) :: RHGMT |
---|
128 | ! REAL(KIND=JPRB) :: REQTIM |
---|
129 | ! REAL(KIND=JPRB) :: RSOVR |
---|
130 | ! REAL(KIND=JPRB) :: RDEASO |
---|
131 | ! REAL(KIND=JPRB) :: RDECLI |
---|
132 | ! REAL(KIND=JPRB) :: RWSOVR |
---|
133 | ! REAL(KIND=JPRB) :: RIP0 |
---|
134 | ! REAL(KIND=JPRB) :: RCODEC |
---|
135 | ! REAL(KIND=JPRB) :: RSIDEC |
---|
136 | ! REAL(KIND=JPRB) :: RCOVSR |
---|
137 | ! REAL(KIND=JPRB) :: RSIVSR |
---|
138 | ! REAL(KIND=JPRB) :: RCODECN |
---|
139 | ! REAL(KIND=JPRB) :: RSIDECN |
---|
140 | ! REAL(KIND=JPRB) :: RCOVSRN |
---|
141 | ! REAL(KIND=JPRB) :: RSIVSRN |
---|
142 | ! REAL(KIND=JPRB) :: RCODECF |
---|
143 | ! REAL(KIND=JPRB) :: RSIDECF |
---|
144 | ! REAL(KIND=JPRB) :: RCOVSRF |
---|
145 | ! REAL(KIND=JPRB) :: RSIVSRF |
---|
146 | REAL(KIND=JPRB) :: TSTEP |
---|
147 | ! REAL(KIND=JPRB) :: TDT |
---|
148 | ! REAL(KIND=JPRB) :: RDTSA |
---|
149 | ! REAL(KIND=JPRB) :: RDTSA2 |
---|
150 | ! REAL(KIND=JPRB) :: RDTS62 |
---|
151 | ! REAL(KIND=JPRB) :: RDTS22 |
---|
152 | ! REAL(KIND=JPRB) :: RTDT |
---|
153 | ! REAL(KIND=JPRB) :: RDECLU |
---|
154 | ! REAL(KIND=JPRB) :: RTMOLT |
---|
155 | ! REAL(KIND=JPRB) :: RIP0LU |
---|
156 | ! REAL(KIND=JPRB) :: RCODECLU |
---|
157 | ! REAL(KIND=JPRB) :: RSIDECLU |
---|
158 | ! REAL(KIND=JPRB) :: RCOVSRLU |
---|
159 | ! REAL(KIND=JPRB) :: RSIVSRLU |
---|
160 | ! |
---|
161 | ! !! things put here because their values are time-interpolated, i.e. non-constant |
---|
162 | ! ! defined in YOEOZOC |
---|
163 | ! TYPE(TEOZOC) :: YREOZOC |
---|
164 | ! ! defined in YOECMIP |
---|
165 | ! TYPE(TECMIP) :: YRECMIP |
---|
166 | ! ! defined in YOERADGHG |
---|
167 | ! TYPE(TRADGHG) :: YRERADGHG |
---|
168 | ! ! defined in YOEAERC |
---|
169 | ! TYPE(TEAERC_TEGEN) :: YREAERC_TEGEN |
---|
170 | ! TYPE(TEAERC_MACC) :: YREAERC_MACC |
---|
171 | ! TYPE(REGLATLON_FIELD) :: RAERSO4 |
---|
172 | |
---|
173 | CONTAINS |
---|
174 | |
---|
175 | PROCEDURE, PASS :: PRINT => PRINT_CONFIGURATION |
---|
176 | |
---|
177 | END TYPE TRIP |
---|
178 | |
---|
179 | ! -------------------------------------------------------------------------------- |
---|
180 | CONTAINS |
---|
181 | |
---|
182 | SUBROUTINE PRINT_CONFIGURATION(SELF, KDEPTH, KOUTNO) |
---|
183 | IMPLICIT NONE |
---|
184 | CLASS(TRIP), INTENT(IN) :: SELF |
---|
185 | INTEGER , INTENT(IN) :: KDEPTH |
---|
186 | INTEGER , INTENT(IN) :: KOUTNO |
---|
187 | |
---|
188 | INTEGER :: IDEPTHLOC |
---|
189 | |
---|
190 | IDEPTHLOC = KDEPTH+2 |
---|
191 | |
---|
192 | WRITE(KOUTNO,*) REPEAT(' ',KDEPTH ) // 'model%yrml_gconf%yrrip : ' |
---|
193 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'NSTART = ', SELF%NSTART |
---|
194 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'NSTOP = ', SELF%NSTOP |
---|
195 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'NSTADD = ', SELF%NSTADD |
---|
196 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'NSTASS = ', SELF%NSTASS |
---|
197 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'NFOST = ', SELF%NFOST |
---|
198 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RSTATI = ', SELF%RSTATI |
---|
199 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RTIMTR = ', SELF%RTIMTR |
---|
200 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RHGMT = ', SELF%RHGMT |
---|
201 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'REQTIM = ', SELF%REQTIM |
---|
202 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RSOVR = ', SELF%RSOVR |
---|
203 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RDEASO = ', SELF%RDEASO |
---|
204 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RDECLI = ', SELF%RDECLI |
---|
205 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RWSOVR = ', SELF%RWSOVR |
---|
206 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RIP0 = ', SELF%RIP0 |
---|
207 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RCODEC = ', SELF%RCODEC |
---|
208 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RSIDEC = ', SELF%RSIDEC |
---|
209 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RCOVSR = ', SELF%RCOVSR |
---|
210 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RSIVSR = ', SELF%RSIVSR |
---|
211 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RCODECN = ', SELF%RCODECN |
---|
212 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RSIDECN = ', SELF%RSIDECN |
---|
213 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RCOVSRN = ', SELF%RCOVSRN |
---|
214 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RSIVSRN = ', SELF%RSIVSRN |
---|
215 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RCODECF = ', SELF%RCODECF |
---|
216 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RSIDECF = ', SELF%RSIDECF |
---|
217 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RCOVSRF = ', SELF%RCOVSRF |
---|
218 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RSIVSRF = ', SELF%RSIVSRF |
---|
219 | WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'TSTEP = ', SELF%TSTEP |
---|
220 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'TDT = ', SELF%TDT |
---|
221 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RDTSA = ', SELF%RDTSA |
---|
222 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RDTSA2 = ', SELF%RDTSA2 |
---|
223 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RDTS62 = ', SELF%RDTS62 |
---|
224 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RDTS22 = ', SELF%RDTS22 |
---|
225 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RTDT = ', SELF%RTDT |
---|
226 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RDECLU = ', SELF%RDECLU |
---|
227 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RTMOLT = ', SELF%RTMOLT |
---|
228 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RIP0LU = ', SELF%RIP0LU |
---|
229 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RCODECLU = ', SELF%RCODECLU |
---|
230 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RSIDECLU = ', SELF%RSIDECLU |
---|
231 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RCOVSRLU = ', SELF%RCOVSRLU |
---|
232 | ! WRITE(KOUTNO,*) REPEAT(' ',IDEPTHLOC) // 'RSIVSRLU = ', SELF%RSIVSRLU |
---|
233 | ! WRITE(KOUTNO,*) '' |
---|
234 | |
---|
235 | END SUBROUTINE PRINT_CONFIGURATION |
---|
236 | |
---|
237 | !!TYPE(TRIP), POINTER :: YRRIP => NULL() |
---|
238 | |
---|
239 | ! -------------------------------------------------------------------------------- |
---|
240 | |
---|
241 | END MODULE YOMRIP |
---|