1 | ! MODULE nlte_setup_mod |
---|
2 | |
---|
3 | ! USE nlte_aux_mod |
---|
4 | |
---|
5 | ! IMPLICIT NONE |
---|
6 | |
---|
7 | ! CONTAINS |
---|
8 | c*********************************************************************** |
---|
9 | |
---|
10 | subroutine nlte_setup |
---|
11 | |
---|
12 | c malv Oct 09 Adapt mz1d_onlyTCR_MUCHASveces.f to "V09" |
---|
13 | c malv Sep 07 Add LU deccomp & repetition option to test CPU |
---|
14 | c malv Jan 07 Add new vertical fine-grid for NLTE |
---|
15 | c apr 06 malv Read date,effuv from Driver. T fixed at zbott. |
---|
16 | c 2003 fgg Double precission in UV, Photoq, Conduct & Diff |
---|
17 | c oct 02 malv V02: New scheme to allow for continuity eq. |
---|
18 | c dec 01 malv See changes/progress of the code in mz1d.actual |
---|
19 | c nov 01 malv adapt for parameterizations of tcr y shr |
---|
20 | c nov 98 malv add chemical & photochem. processes |
---|
21 | c jul 98 malv transic hiperb con zs fuera de la region |
---|
22 | c equil hidrostatico. smoothing en cr y sh |
---|
23 | c jan 98 malv first version |
---|
24 | c*********************************************************************** |
---|
25 | |
---|
26 | use datafile_mod, only: datadir |
---|
27 | USE mod_phys_lmdz_para, ONLY: is_master |
---|
28 | USE mod_phys_lmdz_transfert_para, ONLY: bcast |
---|
29 | use nlte_paramdef_h, only: nztabul, nb, nisot, indexisot |
---|
30 | use nlte_commons_h, only: elow, deltanu, lnpnbtab, tstar11tab |
---|
31 | use nlte_commons_h, only: tstar21tab, tstar31tab, tstar41tab |
---|
32 | use nlte_commons_h, only: a1_010_000, a2_010_000, a3_010_000 |
---|
33 | use nlte_commons_h, only: a4_010_000, a1_020_010 |
---|
34 | use nlte_commons_h, only: vc210tab, vc310tab, vc410tab |
---|
35 | implicit none |
---|
36 | |
---|
37 | c*************** |
---|
38 | |
---|
39 | c local variables |
---|
40 | |
---|
41 | integer i, k, lun1, lun2 |
---|
42 | real*8 xx |
---|
43 | character isotcode*2 |
---|
44 | |
---|
45 | |
---|
46 | c formats |
---|
47 | 132 format (i2) |
---|
48 | |
---|
49 | c********************************************************************** |
---|
50 | |
---|
51 | c *** Groups old 1-d model subroutines SETTINGS and LeeESCTVCISO_dlvr11 |
---|
52 | c *** Both were called in old NLTEdlvr11_SETUP *** |
---|
53 | |
---|
54 | c *** Old SETTINGS *** |
---|
55 | |
---|
56 | lun1 = 1 |
---|
57 | lun2 = 2 |
---|
58 | |
---|
59 | if(is_master) then |
---|
60 | |
---|
61 | do k=1,nisot |
---|
62 | write (isotcode,132) indexisot(k) |
---|
63 | open (lun1, |
---|
64 | $ file=trim(datadir)//'/NLTEDAT/enelow' |
---|
65 | $ //isotcode//'.dat',status='old') |
---|
66 | open (lun2, |
---|
67 | $ file=trim(datadir)//'/NLTEDAT/deltanu' |
---|
68 | $ //isotcode//'.dat',status='old') |
---|
69 | read (lun1,*) |
---|
70 | read (lun2,*) |
---|
71 | read (lun1,*) (elow(k,i), i=1,nb) |
---|
72 | read (lun2,*) (deltanu(k,i), i=1,nb) |
---|
73 | close (lun1) |
---|
74 | close (lun2) |
---|
75 | end do |
---|
76 | |
---|
77 | endif ! if(is_master) |
---|
78 | |
---|
79 | call bcast(elow) |
---|
80 | call bcast(deltanu) |
---|
81 | |
---|
82 | a1_010_000 = 1.3546d00 |
---|
83 | a2_010_000 = 1.3452d00 |
---|
84 | a3_010_000 = 1.1878d00 |
---|
85 | a4_010_000 = 1.2455d00 |
---|
86 | a1_020_010 = 4.35d0 |
---|
87 | |
---|
88 | |
---|
89 | c *** Old LeeESCTVCISO_dlvr11 *** |
---|
90 | |
---|
91 | if(is_master) then |
---|
92 | |
---|
93 | open( 11, file=trim(datadir)// |
---|
94 | $ '/NLTEDAT/parametp_Tstar_IAA1204.dat' ) |
---|
95 | read (11, *) |
---|
96 | do i=1,nztabul |
---|
97 | read (11,*) lnpnbtab(i), tstar11tab(i), |
---|
98 | $ tstar21tab(i), tstar31tab(i), tstar41tab(i) |
---|
99 | enddo |
---|
100 | close (11) |
---|
101 | |
---|
102 | open( 12, file=trim(datadir)// |
---|
103 | $ '/NLTEDAT/parametp_VC_IAA1204.dat' ) |
---|
104 | read (12, *) |
---|
105 | do i=1,nztabul |
---|
106 | read (12,*) xx, vc210tab(i), vc310tab(i), vc410tab(i) |
---|
107 | enddo |
---|
108 | close (12) |
---|
109 | |
---|
110 | |
---|
111 | endif !is_master |
---|
112 | |
---|
113 | call bcast(lnpnbtab) |
---|
114 | call bcast(tstar11tab) |
---|
115 | call bcast(tstar21tab) |
---|
116 | call bcast(tstar31tab) |
---|
117 | call bcast(tstar41tab) |
---|
118 | call bcast(xx) |
---|
119 | call bcast(vc210tab) |
---|
120 | call bcast(vc310tab) |
---|
121 | call bcast(vc410tab) |
---|
122 | |
---|
123 | xx=xx |
---|
124 | |
---|
125 | |
---|
126 | |
---|
127 | call LeeHISTOGRMS |
---|
128 | |
---|
129 | end subroutine nlte_setup |
---|
130 | |
---|
131 | |
---|
132 | |
---|
133 | c*********************************************************************** |
---|
134 | subroutine LeeHISTOGRMS |
---|
135 | c*********************************************************************** |
---|
136 | |
---|
137 | use datafile_mod, only: datadir |
---|
138 | use nlte_commons_h, only: hisfile |
---|
139 | implicit none |
---|
140 | |
---|
141 | c local variables and constants |
---|
142 | integer ihist |
---|
143 | |
---|
144 | |
---|
145 | c*********************************************************************** |
---|
146 | |
---|
147 | ! Banda fundamental |
---|
148 | ! |
---|
149 | hisfile = trim(datadir)// |
---|
150 | $ '/NLTEDAT/hid26-1.dat' |
---|
151 | ihist = 1 |
---|
152 | call rhist_03 (ihist) |
---|
153 | |
---|
154 | |
---|
155 | ! First Hot bands |
---|
156 | ! |
---|
157 | hisfile = trim(datadir)// |
---|
158 | $ '/NLTEDAT/hid26-2.dat' |
---|
159 | ihist = 2 |
---|
160 | call rhist_03 (ihist) |
---|
161 | |
---|
162 | hisfile = trim(datadir)// |
---|
163 | $ '/NLTEDAT/hid26-3.dat' |
---|
164 | ihist = 3 |
---|
165 | call rhist_03 (ihist) |
---|
166 | |
---|
167 | hisfile = trim(datadir)// |
---|
168 | $ '/NLTEDAT/hid26-4.dat' |
---|
169 | ihist = 4 |
---|
170 | call rhist_03 (ihist) |
---|
171 | |
---|
172 | |
---|
173 | |
---|
174 | end subroutine LeeHISTOGRMS |
---|
175 | |
---|
176 | |
---|
177 | c *** Old GETK_dlvr11.f *** |
---|
178 | |
---|
179 | c*********************************************************************** |
---|
180 | |
---|
181 | subroutine GETK_dlvr11 (tt) |
---|
182 | |
---|
183 | c*********************************************************************** |
---|
184 | use nlte_paramdef_h, only: rf19, rf20, rf21a, rf21b, rf21c, rf33bc |
---|
185 | use nlte_paramdef_h, only: nisot, ee, nu |
---|
186 | use nlte_commons_h, only: k23k21c, k24k21c ,k34k21c, k23k21cp |
---|
187 | use nlte_commons_h, only: k24k21cp, k34k21cp |
---|
188 | use nlte_commons_h, only: k19ba, k19bb, k19bc, k19bap |
---|
189 | use nlte_commons_h, only: k19bbp, k19bcp, k19ca, k19cb, k19cc |
---|
190 | use nlte_commons_h, only: k19cap, k19cbp, k19ccp |
---|
191 | use nlte_commons_h, only: k20b, k20c, k20bp, k20cp |
---|
192 | use nlte_commons_h, only: k21b, k21c, k21bp, k21cp, k33c, k33cp |
---|
193 | implicit none |
---|
194 | |
---|
195 | c arguments |
---|
196 | real tt ! i. temperature |
---|
197 | |
---|
198 | ! ! local variables: |
---|
199 | real*8 k20x, k20xb, k20xc |
---|
200 | real*8 k19xca,k19xcb,k19xcc |
---|
201 | real*8 k19xba,k19xbb,k19xbc |
---|
202 | real*8 k21x,k21xa,k21xb,k21xc |
---|
203 | real*8 anu, factor , tdt |
---|
204 | integer i |
---|
205 | |
---|
206 | c*********************************************************************** |
---|
207 | |
---|
208 | tdt = dble(tt) |
---|
209 | |
---|
210 | !! k19 & k20 |
---|
211 | |
---|
212 | k20x = 3.d-12 |
---|
213 | k20xc = k20x * rf20 |
---|
214 | k20xb = 2.d0 * k20xc |
---|
215 | |
---|
216 | k19xca = 4.2d-12 * exp( -2988.d0/tdt + 303930.d0/tdt**2.d0 ) |
---|
217 | if (tt.le.175.) k19xca = 3.3d-15 |
---|
218 | k19xcb = 2.1d-12 * exp( -2659.d0/tdt + 223052.d0/tdt**2.d0 ) |
---|
219 | if (tt.le.175.) k19xcb = 7.6d-16 |
---|
220 | k19xca = k19xca * rf19 |
---|
221 | k19xcb = k19xcb * rf19 |
---|
222 | k19xcc = k19xcb |
---|
223 | |
---|
224 | factor = 2.5d0 |
---|
225 | k19xba = factor * k19xca |
---|
226 | k19xbb = factor * k19xcb |
---|
227 | k19xbc = factor * k19xcc |
---|
228 | |
---|
229 | do i = 1, nisot |
---|
230 | |
---|
231 | k19ba(i) = k19xba |
---|
232 | k19ca(i) = k19xca |
---|
233 | k19bb(i) = k19xbb |
---|
234 | k19cb(i) = k19xcb |
---|
235 | k19bc(i) = k19xbc |
---|
236 | k19cc(i) = k19xcc |
---|
237 | |
---|
238 | k20b(i) = k20xb |
---|
239 | k20c(i) = k20xc |
---|
240 | |
---|
241 | anu = dble( nu(i,2)-nu(i,1) ) |
---|
242 | |
---|
243 | k19bap(i) = k19ba(i) * 2.d0 * exp( -ee*anu/tdt ) |
---|
244 | k19bbp(i) = k19bb(i) * 2.d0 * exp( -ee*anu/tdt ) |
---|
245 | k19bcp(i) = k19bc(i) * 2.d0 * exp( -ee*anu/tdt ) |
---|
246 | |
---|
247 | k20bp(i) = k20b(i)*4.d0/2.d0 * exp( -ee/tdt * anu ) |
---|
248 | |
---|
249 | anu = dble( nu(i,1) ) |
---|
250 | |
---|
251 | k19cap(i) = k19ca(i) * 2.d0 * exp( -ee*anu/tdt ) |
---|
252 | k19cbp(i) = k19cb(i) * 2.d0 * exp( -ee*anu/tdt ) |
---|
253 | k19ccp(i) = k19cc(i) * 2.d0 * exp( -ee*anu/tdt ) |
---|
254 | |
---|
255 | k20cp(i) = k20c(i)*2.d0/1.d0 * exp( -ee/tdt * anu ) |
---|
256 | |
---|
257 | end do |
---|
258 | |
---|
259 | |
---|
260 | !! k21 & k23k21c & k24k21c & k34k21c |
---|
261 | |
---|
262 | k21x = 2.49d-11 |
---|
263 | k21xb = k21x |
---|
264 | k21xa = 3.d0/2.d0 * k21xb |
---|
265 | k21xc = k21xb / 2.d0 |
---|
266 | |
---|
267 | k21xa = k21xa * rf21a |
---|
268 | k21xb = k21xb * rf21b |
---|
269 | k21xc = k21xc * rf21c |
---|
270 | |
---|
271 | do i = 1, nisot |
---|
272 | k21b(i) = k21xb |
---|
273 | k21c(i) = k21xc |
---|
274 | k21bp(i) = k21b(i) * |
---|
275 | @ exp( -ee/tdt* dble(nu(i,2)-nu(i,1)-nu(1,1)) ) |
---|
276 | k21cp(i) = k21c(i) * |
---|
277 | @ exp( -ee/tdt * dble(nu(i,1)-nu(1,1)) ) |
---|
278 | end do |
---|
279 | |
---|
280 | k23k21c = k21xc |
---|
281 | k24k21c = k21xc |
---|
282 | k34k21c = k21xc |
---|
283 | k23k21cp = k23k21c*2.d0/2.d0 * |
---|
284 | @ exp( -ee/tdt* dble(nu(2,1)-nu(3,1)) ) |
---|
285 | k24k21cp = k24k21c*2.d0/2.d0 * |
---|
286 | @ exp( -ee/tdt* dble(nu(2,1)-nu(4,1)) ) |
---|
287 | k34k21cp = k34k21c*2.d0/2.d0 * |
---|
288 | @ exp( -ee/tdt* dble(nu(3,1)-nu(4,1)) ) |
---|
289 | |
---|
290 | |
---|
291 | !! k33 |
---|
292 | |
---|
293 | k33c = k21x * rf33bc |
---|
294 | do i=2,nisot |
---|
295 | k33cp(i) = k33c * |
---|
296 | @ exp( -ee/tdt * dble(nu(1,2)-nu(1,1)-nu(i,1)) ) |
---|
297 | end do |
---|
298 | |
---|
299 | end subroutine GETK_dlvr11 |
---|
300 | |
---|
301 | |
---|
302 | ! END MODULE nlte_setup_mod |
---|
303 | |
---|
304 | |
---|
305 | |
---|
306 | |
---|
307 | |
---|