Changeset 3820 for palm/trunk/SOURCE
- Timestamp:
- Mar 27, 2019 11:53:41 AM (6 years ago)
- Location:
- palm/trunk/SOURCE
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/chem_gasphase_mod.f90
r3799 r3820 82 82 PUBLIC :: chem_gasphase_integrate 83 83 PUBLIC :: initialize_kpp_ctrl 84 PUBLIC :: get_mechanism name84 PUBLIC :: get_mechanism_name 85 85 86 86 ! END OF MODULE HEADER TEMPLATE … … 114 114 ! 115 115 ! File : chem_gasphase_mod_Parameters.f90 116 ! Time : Fri Mar 15 16:28:292019117 ! Working directory : /home/forkel-r/palmstuff/work/trunk201903 15/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm116 ! Time : Wed Mar 27 09:51:40 2019 117 ! Working directory : /home/forkel-r/palmstuff/work/trunk20190327/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm 118 118 ! Equation file : chem_gasphase_mod.kpp 119 119 ! Output root filename : chem_gasphase_mod … … 191 191 ! 192 192 ! File : chem_gasphase_mod_Global.f90 193 ! Time : Fri Mar 15 16:28:292019194 ! Working directory : /home/forkel-r/palmstuff/work/trunk201903 15/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm193 ! Time : Wed Mar 27 09:51:40 2019 194 ! Working directory : /home/forkel-r/palmstuff/work/trunk20190327/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm 195 195 ! Equation file : chem_gasphase_mod.kpp 196 196 ! Output root filename : chem_gasphase_mod … … 256 256 ! 257 257 ! File : chem_gasphase_mod_JacobianSP.f90 258 ! Time : Fri Mar 15 16:28:292019259 ! Working directory : /home/forkel-r/palmstuff/work/trunk201903 15/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm258 ! Time : Wed Mar 27 09:51:40 2019 259 ! Working directory : /home/forkel-r/palmstuff/work/trunk20190327/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm 260 260 ! Equation file : chem_gasphase_mod.kpp 261 261 ! Output root filename : chem_gasphase_mod … … 300 300 ! 301 301 ! File : chem_gasphase_mod_Monitor.f90 302 ! Time : Fri Mar 15 16:28:292019303 ! Working directory : /home/forkel-r/palmstuff/work/trunk201903 15/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm302 ! Time : Wed Mar 27 09:51:40 2019 303 ! Working directory : /home/forkel-r/palmstuff/work/trunk20190327/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm 304 304 ! Equation file : chem_gasphase_mod.kpp 305 305 ! Output root filename : chem_gasphase_mod … … 362 362 ! 363 363 ! File : chem_gasphase_mod_Initialize.f90 364 ! Time : Fri Mar 15 16:28:292019365 ! Working directory : /home/forkel-r/palmstuff/work/trunk201903 15/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm364 ! Time : Wed Mar 27 09:51:40 2019 365 ! Working directory : /home/forkel-r/palmstuff/work/trunk20190327/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm 366 366 ! Equation file : chem_gasphase_mod.kpp 367 367 ! Output root filename : chem_gasphase_mod … … 388 388 ! 389 389 ! File : chem_gasphase_mod_Integrator.f90 390 ! Time : Fri Mar 15 16:28:292019391 ! Working directory : /home/forkel-r/palmstuff/work/trunk201903 15/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm390 ! Time : Wed Mar 27 09:51:40 2019 391 ! Working directory : /home/forkel-r/palmstuff/work/trunk20190327/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm 392 392 ! Equation file : chem_gasphase_mod.kpp 393 393 ! Output root filename : chem_gasphase_mod … … 446 446 ! 447 447 ! File : chem_gasphase_mod_LinearAlgebra.f90 448 ! Time : Fri Mar 15 16:28:292019449 ! Working directory : /home/forkel-r/palmstuff/work/trunk201903 15/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm448 ! Time : Wed Mar 27 09:51:40 2019 449 ! Working directory : /home/forkel-r/palmstuff/work/trunk20190327/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm 450 450 ! Equation file : chem_gasphase_mod.kpp 451 451 ! Output root filename : chem_gasphase_mod … … 473 473 ! 474 474 ! File : chem_gasphase_mod_Jacobian.f90 475 ! Time : Fri Mar 15 16:28:292019476 ! Working directory : /home/forkel-r/palmstuff/work/trunk201903 15/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm475 ! Time : Wed Mar 27 09:51:40 2019 476 ! Working directory : /home/forkel-r/palmstuff/work/trunk20190327/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm 477 477 ! Equation file : chem_gasphase_mod.kpp 478 478 ! Output root filename : chem_gasphase_mod … … 500 500 ! 501 501 ! File : chem_gasphase_mod_Function.f90 502 ! Time : Fri Mar 15 16:28:292019503 ! Working directory : /home/forkel-r/palmstuff/work/trunk201903 15/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm502 ! Time : Wed Mar 27 09:51:40 2019 503 ! Working directory : /home/forkel-r/palmstuff/work/trunk20190327/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm 504 504 ! Equation file : chem_gasphase_mod.kpp 505 505 ! Output root filename : chem_gasphase_mod … … 529 529 ! 530 530 ! File : chem_gasphase_mod_Rates.f90 531 ! Time : Fri Mar 15 16:28:292019532 ! Working directory : /home/forkel-r/palmstuff/work/trunk201903 15/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm531 ! Time : Wed Mar 27 09:51:40 2019 532 ! Working directory : /home/forkel-r/palmstuff/work/trunk20190327/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm 533 533 ! Equation file : chem_gasphase_mod.kpp 534 534 ! Output root filename : chem_gasphase_mod … … 555 555 ! 556 556 ! File : chem_gasphase_mod_Util.f90 557 ! Time : Fri Mar 15 16:28:292019558 ! Working directory : /home/forkel-r/palmstuff/work/trunk201903 15/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm557 ! Time : Wed Mar 27 09:51:40 2019 558 ! Working directory : /home/forkel-r/palmstuff/work/trunk20190327/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm 559 559 ! Equation file : chem_gasphase_mod.kpp 560 560 ! Output root filename : chem_gasphase_mod … … 662 662 END INTERFACE kppdecomp 663 663 664 INTERFACE get_mechanism name665 MODULE PROCEDURE get_mechanism name666 END INTERFACE get_mechanism name664 INTERFACE get_mechanism_name 665 MODULE PROCEDURE get_mechanism_name 666 END INTERFACE get_mechanism_name 667 667 668 668 INTERFACE chem_gasphase_integrate … … 690 690 ! 691 691 ! Following line is just to avoid compiler message about unused variables 692 IF ( lu_crow(1) == 1 .OR. lu_icol(1) == 1 .OR. lu_irow(1) == 1 ) CONTINUE692 IF ( lu_crow(1) == 1 .OR. lu_icol(1) == 1 .OR. lu_irow(1) == 1 ) CONTINUE 693 693 ! 694 694 … … 778 778 779 779 ! Following line is just to avoid compiler message about unused variables 780 IF ( f(nfix) > 0.0_dp ) CONTINUE780 IF ( f(nfix) > 0.0_dp ) CONTINUE 781 781 ! 782 782 ! Computation of equation rates … … 825 825 ! 826 826 ! Following line is just to avoid compiler message about unused variables 827 IF ( f(nfix) > 0.0_dp ) CONTINUE827 IF ( f(nfix) > 0.0_dp ) CONTINUE 828 828 829 829 ! B(1) = dA(1)/dV(3) … … 972 972 ! 973 973 ! Following line is just to avoid compiler message about unused variables 974 IF ( incx == 0 ) CONTINUE974 IF ( incx == 0 ) CONTINUE 975 975 976 976 IF (alpha .eq. one)RETURN … … 1038 1038 ! 1039 1039 ! Following line is just to avoid compiler message about unused variables 1040 IF ( incx == 0 .OR. incy == 0 ) CONTINUE1040 IF ( incx == 0 .OR. incy == 0 ) CONTINUE 1041 1041 IF (alpha .eq. zero)RETURN 1042 1042 IF (n .le. 0)RETURN … … 1773 1773 ! 1774 1774 ! Following line is just to avoid compiler message about unused variables 1775 IF ( pivot(1) == 0 ) CONTINUE1775 IF ( pivot(1) == 0 ) CONTINUE 1776 1776 1777 1777 #ifdef full_algebra … … 2291 2291 END SUBROUTINE kppdecomp 2292 2292 2293 SUBROUTINE get_mechanism name2293 SUBROUTINE get_mechanism_name 2294 2294 2295 2295 IMPLICIT NONE … … 2299 2299 2300 2300 RETURN 2301 END SUBROUTINE get_mechanism name2301 END SUBROUTINE get_mechanism_name 2302 2302 2303 2303 -
palm/trunk/SOURCE/chem_modules.f90
r3780 r3820 27 27 ! ----------------- 28 28 ! $Id$ 29 ! renamed do_emis to emissions_anthropogenic, removed USE statistics, variables sorted by type 30 ! 31 ! 32 ! 3780 2019-03-05 11:19:45Z forkel 29 33 ! added cs_mech 30 !31 34 ! 32 35 ! 3652 2019-01-07 15:29:59Z forkel 33 36 ! parameter chem_mechanism added (basit) 34 !35 37 ! 36 38 ! 3636 2018-12-19 13:48:34Z raasch … … 60 62 ! @author Sabine Banzhaf 61 63 ! @author Emmanuele Russo 64 ! @author Edward C. Chan 62 65 ! 63 66 !------------------------------------------------------------------------------! … … 77 80 USE kinds 78 81 79 USE statistics, &80 ONLY: pr_palm81 82 83 82 IMPLICIT NONE 84 83 … … 88 87 PUBLIC spc_names 89 88 90 INTEGER(iwp), DIMENSION(99) :: cs_pr_index = 0 91 INTEGER(iwp) :: ibc_cs_b !< integer flag for bc_cs_b 92 INTEGER(iwp) :: ibc_cs_t !< integer flag for bc_cs_t 93 INTEGER(iwp) :: cs_pr_count = 0 94 INTEGER(iwp) :: max_pr_cs = 0 95 INTEGER(iwp) :: cs_vertical_gradient_level_ind(99,10) = -9999 !< grid index values of cs_vertical_gradient_level_ind(s) 89 CHARACTER (LEN=20) :: bc_cs_b = 'dirichlet' !< namelist parameter 90 CHARACTER (LEN=20) :: bc_cs_t = 'initial_gradient' !< namelist parameter 91 CHARACTER (LEN=30) :: chem_mechanism = 'phstatp' !< KPP chmical mechanism 92 CHARACTER (LEN=11), DIMENSION(99) :: cs_name = 'novalue' !< Namelist parameter: chem spcs names 93 CHARACTER (LEN=11), DIMENSION(99) :: cs_profile_name = 'novalue' !< Namelist parameter: Names of the chem for profiles 94 CHARACTER (LEN=11), DIMENSION(99) :: data_output_pr_cs = 'novalue' !< Namelist parameter: Names of the chem species for profile output 95 !< by cs_name for each height lvls defined by cs_heights 96 CHARACTER (LEN=80) :: daytype_mdh ='workday' !< Type of day in the MDH case: workday, weekend, holiday 97 CHARACTER (LEN=80) :: mode_emis ='PARAMETERIZED' !< Mode of chemistry emissions: DEFAULT .OR. EXPERT .OR. 98 !< PARAMETERIZED 99 CHARACTER (LEN=11), DIMENSION(99) :: surface_csflux_name = 'novalue' !< Namelist parameter: chem species names with surface fluxes specified 100 !< active chem spcs, default is 'novalue') ???? 101 CHARACTER (LEN=80) :: time_fac_type ='MDH' !< Type of time treatment in the emis DEFAULT mode: HOUR .OR. MDH 96 102 97 LOGICAL :: constant_top_csflux(99) = .TRUE. !< chem spcs at the top orig .TRUE. 98 LOGICAL :: constant_csflux(99) = .TRUE. !< chem spcs at namelist parameter orig TRUE 99 LOGICAL :: call_chem_at_all_substeps = .FALSE. !< namelist parameter 100 LOGICAL :: chem_debug0 = .FALSE. !< namelist parameter flag for minimum print output 101 LOGICAL :: chem_debug1 = .FALSE. !< namelist parameter flag for print output 102 LOGICAL :: chem_debug2 = .FALSE. !< namelist parameter flag for further print output 103 LOGICAL :: chem_gasphase_on = .TRUE. !< namelist parameter 104 LOGICAL :: emission_output_required = .TRUE. !< Logical Variable for requiring Emission Outputs 105 LOGICAL :: do_emis = .FALSE. !< Flag for turning on chemistry emissions 106 LOGICAL :: cs_pr_namelist_found = .FALSE. !< Namelist parameter: Names of t 107 LOGICAL :: do_depo = .FALSE. !< namelist parameter for activation of deposition calculation 103 INTEGER(iwp), DIMENSION(99) :: cs_pr_index = 0 !< index for chemical species profile (ecc) 104 INTEGER(iwp) :: cs_pr_count = 0 !< namelist parameter : No. of species profiles (ecc) 105 INTEGER(iwp) :: cs_vertical_gradient_level_ind(99,10) = -9999 !< grid index values of cs_vertical_gradient_level_ind(s) 106 INTEGER(iwp) :: ibc_cs_b !< integer flag for bc_cs_b 107 INTEGER(iwp) :: ibc_cs_t !< integer flag for bc_cs_t 108 INTEGER(iwp),ALLOCATABLE,DIMENSION(:) :: match_spec_input !< Index of Input chem species for matching routine 109 INTEGER(iwp),ALLOCATABLE,DIMENSION(:) :: match_spec_model !< Index of Model chem species for matching routine 110 INTEGER(iwp),DIMENSION(:) :: match_spec_nox(1:2) !< results of matching the input and model's NOx 111 INTEGER(iwp),DIMENSION(:) :: match_spec_pm(1:3) !< results of matching the input and model's PMs 112 INTEGER(iwp),DIMENSION(:) :: match_spec_sox(1:2) !< results of matching the input and model's SOx! 113 INTEGER(iwp),ALLOCATABLE,DIMENSION(:) :: match_spec_voc_input !< index of VOC input components matching the model's VOCs 114 INTEGER(iwp),ALLOCATABLE,DIMENSION(:) :: match_spec_voc_model !< index of VOC model species matching the input VOCs comp. 115 INTEGER(iwp) :: main_street_id = 0 !< namelist parameter for chem_emissions : ID for main streets 116 INTEGER(iwp) :: max_pr_cs = 0 !< namelist parameter : Max no. of species profiles (ecc) 117 INTEGER(iwp) :: max_street_id = 0 !< namelist parameter for chem_emissions : maximum street IDs 118 INTEGER(iwp) :: nspec_out !< Output of routine chem_emis_matching with 119 INTEGER(iwp) :: side_street_id = 0 !< namelist paramtger for chem_emissions : ID for side streets 108 120 109 121 LOGICAL :: constant_top_csflux(99) = .TRUE. !< chem spcs at the top orig .TRUE. 122 LOGICAL :: constant_csflux(99) = .TRUE. !< chem spcs at namelist parameter orig TRUE 123 LOGICAL :: call_chem_at_all_substeps = .FALSE. !< namelist parameter 124 LOGICAL :: chem_debug0 = .FALSE. !< namelist parameter flag for minimum print output 125 LOGICAL :: chem_debug1 = .FALSE. !< namelist parameter flag for print output 126 LOGICAL :: chem_debug2 = .FALSE. !< namelist parameter flag for further print output 127 LOGICAL :: chem_gasphase_on = .TRUE. !< namelist parameter 128 LOGICAL :: emission_output_required = .TRUE. !< Logical Variable for requiring Emission Outputs 129 LOGICAL :: cs_pr_namelist_found = .FALSE. !< Namelist parameter: Names of t 130 LOGICAL :: deposition_dry = .FALSE. !< namelist parameter for activation of deposition calculation 131 LOGICAL :: emissions_anthropogenic = .FALSE. !< Flag for turning on anthropogenic emissions 110 132 ! 111 133 !-- Namelist parameters for creating initial chemistry profiles 112 REAL(wp) :: wall_csflux (99,0:5) = 0.0_wp !< namelist parameter 113 REAL(wp) :: cs_vertical_gradient (99,10) = 0.0_wp !< namelist parameter 114 REAL(wp) :: cs_vertical_gradient_level (99,10) = -999999.9_wp !< namelist parameter 115 REAL(wp) :: top_csflux ( 99 ) = 0.0_wp !< namelist parameter 116 REAL(wp) :: cs_surface_initial_change(99) = 0.0_wp !< namelist parameter 117 REAL(wp) :: surface_csflux(99 ) = 0.0_wp !< namelist parameter: fluxes where 'surface_csflux_name' is in the namelist 134 REAL(wp) :: cs_surface_initial_change(99) = 0.0_wp !< namelist parameter : initial surface flux difference 135 REAL(wp) :: cs_vertical_gradient(99,10) = 0.0_wp !< namelist parameter : vertical gradient 136 REAL(wp) :: cs_vertical_gradient_level(99,10) = -999999.9_wp !< namelist parameter : vertical gradient level 137 REAL(wp) :: surface_csflux(99) = 0.0_wp !< namelist parameter : fluxes where 'surface_csflux_name' is 138 !< in the namelist 139 REAL(wp) :: top_csflux(99) = 0.0_wp !< namelist parameter : chemical species flux at ceiling 140 REAL(wp) :: wall_csflux(99,0:5) = 0.0_wp !< namelist parameter : chemical species flux lateral 141 REAL(wp), DIMENSION(:), ALLOCATABLE :: bc_cs_t_val !< chemical specices time value at BC 142 REAL(wp), DIMENSION(:,:,:), POINTER :: cs !< pointer: sgs chem spcs) 143 REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE, TARGET :: cs_1 !< pointer for swapping of timelevels for respective quantity 144 REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE, TARGET :: cs_2 !< pointer for swapping of timelevels for respective quantity 145 REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE, TARGET :: cs_3 !< pointer for swapping of timelevels for respective quantity 146 REAL(wp), DIMENSION(:,:,:), POINTER :: cs_p !< pointer: prognostic value of sgs chem spcs 147 REAL(wp), DIMENSION(:), ALLOCATABLE :: css !< scaling parameter for chem spcs 148 REAL(wp), DIMENSION(99,100) :: cs_profile = 9999999.9_wp !< Namelist parameter: Chem conc for each spcs defined 149 REAL(wp), DIMENSION(99,100) :: cs_heights = 9999999.9_wp !< Namelist parameter: Height lvls(m) for cs_profiles 150 REAL(wp), DIMENSION(99) :: cs_surface = 0.0_wp !< Namelist parameter: Surface conc of chem spcs' 151 REAL(wp),ALLOCATABLE, DIMENSION(:,:,:,:) :: emis_distribution !< Emissions Final Values (main module output) 152 REAL(wp) :: emiss_factor_main(99) = -9999.0_wp !< emission factor for main streets 153 REAL(wp) :: emiss_factor_side(99) = -9999.0_wp !< emission factor for side streets 154 REAL(wp), DIMENSION(:,:,:), POINTER :: tcs_m !< pointer: to tcs array (temp) 155 ! 156 !-- molecular weights 157 REAL, PARAMETER :: xm_air = 28.964e-3 !< air molecular weight (kg/mol) 158 REAL, PARAMETER :: xm_C = 12.01115e-3 !< C molecular weight (kg/mol) 159 REAL, PARAMETER :: xm_Ca = 40.07800e-3 !< Ca molecular weight (kg/mol) 160 REAL, PARAMETER :: xm_Cd = 112.41000e-3 !< Cd molecular weight (kg/mol) 161 REAL, PARAMETER :: xm_Cl = 35.45300e-3 !< Cl molecular weight (kg/mol) 162 REAL, PARAMETER :: xm_dummy = 1000.0e-3 !< dummy molecular weight (kg/mol) 163 REAL, PARAMETER :: xm_F = 18.99840e-3 !< F molecular weight (kg/mol) 164 REAL, PARAMETER :: xm_H = 1.00790e-3 !< H molecular weight (kg/mol) 165 REAL, PARAMETER :: xm_K = 39.09800e-3 !< K molecular weight (kg/mol) 166 REAL, PARAMETER :: xm_Mg = 24.30500e-3 !< Mg molecular weight (kg/mol) 167 REAL, PARAMETER :: xm_N = 14.00670e-3 !< N molecular weight (kg/mol) 168 REAL, PARAMETER :: xm_Na = 22.98977e-3 !< Na molecular weight (kg/mol) 169 REAL, PARAMETER :: xm_O = 15.99940e-3 !< O molecular weight (kg/mol) 170 REAL, PARAMETER :: xm_Pb = 207.20000e-3 !< Pb molecular weight (kg/mol) 171 REAL, PARAMETER :: xm_Pb210 = 210.00000e-3 !< Pb (210) molecular weight (kg/mol) 172 REAL, PARAMETER :: xm_Rn222 = 222.00000e-3 !< Rn (222) molecular weight (kg/mol) 173 REAL, PARAMETER :: xm_S = 32.06400e-3 !< S molecular weight (kg/mol) 174 REAL, PARAMETER :: xm_CO2 = xm_C + xm_O * 2 !< CO2 molecular weight (kg/mol) 175 REAL, PARAMETER :: xm_h2o = xm_H * 2 + xm_O !< H2O molecular weight (kg/mol) 176 REAL, PARAMETER :: xm_HNO3 = xm_H + xm_N + xm_O * 3 !< HNO3 molecular weight (kg/mol) 177 REAL, PARAMETER :: xm_o3 = xm_O * 3 !< O3 molecular weight (kg/mol) 178 REAL, PARAMETER :: xm_N2O5 = xm_N * 2 + xm_O * 5 !< N2O5 molecular weight (kg/mol) 179 REAL, PARAMETER :: xm_NH4 = xm_N + xm_H * 4 !< NH4 molecular weight (kg/mol) 180 REAL, PARAMETER :: xm_NO3 = xm_N + xm_O * 3 !< NO3 molecular weight (kg/mol) 181 REAL, PARAMETER :: xm_SO4 = xm_S + xm_O * 4 !< SO4 molecular weight (kg/mol) 118 182 119 REAL(wp), DIMENSION(:), ALLOCATABLE :: bc_cs_t_val 120 REAL(wp), DIMENSION(:), ALLOCATABLE :: css !< scaling parameter for chem spcs 121 REAL(wp), DIMENSION(99) :: cs_surface = 0.0_wp !< Namelist parameter: Surface conc of chem spcs' 122 REAL(wp), DIMENSION(99,100) :: cs_heights = 9999999.9_wp !< Namelist parameter: Height lvls(m) for cs_profiles 123 REAL(wp), DIMENSION(99,100) :: cs_profile = 9999999.9_wp !< Namelist parameter: Chem conc for each spcs defined 183 SAVE 124 184 125 !126 !-- Use pointers cs, cs_p and tcs_m to point arrays cs_1, cs_2, and cs_3127 REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE, TARGET :: cs_1 !< pointer for swapping of timelevels for respective quantity128 REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE, TARGET :: cs_2 !< pointer for swapping of timelevels for respective quantity129 REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE, TARGET :: cs_3 !< pointer for swapping of timelevels for respective quantity130 REAL(wp), DIMENSION(:,:,:), POINTER :: cs !< pointer: sgs chem spcs)131 REAL(wp), DIMENSION(:,:,:), POINTER :: cs_p !< pointer: prognostic value of sgs chem spcs132 REAL(wp), DIMENSION(:,:,:), POINTER :: tcs_m !< pointer:133 134 CHARACTER (LEN=20) :: bc_cs_b = 'dirichlet' !< namelist parameter135 CHARACTER (LEN=20) :: bc_cs_t = 'initial_gradient' !< namelist parameter136 CHARACTER (LEN=11), DIMENSION(99) :: cs_name = 'novalue' !< Namelist parameter: chem spcs names137 CHARACTER (LEN=11), DIMENSION(99) :: cs_profile_name = 'novalue' !< Namelist parameter: Names of the chem for profiles138 CHARACTER (LEN=11), DIMENSION(99) :: surface_csflux_name = 'novalue' !< Namelist parameter: chem species surface fluxes names139 !< active chem spcs, default is 'novalue') ????140 CHARACTER (LEN=80) :: mode_emis ='PARAMETERIZED' !< Mode of chemistry emissions: DEFAULT .OR. EXPERT .OR.141 !< PARAMETERIZED142 CHARACTER (LEN=80) :: time_fac_type ='MDH' !< Type of time treatment in the emis DEFAULT mode: HOUR .OR. MDH143 CHARACTER (LEN=80) :: daytype_mdh ='workday' !< Type of day in the MDH case: workday, weekend, holiday144 CHARACTER (LEN=11), DIMENSION(99) :: data_output_pr_cs = 'novalue' !< Namelist parameter: Names of the chem species for profile output145 !< by cs_name for each height lvls defined by cs_heights146 CHARACTER (LEN=30) :: chem_mechanism = 'phstatp' !< Namelist parameter: Name of chemistry mechanism147 !< (must match with third line in chem_gasphase_mod.f90)148 !149 !-- Namelist parameters for chem_emissions150 INTEGER(iwp) :: main_street_id = 0151 INTEGER(iwp) :: max_street_id = 0152 INTEGER(iwp) :: side_street_id = 0153 !154 !-- Constant emission factors155 REAL(wp) :: emiss_factor_main ( 99 ) = -9999.0_wp156 REAL(wp) :: emiss_factor_side ( 99 ) = -9999.0_wp157 !158 !-- Other Emissions Variables159 INTEGER(iwp) :: nspec_out !< Output of routine chem_emis_matching with160 !< number of matched species161 REAL(wp),ALLOCATABLE, DIMENSION(:,:,:,:) :: emis_distribution !> Emissions Final Values (main module output)162 163 INTEGER(iwp),ALLOCATABLE,DIMENSION(:) :: match_spec_input !< Index of Input chem species for matching routine164 INTEGER(iwp),ALLOCATABLE,DIMENSION(:) :: match_spec_model !< Index of Model chem species for matching routine165 INTEGER(iwp),ALLOCATABLE,DIMENSION(:) :: match_spec_voc_input !< index of VOC input components matching the model's VOCs166 INTEGER(iwp),ALLOCATABLE,DIMENSION(:) :: match_spec_voc_model !< index of VOC model species matching the input VOCs comp.167 INTEGER(iwp),DIMENSION(:) :: match_spec_pm(1:3) !< results of matching the input and model's PMs168 INTEGER(iwp),DIMENSION(:) :: match_spec_nox(1:2) !< results of matching the input and model's NOx169 INTEGER(iwp),DIMENSION(:) :: match_spec_sox(1:2) !< results of matching the input and model's SOx!170 171 172 !173 !-- Selected atomic/molecular weights:174 REAL, PARAMETER :: xm_H = 1.00790e-3 !< kg/mol175 REAL, PARAMETER :: xm_N = 14.00670e-3 !< kg/mol176 REAL, PARAMETER :: xm_C = 12.01115e-3 !< kg/mol177 REAL, PARAMETER :: xm_S = 32.06400e-3 !< kg/mol178 REAL, PARAMETER :: xm_O = 15.99940e-3 !< kg/mol179 REAL, PARAMETER :: xm_F = 18.99840e-3 !< kg/mol180 REAL, PARAMETER :: xm_Na = 22.98977e-3 !< kg/mol181 REAL, PARAMETER :: xm_Cl = 35.45300e-3 !< kg/mol182 REAL, PARAMETER :: xm_Rn222 = 222.00000e-3 !< kg/mol183 REAL, PARAMETER :: xm_Pb210 = 210.00000e-3 !< kg/mol184 REAL, PARAMETER :: xm_Ca = 40.07800e-3 !< kg/mol185 REAL, PARAMETER :: xm_K = 39.09800e-3 !< kg/mol186 REAL, PARAMETER :: xm_Mg = 24.30500e-3 !< kg/mol187 REAL, PARAMETER :: xm_Pb = 207.20000e-3 !< kg/mol188 REAL, PARAMETER :: xm_Cd = 112.41000e-3 !< kg/mol189 190 REAL, PARAMETER :: xm_h2o = xm_H * 2 + xm_O !< kg/mol191 REAL, PARAMETER :: xm_o3 = xm_O * 3 !< kg/mol192 REAL, PARAMETER :: xm_N2O5 = xm_N * 2 + xm_O * 5 !< kg/mol193 REAL, PARAMETER :: xm_HNO3 = xm_H + xm_N + xm_O * 3 !< kg/mol194 REAL, PARAMETER :: xm_NH4 = xm_N + xm_H * 4 !< kg/mol195 REAL, PARAMETER :: xm_SO4 = xm_S + xm_O * 4 !< kg/mol196 REAL, PARAMETER :: xm_NO3 = xm_N + xm_O * 3 !< kg/mol197 REAL, PARAMETER :: xm_CO2 = xm_C + xm_O * 2 !< kg/mol198 199 !200 !-- mass of air201 REAL, PARAMETER :: xm_air = 28.964e-3 !< kg/mol202 203 !204 !-- dummy weight, used for complex molecules:205 REAL, PARAMETER :: xm_dummy = 1000.0e-3 ! kg/mol206 207 208 SAVE209 185 END MODULE chem_modules 210 -
palm/trunk/SOURCE/chemistry_model_mod.f90
r3796 r3820 27 27 ! ----------------- 28 28 ! $Id: chemistry_model_mod.f90 3784 2019-03-05 14:16:20Z banzhafs 29 ! renamed get_mechanismname to get_mechanism_name 30 ! renamed do_emiss to emissions_anthropogenic and do_depo to deposition_dry (ecc) 31 ! 32 ! 3784 2019-03-05 14:16:20Z banzhafs 29 33 ! Unused variables removed/taken care of 30 34 ! … … 303 307 304 308 USE chem_gasphase_mod, & 305 ONLY: atol, chem_gasphase_integrate, get_mechanism name, nkppctrl, nmaxfixsteps,&309 ONLY: atol, chem_gasphase_integrate, get_mechanism_name, nkppctrl, nmaxfixsteps, & 306 310 nphot, nreact, nspec, nvar, phot_names, rtol, spc_names, t_steps, vl_dim 307 311 … … 1195 1199 ENDIF 1196 1200 !-- check for chemical mechanism used 1197 CALL get_mechanism name1201 CALL get_mechanism_name 1198 1202 IF (chem_mechanism /= trim(cs_mech) ) THEN 1199 1203 message_string = 'Incorrect chemistry mechanism selected, check spelling in namelist and/or chem_gasphase_mod' … … 1640 1644 ! 1641 1645 ! Get name of chemical mechanism from chem_gasphase_mod 1642 CALL get_mechanism name1646 CALL get_mechanism_name 1643 1647 1644 1648 !-- Write chemistry model header … … 1773 1777 1774 1778 1775 IF ( do_emis) CALL chem_emissions_init1779 IF ( emissions_anthropogenic ) CALL chem_emissions_init 1776 1780 ! 1777 1781 !-- Chemistry variables will be initialized if availabe from dynamic … … 1818 1822 INTEGER(iwp) :: lpr_lev !< running index for chem spcs profile level 1819 1823 1820 IF ( do_emis) THEN1824 IF ( emissions_anthropogenic ) THEN 1821 1825 CALL netcdf_data_input_chemistry_data( chem_emis_att, chem_emis ) 1822 1826 ENDIF … … 2202 2206 cs_profile, & 2203 2207 cs_surface, & 2208 cs_surface_initial_change, & 2209 cs_vertical_gradient_level, & 2210 daytype_mdh, & 2204 2211 decycle_chem_lr, & 2205 2212 decycle_chem_ns, & 2206 2213 decycle_method, & 2207 do_depo, & 2214 deposition_dry, & 2215 emissions_anthropogenic & 2208 2216 emiss_factor_main, & 2209 2217 emiss_factor_side, & … … 2211 2219 main_street_id, & 2212 2220 max_street_id, & 2221 mode_emis, & 2213 2222 my_steps, & 2214 2223 nest_chemistry, & … … 2221 2230 surface_csflux, & 2222 2231 surface_csflux_name, & 2223 cs_surface_initial_change, & 2224 cs_vertical_gradient_level, & 2225 ! namelist parameters for emissions 2226 mode_emis, & 2227 time_fac_type, & 2228 daytype_mdh, & 2229 do_emis 2232 time_fac_type, 2230 2233 2231 2234 !-- analogue to chem_names(nspj) we could invent chem_surfaceflux(nspj) and chem_topflux(nspj) … … 3306 3309 3307 3310 ! 3308 !-- Get vd3311 !-- Get deposition velocity vd 3309 3312 DO lsp = 1, nvar 3310 3313 ! -
palm/trunk/SOURCE/prognostic_equations.f90
r3797 r3820 25 25 ! ----------------- 26 26 ! $Id$ 27 ! renamed do_depo to deposition_dry (ecc) 28 ! 29 ! 3797 2019-03-15 11:15:38Z forkel 27 30 ! Call chem_integegrate in OpenMP loop (ketelsen) 28 31 ! … … 372 375 373 376 USE chem_modules, & 374 ONLY: call_chem_at_all_substeps, chem_gasphase_on, cs_name, do_depo 377 ONLY: call_chem_at_all_substeps, chem_gasphase_on, cs_name, & 378 deposition_dry 375 379 376 380 USE chem_photolysis_mod, & … … 546 550 CALL cpu_log( log_point_s(19), 'chem.reactions', 'stop' ) 547 551 548 IF ( d o_depo) THEN552 IF ( deposition_dry ) THEN 549 553 CALL cpu_log( log_point_s(24), 'chem.deposition', 'start' ) 550 554 DO i = nxl, nxr -
palm/trunk/SOURCE/time_integration.f90
r3774 r3820 25 25 ! ----------------- 26 26 ! $Id$ 27 ! renamed do_emiss to emissions_anthropogenic (ecc) 28 ! 29 ! 30 ! 3774 2019-03-04 10:52:49Z moh.hefny 27 31 ! rephrase if statement to avoid unallocated array in case of 28 32 ! nesting_offline is false (crashing during debug mode) … … 486 490 487 491 USE chem_modules, & 488 ONLY: bc_cs_t_val, cs_name, do_emis, nspec, nspec_out492 ONLY: bc_cs_t_val, cs_name, emissions_anthropogenic, nspec, nspec_out 489 493 490 494 USE chemistry_model_mod, & … … 1386 1390 ! 1387 1391 !-- If required, consider chemical emissions 1388 IF ( air_chemistry .AND. do_emis) THEN1392 IF ( air_chemistry .AND. emissions_anthropogenic ) THEN 1389 1393 ! 1390 1394 !-- Update the time --> kanani: revise location of this CALL
Note: See TracChangeset
for help on using the changeset viewer.