123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- !### macro's #####################################################
- !
- #define TRACEBACK write (gol,'("in ",a," (",a,", line",i5,")")') rname, __FILE__, __LINE__; call goErr
- #define IF_NOTOK_RETURN(action) if (status/=0) then; TRACEBACK; action; return; end if
- #define IF_ERROR_RETURN(action) if (status> 0) then; TRACEBACK; action; return; end if
- !
- #include "tm5.inc"
- !
- !#################################################################
- module chem_param
- use GO, only : gol, goPr, goErr
- use binas, only : xmair
- use reaction_data
- use deposition_data
- implicit none
- !
- ! definition of the chemistry: #reactions, order of species, etc.
- ! parameters needed for chemistry and rate constants
- !
- ! nmark: number of 'marked' tracers
- integer, parameter :: nmark = 1
- character(len=8),dimension(nmark) :: marknam = (/ 'test ' /)
- ! ntrace: number of tracers for chemistry
- integer, parameter :: ntrace = 10
- ! ntracet: number of transported tracers
- integer, parameter :: ntracet = 5 !
- ! ntrace_chem: non-transported tracers
- integer, parameter :: ntrace_chem = ntrace-ntracet
- ! maxtrace: total number of tracers
- integer, parameter :: maxtrace = ntrace + 0
- !
- ! components numbers
- !
- integer, parameter :: itracer=1
- !
- ! additional fields used in chemistry routine alone
- ! (more meteo-like files in units different from #/cm3)
- !
- integer,parameter :: n_extra = 0
- integer,parameter :: nstd = 1
- integer, dimension(nstd), parameter :: istd = (/ itracer /)
- !
- ! species name
- !
- integer, parameter :: tracer_name_len = 8
- character(len=tracer_name_len), parameter :: names(maxtrace) = (/ &
- 'TEST1 ', 'TEST2 ', 'TEST3 ', 'TEST4 ', 'TEST5 ', &
- 'TEST6 ', 'TEST7 ', 'TEST8 ', 'TEST9 ', 'TEST10 ' /)
- ! molar weights of components
- real, parameter :: xmh = 1.0079
- real, parameter :: xmn = 14.0067
- real, parameter :: xmc = 12.01115
- real, parameter :: xms = 32.064
- real, parameter :: xmo = 15.9994
- real, parameter :: xmcl = 35.453
- ! real, parameter :: xmo3=xmo*3
- ! real, parameter :: xmnox=xmn
- ! real, parameter :: xmh2o2=xmo*2.+xmh*2.
- ! real, parameter :: xmch4=xmc+xmh*4.
- ! real, parameter :: xmco=xmc+xmo
- ! real, parameter :: xmhno3=xmh+xmn+xmo*3.
- ! real, parameter :: xmmepe=xmc+xmh*4.+xmo*2.
- ! real, parameter :: xmch2o=xmc+xmh*2.+xmo
- ! real, parameter :: xmno=xmn+xmo
- ! real, parameter :: xmho2=xmh+xmo*2.
- ! real, parameter :: xmch3o2=xmc+2.*xmo+3.*xmh
- ! real, parameter :: xmoh=xmo+xmh
- ! real, parameter :: xmno2=xmn+2.*xmo
- ! real, parameter :: xmno3=xmn+3.*xmo
- ! real, parameter :: xmn2o5=2.*xmn+5.*xmo
- ! real, parameter :: xmhno4=xmn+4.*xmo+xmh
- ! !FD real, parameter :: xmair=28.94
- ! real, parameter :: xmh2o=xmh*2+xmo
- ! ! xmpar is the results of the CBM4 implementation...calculate as C
- ! real, parameter :: xmpar=xmc
- ! real, parameter :: xmeth=2.*xmc
- ! real, parameter :: xmole=2.*xmc
- ! real, parameter :: xmisop=5.*xmc+8.*xmh
- ! real, parameter :: xmgly=3.*xmc
- ! real, parameter :: xmald2=2.*xmc
- ! real, parameter :: xmc2o3=2.*xmc+3.*xmo+3.*xmh
- ! ! xmpan: ch3co-o2-no2
- ! real, parameter :: xmpan=2.*xmc+3.*xmh+3.*xmo+xmn+2.*xmo
- ! real, parameter :: xmror=2.*xmc+4.*xmh
- ! real, parameter :: xmrxpar=xmc
- ! real, parameter :: xmrooh=xmc+3.*xmh+2*xmo
- ! real, parameter :: xmorgntr=xmn
- ! real, parameter :: xmxo2=2.*xmo+xmc
- ! real, parameter :: xmxo2n=2.*xmo+xmc
- ! ! attention xmso2: conversion emissions done when added...
- ! real, parameter :: xmso2=xms+2.*xmo
- ! real, parameter :: xmdms=xms+2*xmc+6*xmh
- ! ! attention xmnh3: conversion emissions when added...
- ! real, parameter :: xmnh3=xmn+3.*xmh
- ! ! attention xmnh4: conversion emissions when added...
- ! real, parameter :: xmnh4=xmn+4.*xmh
- ! real, parameter :: xmmsa=xms+xmc+3*xmo+4*xmh
- ! real, parameter :: xmnh2=xmn+xmh*2.
- ! real, parameter :: xmso4=xms+4.*xmo
- ! real, parameter :: xmno3_a=xmn+xmo*3
- ! real, parameter :: xmrn222=222.
- ! real, parameter :: xmpb210=210.
- ! ! xmnmv: this is a dummy molecular mass
- ! real, parameter :: xmnmv=999.
- ! used in wet_depos ...
- real, parameter :: xmhno3 = xmh + xmn + xmo*3.0
- real,dimension(maxtrace),parameter :: ra = &
- (/ xmair, xmair, xmair, xmair, xmair, &
- xmair, xmair, xmair, xmair, xmair /)
- real,dimension(maxtrace),parameter :: fscale = xmair/ra(:)
- real,dimension(maxtrace),parameter :: uscale = xmair/ra(:)
- ! fscale(ntrace): scaling factor for conversion of mixing ratios
- ! in kg tracer per kg air to practical mixing ratio units (e.g. ppm)
- ! In this version: ratio of molecular weight of tracer to that of air
- ! ********************************************************************
- ! rates
- ! ********************************************************************
- ! heterogeneous removal rates
- real :: henry(ntracet,ntemp)
- ! ********************************************************************
- ! dummy tracers
- ! ********************************************************************
- ! dummy indices for tracers not included in this chemistry;
- ! comparision of tracer index with this numbers will fail ...
-
- integer, parameter :: ico = -999
- integer, parameter :: iso2 = -999
- integer, parameter :: iso4 = -998
- integer, parameter :: inh3 = -997
- integer, parameter :: ihno3 = -996
- integer, parameter :: ino = -995
- integer, parameter :: ino2 = -994
- integer, parameter :: inox = -993
- integer, parameter :: io3 = -992
- integer, parameter :: ihno4 = -991
- integer, parameter :: ih2o2 = -990
- integer, parameter :: ich4 = -989
- ! ********************************************************************
- ! aerosol
- ! ********************************************************************
- real, parameter :: density_ref = 1800.0 ! for 'reference' density calculations
- ! ********************************************************************
- ! dry deposition
- ! ********************************************************************
- ! number of tracers on which dry depositions should be applied:
- integer, parameter :: ndep = 0
- ! tracer indices on which dry depositions should be applied:
- integer, parameter :: idep(1) = (/ -999 /)
- ! deposition parameters:
-
- real, parameter :: ddep_diffrb(1) = (/ -999.9 /)
- real, parameter :: ddep_rsoil(1) = (/ -999.9 /)
- real, parameter :: ddep_rwat(1) = (/ -999.9 /)
- real, parameter :: ddep_rws(1) = (/ -999.9 /)
- real, parameter :: ddep_rsnow(1) = (/ -999.9 /)
- real, parameter :: ddep_rmes(1) = (/ -999.9 /)
- real, parameter :: ddep_rcut(1) = (/ -999.9 /)
- real, parameter :: ddep_diffcf(1) = (/ -999.9 /)
- ! some vd fields are copies:
- integer, parameter :: vd_ncopy = 0 ! dummy
- integer, parameter :: vd_copy_itarget(1) = (/ -999 /)
- integer, parameter :: vd_copy_isource(1) = (/ -999 /)
- ! number of aerosol bins used for deposition:
- integer, parameter :: nrdep = 0
-
- ! aerosol radii used for each bin:
- real, parameter :: lur(1) = (/ -999.9 /)
- ! ********************************************************************
- ! wet deposition
- ! ********************************************************************
- !
- ! nscav : selected species for scavenging
- ! nscav_index : index for scavenging:
- ! nscav_type : type of scavenging:
- ! 0 no scavenging
- ! 1 scavenging 100 % solubility assumed
- ! 2 scavenging henry solubility assumed
- ! 3 scavenging, aerosol removal assumed
- ! 4 scavenging, special case for SO2 with aq phase diss.
- !
- integer, parameter :: nscav = 0
- integer, parameter :: nscav_index(1) = (/ -999 /)
- ! note CMK CFD: wetS accounts for removal of SO2, so nscav_type = 0
- ! nh3 is taken out anyhow, since most will be scavenged
- ! by acidic falling frops below cloud
- integer, parameter :: nscav_type(1) = (/ -999 /)
- end module chem_param
|