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