@@ -151,6 +151,10 @@ subroutine mp_thompson_init(ncol, nlev, con_g, con_rd, con_eps, &
151
151
! > - Convert specific humidity to water vapor mixing ratio.
152
152
! > - Also, hydrometeor variables are mass or number mixing ratio
153
153
! > - either kg of species per kg of dry air, or per kg of (dry + vapor).
154
+ if (merra2_aerosol_aware) then
155
+ call get_niwfa(aerfld, nifa, nwfa, ncol, nlev)
156
+ end if
157
+
154
158
155
159
qv = spechum/ (1.0_kind_phys - spechum)
156
160
@@ -163,7 +167,7 @@ subroutine mp_thompson_init(ncol, nlev, con_g, con_rd, con_eps, &
163
167
164
168
ni = ni/ (1.0_kind_phys - spechum)
165
169
nr = nr/ (1.0_kind_phys - spechum)
166
- if (is_aerosol_aware) then
170
+ if (is_aerosol_aware .or. merra2_aerosol_aware ) then
167
171
nc = nc/ (1.0_kind_phys - spechum)
168
172
nwfa = nwfa/ (1.0_kind_phys - spechum)
169
173
nifa = nifa/ (1.0_kind_phys - spechum)
@@ -208,8 +212,6 @@ subroutine mp_thompson_init(ncol, nlev, con_g, con_rd, con_eps, &
208
212
nwfa(i,k) = naCCN1+ naCCN0* exp (- ((hgt(i,k)- hgt(i,1 ))/ 1000 .)* niCCN3)
209
213
enddo
210
214
enddo
211
- else if (merra2_aerosol_aware) then
212
- call get_niwfa(aerfld, nifa, nwfa, ncol, nlev)
213
215
else
214
216
if (mpirank== mpiroot) write (* ,* ) ' Apparently initial CCN aerosols are present.'
215
217
if (MAXVAL (nwfa2d) .lt. eps) then
@@ -555,6 +557,9 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, &
555
557
else
556
558
dtstep = dtp
557
559
end if
560
+ if (merra2_aerosol_aware) then
561
+ call get_niwfa(aerfld, nifa, nwfa, ncol, nlev)
562
+ end if
558
563
559
564
! > - Convert specific humidity to water vapor mixing ratio.
560
565
! > - Also, hydrometeor variables are mass or number mixing ratio
@@ -574,7 +579,7 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, &
574
579
575
580
ni = ni/ (1.0_kind_phys - spechum)
576
581
nr = nr/ (1.0_kind_phys - spechum)
577
- if (is_aerosol_aware) then
582
+ if (is_aerosol_aware .or. merra2_aerosol_aware ) then
578
583
nc = nc/ (1.0_kind_phys - spechum)
579
584
nwfa = nwfa/ (1.0_kind_phys - spechum)
580
585
nifa = nifa/ (1.0_kind_phys - spechum)
@@ -681,9 +686,6 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, &
681
686
ncten3 = > diag3d(:,:,36 :36 )
682
687
qcten3 = > diag3d(:,:,37 :37 )
683
688
end if set_extended_diagnostic_pointers
684
- if (merra2_aerosol_aware) then
685
- call get_niwfa(aerfld, nifa, nwfa, ncol, nlev)
686
- end if
687
689
! > - Call mp_gt_driver() with or without aerosols, with or without effective radii, ...
688
690
if (is_aerosol_aware .or. merra2_aerosol_aware) then
689
691
call mp_gt_driver(qv= qv, qc= qc, qr= qr, qi= qi, qs= qs, qg= qg, ni= ni, nr= nr, &
@@ -921,8 +923,8 @@ subroutine get_niwfa(aerfld, nifa, nwfa, ncol, nlev)
921
923
aerfld(:,:,4 )/ 1011.5142 + aerfld(:,:,5 )/ 5683.3501 )* 1.e15
922
924
923
925
nwfa= ((aerfld(:,:,6 )/ 0.0045435214 + aerfld(:,:,7 )/ 0.2907854 + aerfld(:,:,8 )/ 12.91224 + &
924
- aerfld(:,:,9 )/ 206.2216 + aerfld(:,:,10 )/ 4326.23 )* 1 .+ aerfld(:,:,11 )/ 0.3053104 * 5 + &
925
- aerfld(:,:,15 )/ 0.3232698 * 1 )* 1.e15
926
+ aerfld(:,:,9 )/ 206.2216 + aerfld(:,:,10 )/ 4326.23 )* 9 .+ aerfld(:,:,11 )/ 0.3053104 * 5 + &
927
+ aerfld(:,:,15 )/ 0.3232698 * 8 )* 1.e15
926
928
end subroutine get_niwfa
927
929
928
930
end module mp_thompson
0 commit comments