mechanism_driver.F
References to this file elsewhere.
1 !WRF:MODEL_LAYER:CHEMICS
2 !
3 subroutine mechanism_driver(id,ktau,dtstep,ktauc,dtstepc, &
4 config_flags,gmt,julday,t_phy,moist,p8w,t8w, &
5 p_phy,chem,rho_phy,dz8w,z,z_at_w,vdrog3,vcsulf_old, &
6 ph_macr,ph_o31d,ph_o33p,ph_no2,ph_no3o2,ph_no3o,ph_hno2,&
7 ph_hno3,ph_hno4,ph_h2o2,ph_ch2or,ph_ch2om,ph_ch3cho, &
8 ph_ch3coch3,ph_ch3coc2h5,ph_hcocho,ph_ch3cocho, &
9 ph_hcochest,ph_ch3o2h,ph_ch3coo2h,ph_ch3ono2,ph_hcochob,&
10 ph_n2o5,ph_o2, &
11 addt,addx,addc,etep,oltp,olip,cslp,limp,hc5p,hc8p,tolp, &
12 xylp,apip,isop,hc3p,ethp,o3p,tco3,mo2,o1d,olnn,rpho,xo2,&
13 ketp,olnd, &
14 ids,ide, jds,jde, kds,kde, &
15 ims,ime, jms,jme, kms,kme, &
16 its,ite, jts,jte, kts,kte )
17 !----------------------------------------------------------------------
18 USE module_configure
19 USE module_state_description
20 USE module_data_radm2
21 USE module_data_sorgam
22 USE module_data_racm
23 USE module_radm
24 USE module_racm
25 USE module_aerosols_sorgam
26 USE module_cbmz, only: cbmz_driver
27 IMPLICIT NONE
28
29 INTEGER, INTENT(IN ) :: id,julday, &
30 ids,ide, jds,jde, kds,kde, &
31 ims,ime, jms,jme, kms,kme, &
32 its,ite, jts,jte, kts,kte
33 INTEGER, INTENT(IN ) :: &
34 ktau,ktauc
35 REAL, INTENT(IN ) :: &
36 dtstep,dtstepc,gmt
37 !
38 ! advected moisture variables
39 !
40 REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_moist ), &
41 INTENT(IN ) :: moist
42 !
43 ! advected chemical species
44 !
45 REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_chem ), &
46 INTENT(INOUT ) :: chem
47
48 !
49 ! arrays that hold the photolysis rates
50 !
51 REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), &
52 INTENT(INOUT ) :: &
53 ph_macr,ph_o31d,ph_o33p,ph_no2,ph_no3o2,ph_no3o,ph_hno2, &
54 ph_hno3,ph_hno4,ph_h2o2,ph_ch2or,ph_ch2om,ph_ch3cho, &
55 ph_ch3coch3,ph_ch3coc2h5,ph_hcocho,ph_ch3cocho, &
56 ph_hcochest,ph_ch3o2h,ph_ch3coo2h,ph_ch3ono2,ph_hcochob, &
57 ph_n2o5,ph_o2
58 !
59 ! RACM radicals
60 !
61 REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), &
62 INTENT(INOUT ) :: &
63 addt,addx,addc,etep,oltp,olip,cslp,limp,hc5p,hc8p,tolp, &
64 xylp,apip,isop,hc3p,ethp,o3p,tco3,mo2,o1d,olnn,rpho,xo2,&
65 ketp,olnd
66
67 !
68 ! on input from meteorological model
69 !
70
71 REAL, DIMENSION( ims:ime , kms:kme , jms:jme ) , &
72 INTENT(IN ) :: &
73 t_phy, &
74 p_phy, &
75 dz8w, &
76 z , &
77 t8w,p8w,z_at_w , &
78 rho_phy
79 ! ..
80 TYPE(grid_config_rec_type), INTENT(IN ) :: config_flags
81 !
82 ! for interaction of aerosls/chemistry (MADE/SORGAM only)
83 !
84 real , INTENT(INOUT ) :: &
85 vdrog3(ims:ime,kms:kme-0,jms:jme,ldrog)
86 real , INTENT(INOUT ) :: &
87 vcsulf_old(ims:ime,kms:kme-0,jms:jme)
88
89
90
91 ! ..
92 ! .. Intrinsic Functions ..
93 INTRINSIC max, min
94 ! ..
95 !
96 ! select chemical mechanism
97 !
98 chem_select: SELECT CASE(config_flags%chem_opt)
99 CASE (RADM2)
100 CALL wrf_debug(15,'calling radm2 from mechanism_driver')
101 call radm_driver(id,ktauc,dtstepc,config_flags, &
102 gmt,julday,t_phy,moist,p8w,t8w, &
103 p_phy,chem,rho_phy,dz8w,z,z_at_w,vdrog3, &
104 ph_o31d,ph_o33p,ph_no2,ph_no3o2,ph_no3o,ph_hno2, &
105 ph_hno3,ph_hno4,ph_h2o2,ph_ch2or,ph_ch2om,ph_ch3cho, &
106 ph_ch3coch3,ph_ch3coc2h5,ph_hcocho,ph_ch3cocho, &
107 ph_hcochest,ph_ch3o2h,ph_ch3coo2h,ph_ch3ono2,ph_hcochob,&
108 ids,ide, jds,jde, kds,kde, &
109 ims,ime, jms,jme, kms,kme, &
110 its,ite, jts,jte, kts,kte )
111
112 CASE (RADM2SORG)
113 CALL wrf_debug(15,'calling radm2 from mechanism_driver')
114 vcsulf_old(its:ite,kts:kte,jts:jte) = &
115 max(chem(its:ite,kts:kte,jts:jte,p_sulf),epsilc)
116 call radm_driver(id,ktauc,dtstepc,config_flags, &
117 gmt,julday,t_phy,moist,p8w,t8w, &
118 p_phy,chem,rho_phy,dz8w,z,z_at_w,vdrog3, &
119 ph_o31d,ph_o33p,ph_no2,ph_no3o2,ph_no3o,ph_hno2, &
120 ph_hno3,ph_hno4,ph_h2o2,ph_ch2or,ph_ch2om,ph_ch3cho, &
121 ph_ch3coch3,ph_ch3coc2h5,ph_hcocho,ph_ch3cocho, &
122 ph_hcochest,ph_ch3o2h,ph_ch3coo2h,ph_ch3ono2,ph_hcochob,&
123 ids,ide, jds,jde, kds,kde, &
124 ims,ime, jms,jme, kms,kme, &
125 its,ite, jts,jte, kts,kte )
126
127 CASE (RACM)
128 CALL wrf_debug(15,'calling racm from mechanism_driver')
129 call racm_driver(id,ktauc,dtstepc,config_flags, &
130 gmt,julday,t_phy,moist,p8w,t8w, &
131 p_phy,chem,rho_phy,dz8w,z,z_at_w,vdrog3, &
132 ph_macr,ph_o31d,ph_o33p,ph_no2,ph_no3o2,ph_no3o,ph_hno2,&
133 ph_hno3,ph_hno4,ph_h2o2,ph_ch2or,ph_ch2om,ph_ch3cho, &
134 ph_ch3coch3,ph_ch3coc2h5,ph_hcocho,ph_ch3cocho, &
135 ph_hcochest,ph_ch3o2h,ph_ch3coo2h,ph_ch3ono2,ph_hcochob,&
136 addt,addx,addc,etep,oltp,olip,cslp,limp,hc5p,hc8p,tolp, &
137 xylp,apip,isop,hc3p,ethp,o3p,tco3,mo2,o1d,olnn,rpho,xo2,&
138 ketp,olnd, &
139 ids,ide, jds,jde, kds,kde, &
140 ims,ime, jms,jme, kms,kme, &
141 its,ite, jts,jte, kts,kte )
142
143 CASE (RACMSORG_KPP,RADM2SORG_KPP)
144 vcsulf_old(its:ite,kts:kte,jts:jte) = max(chem(its:ite,kts:kte,jts:jte,p_sulf),epsilc)
145 CASE (RACMSORG)
146 CALL wrf_debug(15,'calling racm/sorgam from mechanism_driver')
147 vcsulf_old(its:ite,kts:kte,jts:jte) = max(chem(its:ite,kts:kte,jts:jte,p_sulf),epsilc)
148 call racm_driver(id,ktauc,dtstepc,config_flags, &
149 gmt,julday,t_phy,moist,p8w,t8w, &
150 p_phy,chem,rho_phy,dz8w,z,z_at_w,vdrog3, &
151 ph_macr,ph_o31d,ph_o33p,ph_no2,ph_no3o2,ph_no3o,ph_hno2,&
152 ph_hno3,ph_hno4,ph_h2o2,ph_ch2or,ph_ch2om,ph_ch3cho, &
153 ph_ch3coch3,ph_ch3coc2h5,ph_hcocho,ph_ch3cocho, &
154 ph_hcochest,ph_ch3o2h,ph_ch3coo2h,ph_ch3ono2,ph_hcochob,&
155 addt,addx,addc,etep,oltp,olip,cslp,limp,hc5p,hc8p,tolp, &
156 xylp,apip,isop,hc3p,ethp,o3p,tco3,mo2,o1d,olnn,rpho,xo2,&
157 ketp,olnd, &
158 ids,ide, jds,jde, kds,kde, &
159 ims,ime, jms,jme, kms,kme, &
160 its,ite, jts,jte, kts,kte )
161
162 CASE (CBMZ, CBMZ_BB, CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_8BIN, &
163 CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ)
164 CALL wrf_debug(15,'calling cbmz_driver from mechanism_driver')
165 call cbmz_driver(id,ktau,dtstep,ktauc,dtstepc, &
166 config_flags, &
167 gmt,julday,t_phy,moist,p8w,t8w, &
168 p_phy,chem,rho_phy,dz8w,z,z_at_w,vdrog3, &
169 ph_o31d,ph_o33p,ph_no2,ph_no3o2,ph_no3o,ph_hno2, &
170 ph_hno3,ph_hno4,ph_h2o2,ph_ch2or,ph_ch2om, &
171 ph_ch3o2h,ph_n2o5, &
172 ids,ide, jds,jde, kds,kde, &
173 ims,ime, jms,jme, kms,kme, &
174 its,ite, jts,jte, kts,kte )
175
176 CASE DEFAULT
177
178 END SELECT chem_select
179
180
181 END subroutine mechanism_driver