File: C:\NOAA\NEMS_11731\src\chem\gocart\src\Components\GOCART_GridComp\CARMA_GridComp\initgas.F90
1
2
3
4
5
6 subroutine initgas ( carma, rc )
7
8
9 use carma_types_mod
10
11 implicit none
12
13 integer, intent(out) :: rc
14
15
16 integer :: igas, j, iz, iy, ix, &
17 iztop, izbot, kb, ke, idk
18 real(kind=f) :: rh_init, rhi_init, rvap, xyzmet
19
20 #include "carma_globaer.h"
21
22 rc = 0
23
24 #ifdef DEBUG
25 write(*,*) '+ initgas'
26 #endif
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 format(/,'Gas concentrations for ',a,'(initgas)',//, &
54 a3, 1x, 4(a11,4x), /)
55 2 format(i3,1x,1p,3(e11.3,4x),0p,f11.3)
56
57
58
59
60
61
62
63
64
65
66
67
68
69 do iz = 1,NZ
70 do iy = 1,NY
71 do ix = 1,NX
72 call vaporp ( ix, iy, iz, carma, rc )
73 enddo
74 enddo
75 enddo
76
77
78
79
80 = 1
81
82
83
84
85 = 40._f
86 rhi_init = 60._f
87 rh_init = 100._f
88 rhi_init = 100._f
89 rh_init = 80._f
90
91
92
93
94 = RGAS/gwtmol(igas)
95
96
97
98
99 do igas = 1,NGAS
100 do ix = 1,NX
101 do iy = 1,NY
102 do iz = 1,NZ
103
104 if( igas .eq. 1 )then
105
106
107
108
109
110 if( zc(ix,iy,iz) .ge. 5.e3 .and. &
111 zc(ix,iy,iz) .le. 6.e3 ) then
112 gc(ix,iy,iz,igas) = rh_init/100._f*pvapl(ix,iy,iz,igas) &
113 / ( rvap*t(ix,iy,iz) )
114 else
115 gc(ix,iy,iz,igas) = 0.25_f*pvapi(ix,iy,iz,igas) &
116 / ( rvap*t(ix,iy,iz) )
117 endif
118
119
120
121
122
123
124
125
126
127 else
128 write(LUNOPRT,'(/,a)') 'invalid <igas> in initgas.f'
129 stop 1
130 endif
131
132 enddo
133 enddo
134 enddo
135 enddo
136
137
138
139
140
141
142
143
144 (:,:,:) = 0._f
145 fbotgas(:,:,:) = 0._f
146
147
148
149
150
151
152
153
154 = NZ
155 izbot = 1
156
157 do igas = 1, NGAS
158
159 gc(:,:,:,igas ) = gc(:,:,:,igas) * xmet*ymet*zmet
160 ftopgas(:,:,igas) = ftopgas(:,:,igas) * xmet(:,:,iztop)*ymet(:,:,iztop)
161 fbotgas(:,:,igas) = fbotgas(:,:,igas) * xmet(:,:,izbot)*ymet(:,:,izbot)
162
163 enddo
164
165
166
167
168 do iz = 1,NZ
169 do iy = 1,NY
170 do ix = 1,NX
171 call supersat ( ix, iy, iz, carma, rc )
172 enddo
173 enddo
174 enddo
175
176
177
178
179 = 1
180 iy = 1
181
182
183
184
185 if( igridv .eq. I_CART )then
186 kb = NZ
187 ke = 1
188 idk = -1
189 else
190 kb = 1
191 ke = NZ
192 idk = 1
193 endif
194
195 do igas = 1,NGAS
196
197 write(LUNOPRT,1) gasname(igas), &
198 'iz','zc','gc [kg/m^3]','supsat','T [K]'
199
200 do iz = kb,ke,idk
201 xyzmet = xmet(ix,iy,iz)*ymet(ix,iy,iz)*zmet(ix,iy,iz)
202 write(LUNOPRT,2) iz, zc(ix,iy,iz), gc(ix,iy,iz,igas)/xyzmet, &
203 supsatl(ix,iy,iz,igas), t(ix,iy,iz)
204 enddo
205
206 enddo
207
208
209
210
211
212 do igas = 1,NGAS
213 do iy = 1, NY
214 do ix = 1, NX
215 gc_topbnd(ix,iy,igas) = gc(ix,iy,NZ,igas)
216 gc_botbnd(ix,iy,igas) = gc(ix,iy,1,igas)
217 enddo
218 enddo
219 enddo
220
221
222
223 return
224 end
225