1 !WRF:MODEL_LAYER:CHEMISTRY
3 SUBROUTINE photolysis_driver (id,ktau,dtstep, config_flags,haveaer,&
4 gmt,julday,t_phy,moist,aerwrf,p8w,t8w,p_phy, &
5 chem,rho_phy,dz8w,xlat,xlong,z_at_w,gd_cloud,gd_cloud2, &
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, &
11 tauaer1,tauaer2,tauaer3,tauaer4, &
12 gaer1,gaer2,gaer3,gaer4, &
13 waer1,waer2,waer3,waer4, &
14 pm2_5_dry,pm2_5_water,uvrad, &
15 ids,ide, jds,jde, kds,kde, &
16 ims,ime, jms,jme, kms,kme, &
17 its,ite, jts,jte, kts,kte )
19 !------------------------------------------------------------------------
21 USE module_state_description
22 USE module_model_constants
25 INTEGER, INTENT(IN ) :: id,julday, &
26 ids,ide, jds,jde, kds,kde, &
27 ims,ime, jms,jme, kms,kme, &
28 its,ite, jts,jte, kts,kte
29 INTEGER, INTENT(IN ) :: &
31 REAL, INTENT(IN ) :: &
34 ! advected moisture variables
36 REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_moist ), &
41 REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), &
43 pm2_5_dry,pm2_5_water, aerwrf
45 ! arrays that hold the photolysis rates
48 REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), &
50 ph_macr,ph_o31d,ph_o33p,ph_no2,ph_no3o2,ph_no3o,ph_hno2, &
51 ph_hno3,ph_hno4,ph_h2o2,ph_ch2or,ph_ch2om,ph_ch3cho, &
52 ph_ch3coch3,ph_ch3coc2h5,ph_hcocho,ph_ch3cocho, &
53 ph_hcochest,ph_ch3o2h,ph_ch3coo2h,ph_ch3ono2,ph_hcochob, &
55 REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), &
59 ! arrays that hold the aerosol optical properties
61 REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), &
63 tauaer1,tauaer2,tauaer3,tauaer4, &
64 gaer1,gaer2,gaer3,gaer4, &
65 waer1,waer2,waer3,waer4
67 ! array that holds all advected chemical species
69 REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_chem ), &
70 INTENT(INOUT ) :: chem
72 ! on input from meteorological part of model
74 REAL, DIMENSION( ims:ime , kms:kme , jms:jme ) , &
81 REAL, DIMENSION( ims:ime , jms:jme ) , &
82 INTENT(INOUT ) :: uvrad
83 REAL, DIMENSION( ims:ime , jms:jme ) , &
87 TYPE(grid_config_rec_type), INTENT(IN ) :: config_flags
89 LOGICAL, INTENT(IN) :: haveaer
95 !-----------------------------------------------------------------
97 IF (config_flags%phot_opt .eq. 0) return
99 ! select photolysis option
101 chem_phot_select: SELECT CASE(config_flags%phot_opt)
104 CALL wrf_debug(15,'calling madronich1_driver')
105 call madronich1_driver(id,ktau,dtstep,config_flags,haveaer, &
106 gmt,julday,t_phy,moist,aerwrf,p8w,t8w,p_phy, &
107 chem,rho_phy,dz8w,xlat,xlong,z_at_w,gd_cloud,gd_cloud2, &
108 ph_macr,ph_o31d,ph_o33p,ph_no2,ph_no3o2,ph_no3o,ph_hno2,&
109 ph_hno3,ph_hno4,ph_h2o2,ph_ch2or,ph_ch2om,ph_ch3cho, &
110 ph_ch3coch3,ph_ch3coc2h5,ph_hcocho,ph_ch3cocho, &
111 ph_hcochest,ph_ch3o2h,ph_ch3coo2h,ph_ch3ono2,ph_hcochob,&
112 pm2_5_dry,pm2_5_water,uvrad, &
113 ids,ide, jds,jde, kds,kde, &
114 ims,ime, jms,jme, kms,kme, &
115 its,ite, jts,jte, kts,kte )
117 call wrf_debug(15,'calling fastj_driver')
118 call fastj_driver(id,ktau,dtstep,config_flags, &
119 gmt,julday,t_phy,moist,p8w,p_phy, &
120 chem,rho_phy,dz8w,xlat,xlong,z_at_w, &
121 ph_o2,ph_o31d,ph_o33p,ph_no2,ph_no3o2,ph_no3o,ph_hno2, &
122 ph_hno3,ph_hno4,ph_h2o2,ph_ch2or,ph_ch2om,ph_ch3cho, &
123 ph_ch3coch3,ph_ch3coc2h5,ph_hcocho,ph_ch3cocho, &
124 ph_hcochest,ph_ch3o2h,ph_ch3coo2h,ph_ch3ono2,ph_hcochob,&
126 tauaer1,tauaer2,tauaer3,tauaer4, &
127 gaer1,gaer2,gaer3,gaer4, &
128 waer1,waer2,waer3,waer4, &
129 ids,ide, jds,jde, kds,kde, &
130 ims,ime, jms,jme, kms,kme, &
131 its,ite, jts,jte, kts,kte )
134 END SELECT chem_phot_select
136 END SUBROUTINE photolysis_driver