added README_changes.txt
[wrffire.git] / wrfv2_fire / chem / photolysis_driver.F
blobca42cb5da3fd79182f311f49453504a700ea79b4
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,  &
10                ph_n2o5,ph_o2,                                            &
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 !------------------------------------------------------------------------
20    USE module_configure
21    USE module_state_description
22    USE module_model_constants
23    USE module_phot_mad
24    USE module_phot_fastj
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   ) ::                                      &
30                                   ktau
31       REAL,      INTENT(IN   ) ::                                      &
32                              dtstep,gmt
34 ! advected moisture variables
36    REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_moist ),            &
37          INTENT(IN ) ::                                   moist
39 !  aerosol interaction
41    REAL, DIMENSION( ims:ime, kms:kme, jms:jme ),                       & 
42          INTENT(INOUT ) ::                                             &
43                pm2_5_dry,pm2_5_water, aerwrf
45 ! arrays that hold the photolysis rates
48    REAL, DIMENSION( ims:ime, kms:kme, jms:jme ),                       &  
49          INTENT(INOUT ) ::                                             &
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,    &
54            ph_n2o5,ph_o2
55    REAL, DIMENSION( ims:ime, kms:kme, jms:jme ),                       &  
56          INTENT(INOUT ) ::                                             &
57            gd_cloud,gd_cloud2
59 ! arrays that hold the aerosol optical properties
61    REAL, DIMENSION( ims:ime, kms:kme, jms:jme ),                       &  
62          INTENT(INOUT ) ::                                             &
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 )         ,           &
75           INTENT(IN   ) ::                                             &
76                                                       t_phy,           &
77                                                       p_phy,           &
78                                                       dz8w,            &
79                                               t8w,p8w,z_at_w ,         &
80                                                     rho_phy
81    REAL,  DIMENSION( ims:ime , jms:jme )                   ,           &
82           INTENT(INOUT   ) ::  uvrad
83    REAL,  DIMENSION( ims:ime , jms:jme )                   ,           &
84           INTENT(IN   ) ::                                             &
85                                                      xlat,             &
86                                                      xlong
87    TYPE(grid_config_rec_type),  INTENT(IN   )    :: config_flags
89    LOGICAL, INTENT(IN) :: haveaer
90 !         
91 !                                                    
92 ! LOCAL  VAR
95 !-----------------------------------------------------------------
97    IF (config_flags%phot_opt .eq. 0) return
99 ! select photolysis option
101    chem_phot_select: SELECT CASE(config_flags%phot_opt)
103      CASE (PHOTMAD)
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                               )
116      CASE (PHOTFASTJ)
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,&
125                ph_n2o5,                                                &
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                               )
132      CASE DEFAULT
134    END SELECT chem_phot_select
136 END SUBROUTINE photolysis_driver