@@ -19,19 +19,7 @@ module gsd_chem_seas_wrapper
19
19
20
20
! > \brief Brief description of the subroutine
21
21
! !
22
- subroutine gsd_chem_seas_wrapper_init (ca_global_emis ,do_sppt_emis ,im ,emis_multiplier ,errmsg ,errflg )
23
- implicit none
24
- logical , intent (in ) :: ca_global_emis, do_sppt_emis
25
- real , intent (out ) :: emis_multiplier(:)
26
- character (len=* ), intent (out ) :: errmsg
27
- integer , intent (out ) :: errflg, im
28
-
29
- errmsg= ' '
30
- errflg= 0
31
-
32
- if (ca_global_emis .or. do_sppt_emis) then
33
- emis_multiplier= 1.0
34
- endif
22
+ subroutine gsd_chem_seas_wrapper_init
35
23
end subroutine gsd_chem_seas_wrapper_init
36
24
37
25
! > \brief Brief description of the subroutine
@@ -51,23 +39,21 @@ end subroutine gsd_chem_seas_wrapper_finalize
51
39
! !
52
40
! >\section gsd_chem_seas_wrapper GSD Chemistry Scheme General Algorithm
53
41
! > @{
54
- subroutine gsd_chem_seas_wrapper_run (im , kte , kme , ktau , dt , garea , &
55
- land , u10m , v10m , ustar , rlat , rlon , tskin , &
56
- pr3d , ph3d ,prl3d , tk3d , us3d , vs3d , spechum , &
57
- nseasalt ,ntrac ,ntss1 ,ntss2 ,ntss3 ,ntss4 ,ntss5 , &
58
- gq0 ,qgrs ,ssem ,seas_opt_in , emis_amp_seas , emis_multiplier , &
59
- ca1 , ca_global_emis , do_sppt_emis , sppt_wts , errmsg , errflg )
42
+ subroutine gsd_chem_seas_wrapper_run (im , kte , kme , ktau , dt , garea , &
43
+ land , u10m , v10m , ustar , rlat , rlon , tskin , &
44
+ pr3d , ph3d ,prl3d , tk3d , us3d , vs3d , spechum , &
45
+ nseasalt ,ntrac ,ntss1 ,ntss2 ,ntss3 ,ntss4 ,ntss5 , &
46
+ gq0 ,qgrs ,ssem ,seas_opt_in , pert_scale_seas , emis_amp_seas , &
47
+ do_sppt_emis , sppt_wts , errmsg , errflg )
60
48
61
49
implicit none
62
50
63
-
64
51
integer , intent (in ) :: im,kte,kme,ktau
65
52
integer , intent (in ) :: nseasalt,ntrac,ntss1,ntss2,ntss3,ntss4,ntss5
66
53
real (kind_phys),intent (in ) :: dt
67
54
68
- logical , intent (in ) :: ca_global_emis, do_sppt_emis
69
- real , optional , intent (inout ) :: emis_multiplier(:)
70
- real , intent (in ) :: ca1(im), emis_amp_seas
55
+ logical , intent (in ) :: do_sppt_emis
56
+ real (kind= kind_phys), intent (in ) :: emis_amp_seas, pert_scale_seas
71
57
real (kind_phys), optional , intent (in ) :: sppt_wts(:,:)
72
58
73
59
@@ -100,7 +86,7 @@ subroutine gsd_chem_seas_wrapper_run(im, kte, kme, ktau, dt, garea, &
100
86
101
87
integer :: ide, ime, ite, kde
102
88
real (kind_phys), dimension (1 :num_chem) :: ppm2ugkg
103
- real (kind_phys) :: ca1_scaled, random_factor(ims:im,jms:jme)
89
+ real (kind_phys) :: random_factor(ims:im,jms:jme)
104
90
105
91
! >-- local variables
106
92
integer :: i, j, jp, k, kp, n
@@ -122,28 +108,10 @@ subroutine gsd_chem_seas_wrapper_run(im, kte, kme, ktau, dt, garea, &
122
108
! ppm2ugkg(p_so2 ) = 1.e+03_kind_phys * mw_so2_aer / mwdry
123
109
ppm2ugkg(p_sulf) = 1.e+03_kind_phys * mw_so4_aer / mwdry
124
110
125
- random_factor = 1
126
-
127
- if (do_sppt_emis) then
128
- do i = ims, im
129
- emis_multiplier(i) = sppt_wts(i,kme/ 2 )
130
- enddo
131
- elseif (ca_global_emis) then
132
- do i = ims, im
133
- ! ca1(i) is always precisely 0 or 2
134
- if (ca1(i)<1.0 ) then
135
- ca1_scaled= 0.9
136
- else
137
- ca1_scaled= 1.0 / 0.9
138
- endif
139
- emis_multiplier(i) = max (0.8 ,min (1.2 ,emis_multiplier(i)* 0.95 + ca1_scaled* 0.05 ))
140
- enddo
141
- endif
142
-
143
- if (do_sppt_emis .or. ca_global_emis) then
144
- do i= ims,im
145
- random_factor(i,jms) = min (10.0 ,max (0.0 ,(emis_multiplier(i)- 1.0 )* emis_amp_seas + 1.0 ))
146
- enddo
111
+ if (do_sppt_emis) then
112
+ random_factor(:,jms) = pert_scale_seas* max (min (1 + (sppt_wts(:,kme/ 2 )- 1 )* emis_amp_seas,2.0 ),0.0 )
113
+ else
114
+ random_factor = 1.0
147
115
endif
148
116
149
117
! >- get ready for chemistry run
0 commit comments