diff --git a/src/LIB/MEGAN/.arbre2.txt.swp b/src/LIB/MEGAN/.arbre2.txt.swp new file mode 100644 index 0000000000000000000000000000000000000000..53891c1f3841e8264bd204ddb71f260ba22e4442 Binary files /dev/null and b/src/LIB/MEGAN/.arbre2.txt.swp differ diff --git a/src/MNH/emproc.F90 b/src/LIB/MEGAN/emproc.F90 similarity index 100% rename from src/MNH/emproc.F90 rename to src/LIB/MEGAN/emproc.F90 diff --git a/src/LIB/MEGAN/index1.F90 b/src/LIB/MEGAN/index1.F90 new file mode 100644 index 0000000000000000000000000000000000000000..68e48b7173a81e3fb1e289d1b9e6eaf23b5fc5fd --- /dev/null +++ b/src/LIB/MEGAN/index1.F90 @@ -0,0 +1,104 @@ +FUNCTION INDEX1 (HNAME, HLIST) RESULT(KINDEX1) + +!*********************************************************************** +! Version "$Id: index1.f 45 2014-09-12 20:05:29Z coats $" +! EDSS/Models-3 I/O API. +! Copyright (C) 1992-2002 MCNC and Carlie J. Coats, Jr., and +! (C) 2003-2010 Baron Advanced Meteorological Systems, LLC. +! Distributed under the GNU LESSER GENERAL PUBLIC LICENSE version 2.1 +! See file "LGPL.txt" for conditions of use. +!......................................................................... +! INDEX1 subroutine body starts at line 53 +! INDEXINT1 subroutine body starts at line 99 +! +! FUNCTION: +! +! Search for character-string or integer key NAME or IKEY in list NLIST +! and return the subscript (1...N) at which it is found, or return 0 +! when not found in NLIST +! +! PRECONDITIONS REQUIRED: +! none +! +! SUBROUTINES AND FUNCTIONS CALLED: +! none +! +! REVISION HISTORY: +! INDEX1: +! 5/1988 Modified for ROMNET +! 9/1994 Modified for Models-3 by CJC +! INDEXINT1: +! Prototype 11/2004 by CJC: MODULE M3UTILIO for I/O API v3 +! Modified 3/2006 by CJC: moved INDEXINT1() to file "index1.f" +! +! Modified 03/2010 by CJC: F9x changes for I/O API v3.1 +!*********************************************************************** + +IMPLICIT NONE + +!....... Arguments and their descriptions: + +CHARACTER(LEN=*), INTENT(IN) :: HNAME ! Character string being searched for +CHARACTER(LEN=*), DIMENSION(:), INTENT(IN) :: HLIST ! array to be searched +INTEGER :: KINDEX1 + +!....... Local variable: + +INTEGER :: JI ! loop counter + +!..................................................................... +!....... begin body of INDEX1() + +KINDEX1 = 0 +! +DO JI = 1, SIZE(HLIST) + IF ( HNAME.EQ.HLIST(JI) ) THEN ! Found NAME in NLIST + KINDEX1 = JI + EXIT + ENDIF +END DO + +END FUNCTION INDEX1 + +! --=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + + +!FUNCTION INDEXINT1(KEY, KEYLIST ) RESULT(KINDEXINT1) +! +!!-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +!! Look up integer key IKEY in unsorted list <NLIST,KEYLIST> +!! of integer keys. Return the subscript at which IKEY +!! occurs, or 0 in case of failure +!! +!! PRECONDITIONS REQUIRED: +!! none +!! +!! REVISION HISTORY: +!! Prototype 11/2004 by CJC +!!-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +! +!IMPLICIT NONE +! +!!!........ Arguments: +! +!INTEGER, INTENT(IN) :: KEY +!INTEGER, DIMENSION(:), INTENT(IN) :: KEYLIST +! +!INTEGER :: KINDEXINT1 +! +!!!........ Local Variables: +! +!INTEGER :: JI +! +!!!........ begin body ........................................ +! +!KINDEXINT1 = 0 +! +!DO JI = 1, SIZE(KEYLIST) +! IF ( KEY .EQ. KEYLIST(JI) ) THEN +! KINDEXINT1 = JI +! EXIT +! END IF +!END DO +! +!END FUNCTION INDEXINT1 diff --git a/src/LIB/MEGAN/init_mgn2mech.F90 b/src/LIB/MEGAN/init_mgn2mech.F90 new file mode 100644 index 0000000000000000000000000000000000000000..8e1bd59bcd401b3f016542476abe0c873d6963a1 --- /dev/null +++ b/src/LIB/MEGAN/init_mgn2mech.F90 @@ -0,0 +1,208 @@ +!! ############################### +SUBROUTINE INIT_MGN2MECH(HMECHANISM, OCONVERSION, HVNAME3D, HMECH_SPC, & + KSPMH_MAP, KMECH_MAP, PCONV_FAC, PMECH_MWT, & + KVARS3D, K_SCON_SPC) +!! +!!*** *BVOCEM* +!! +!! PURPOSE +!! ------- +!! CALCULATE THE BIOGENIC EMISSION FLUXES UPON THE MEGAN CODE +!! HTTP://LAR.WSU.EDU/MEGAN/ +!! +!! METHOD +!! ------ +!! +!! +!! AUTHOR +!! ------ +! ORIGINALLY CREATED BY JACK CHEN 11/04 FOR MEGAN V.0 +! FOR MEGAN V2.0 CREATED BY TAN 12/01/06 +! FOR MEGAN V2.1 CREATED BY XUEMEI WANG 11/04/07 +! FOR MEGAN V2.1 TO USE 150 SPECIES CREATED BY XUEMEI WANG 09/30/09 +! +! HISTORY: +! 08/14/07 TAN - MOVE TO MEGANV2.02 WITH NO UPDATE +! 08/29/07 MODIFIED BY A. GUENTHER TO CORRECT ERROR IN ASSIGNING +! EMISSION FACTOR. THIS VERSION IS CALLED MEGANV2.03 +! 10/29/07 MODIFIED BY A. GUENTHER TO CORRECT OMISSION OF DIURNAL VARIATION +! FACTOR. THIS VERSION IS CALLED MEGANV2.04 +! 11/04/07 MODIFIED BY XUEMEI WANG TO GIVE TWO OPTIONS FOR MAP OR LOOKUP TABLE FOR +! THE EMISSION FACTORS. ALSO GIVES OPTIONS FOR DIFFERENT CHEMICAL MECHANISMS +! IN THE CODE: USER MODIFIES THE EXTERNAL SCRIPT TO ASSIGN MECHANISM. +! THIS VERSION IS CALLED MEGANV2.1.0 +! 06/04/08 MODIFIED BY J. LEE-TAYLOR TO ACCEPT VEGETATION-DEPENDENT SPECIATION FACTORS +! IN TABLE FORMAT (RESHAPE TABLES) RATHER THAN FROM DATA STATEMENTS. +! 09/30/08 MODIFIED BY XUEMEI WANG TO GIVE OPTIONS FOR INPUT FILE AND TEST DIFFERENT MECHANISMS +! 09/27/11 TAN&XUEMEI MEGANV2.10 INCLUDES SOIL NOX ADJUSTMENT AND A LOT OF UPDATES +! 20/12/14 P. TULET - ON-LINE COUPLING IN THE ISBA/SURFEX SCHEME. ALL INIT VARIABLES HAS BEEN +! MOVED IN INIT_MEGANN.F90. +!! +!! MODIFICATIONS +!! ------------- +!! ORIGINAL: 25/10/14 +!! +!! +!! EXTERNAL +!! -------- +!! +!! IMPLICIT ARGUMENTS +!! ------------------ +! +!------------------------------------------------------------------------------ +! +!* 0. DECLARATIONS +! ----------------- +! +USE MODD_MGN2MECH +! +IMPLICIT NONE + +CHARACTER(LEN=16), INTENT(IN) :: HMECHANISM !I MECHANISM NAME +LOGICAL, INTENT(IN) :: OCONVERSION !I +! +CHARACTER(LEN=16),DIMENSION(:), POINTER :: HMECH_SPC!I MECHANISM NAME +CHARACTER(LEN=16),DIMENSION(:), POINTER :: HVNAME3D !I MECHANISM NAME +INTEGER,DIMENSION(:), POINTER :: KSPMH_MAP +INTEGER,DIMENSION(:), POINTER :: KMECH_MAP +REAL,DIMENSION(:), POINTER :: PCONV_FAC +REAL,DIMENSION(:), POINTER :: PMECH_MWT +INTEGER, INTENT(INOUT) :: KVARS3D +INTEGER, INTENT(INOUT) :: K_SCON_SPC + +!... INCLUDES: +! +!* 0.1 DECLARATION OF LOCAL VARIABLES +! +! SET ATTRIBUTE AND VARIABLES FOR OUTPUT +SELECT CASE ( TRIM(HMECHANISM) ) + CASE ('CB05') + K_SCON_SPC = N_CB05 + KVARS3D = N_CB05_SPC + CASE ('CB6') + K_SCON_SPC = N_CB6 + KVARS3D = N_CB6_SPC + CASE ('SAPRCII') + K_SCON_SPC = N_SAPRCII + KVARS3D = N_SAPRCII_SPC + CASE ('RADM2') + K_SCON_SPC = N_RADM2 + KVARS3D = N_RADM2_SPC + CASE ('RACM') + K_SCON_SPC = N_RACM + KVARS3D = N_RACM_SPC + CASE ('CBMZ') + K_SCON_SPC = N_CBMZ + KVARS3D = N_CBMZ_SPC + CASE ('SAPRC99') + K_SCON_SPC = N_SAPRC99 + KVARS3D = N_SAPRC99_SPC + CASE ('SAPRC99Q') + K_SCON_SPC = N_SAPRC99_Q + KVARS3D = N_SAPRC99_Q_SPC + CASE ('SAPRC99X') + K_SCON_SPC = N_SAPRC99_X + KVARS3D = N_SAPRC99_X_SPC + CASE ('SOAX') + K_SCON_SPC = N_SOAX + KVARS3D = N_SOAX_SPC + CASE DEFAULT + CALL ABOR1_SFX("ERROR: MECHANISM CONVERSION, INVALID MECHANISM: "//TRIM(HMECHANISM)) +ENDSELECT + +! PRINT*,'SHAPE(SPMH_MAP) =',SHAPE(SPMH_MAP) +IF (ASSOCIATED(KSPMH_MAP)) DEALLOCATE(KSPMH_MAP) +ALLOCATE(KSPMH_MAP(K_SCON_SPC)) + +IF (ASSOCIATED(KMECH_MAP)) DEALLOCATE(KMECH_MAP) +ALLOCATE(KMECH_MAP(K_SCON_SPC)) + +IF (ASSOCIATED(PCONV_FAC)) DEALLOCATE(PCONV_FAC) +ALLOCATE(PCONV_FAC(K_SCON_SPC)) + +IF (ASSOCIATED(HMECH_SPC)) DEALLOCATE(HMECH_SPC) +ALLOCATE(HMECH_SPC(KVARS3D)) + +IF (ASSOCIATED(PMECH_MWT)) DEALLOCATE(PMECH_MWT) +ALLOCATE(PMECH_MWT(KVARS3D)) + +IF (ASSOCIATED(HVNAME3D)) DEALLOCATE(HVNAME3D) +ALLOCATE(HVNAME3D(KVARS3D)) + +IF ( OCONVERSION ) THEN + + SELECT CASE ( TRIM(HMECHANISM) ) + CASE ('CB05') + KSPMH_MAP(:) = NSPMH_MAP_CB05(:) + KMECH_MAP(:) = NMECH_MAP_CB05(:) + PCONV_FAC(:) = XCONV_FAC_CB05(:) + HMECH_SPC(:) = CMECH_SPC_CB05(:) + PMECH_MWT(:) = XMECH_MWT_CB05(:) + CASE ('CB6') + KSPMH_MAP(:) = NSPMH_MAP_CB6(:) + KMECH_MAP(:) = NMECH_MAP_CB6(:) + PCONV_FAC(:) = XCONV_FAC_CB6(:) + HMECH_SPC(:) = CMECH_SPC_CB6(:) + PMECH_MWT(:) = XMECH_MWT_CB6(:) + CASE ('SAPRCII') + KSPMH_MAP(:) = NSPMH_MAP_SAPRCII(:) + KMECH_MAP(:) = NMECH_MAP_SAPRCII(:) + PCONV_FAC(:) = XCONV_FAC_SAPRCII(:) + HMECH_SPC(:) = CMECH_SPC_SAPRCII(:) + PMECH_MWT(:) = XMECH_MWT_SAPRCII(:) + CASE ('RADM2') + KSPMH_MAP(:) = NSPMH_MAP_RADM2(:) + KMECH_MAP(:) = NMECH_MAP_RADM2(:) + PCONV_FAC(:) = XCONV_FAC_RADM2(:) + HMECH_SPC(:) = CMECH_SPC_RADM2(:) + PMECH_MWT(:) = XMECH_MWT_RADM2(:) + CASE ('RACM') + KSPMH_MAP(:) = NSPMH_MAP_RACM(:) + KMECH_MAP(:) = NMECH_MAP_RACM(:) + PCONV_FAC(:) = XCONV_FAC_RACM(:) + HMECH_SPC(:) = CMECH_SPC_RACM(:) + PMECH_MWT(:) = XMECH_MWT_RACM(:) + CASE ('CBMZ') + KSPMH_MAP(:) = NSPMH_MAP_CBMZ(:) + KMECH_MAP(:) = NMECH_MAP_CBMZ(:) + PCONV_FAC(:) = XCONV_FAC_CBMZ(:) + HMECH_SPC(:) = CMECH_SPC_CBMZ(:) + PMECH_MWT(:) = XMECH_MWT_CBMZ(:) + CASE ('SAPRC99') + KSPMH_MAP(:) = NSPMH_MAP_SAPRC99(:) + KMECH_MAP(:) = NMECH_MAP_SAPRC99(:) + PCONV_FAC(:) = XCONV_FAC_SAPRC99(:) + HMECH_SPC(:) = CMECH_SPC_SAPRC99(:) + PMECH_MWT(:) = XMECH_MWT_SAPRC99(:) + CASE ('SAPRC99Q') + KSPMH_MAP(:) = NSPMH_MAP_SAPRC99_Q(:) + KMECH_MAP(:) = NMECH_MAP_SAPRC99_Q(:) + PCONV_FAC(:) = XCONV_FAC_SAPRC99_Q(:) + HMECH_SPC(:) = CMECH_SPC_SAPRC99_Q(:) + PMECH_MWT(:) = XMECH_MWT_SAPRC99_Q(:) + CASE ('SAPRC99X') + KSPMH_MAP(:) = NSPMH_MAP_SAPRC99_X(:) + KMECH_MAP(:) = NMECH_MAP_SAPRC99_X(:) + PCONV_FAC(:) = XCONV_FAC_SAPRC99_X(:) + HMECH_SPC(:) = CMECH_SPC_SAPRC99_X(:) + PMECH_MWT(:) = XMECH_MWT_SAPRC99_X(:) + CASE ('SOAX') + KSPMH_MAP(:) = NSPMH_MAP_SOAX(:) + KMECH_MAP(:) = NMECH_MAP_SOAX(:) + PCONV_FAC(:) = XCONV_FAC_SOAX(:) + HMECH_SPC(:) = CMECH_SPC_SOAX(:) + PMECH_MWT(:) = XMECH_MWT_SOAX(:) + ENDSELECT + + HVNAME3D(:) = HMECH_SPC(:) + +ELSE + + KVARS3D = N_SPCA_SPC + HVNAME3D(:) = CSPCA_SPC(:) + +ENDIF + +!--------------------------------------------------------------------------- +! +END SUBROUTINE INIT_MGN2MECH diff --git a/src/LIB/MEGAN/julian.F90 b/src/LIB/MEGAN/julian.F90 new file mode 100644 index 0000000000000000000000000000000000000000..73442ba48e36a1a549e9dcc8da7c5f3e61046937 --- /dev/null +++ b/src/LIB/MEGAN/julian.F90 @@ -0,0 +1,92 @@ +FUNCTION JULIAN (KYEAR, KMNTH, KMDAY) RESULT(KJULIAN) + +!*********************************************************************** +! Version "$Id: julian.F 45 2014-09-12 20:05:29Z coats $" +! EDSS/Models-3 I/O API. +! Copyright (C) 1992-2002 MCNC and Carlie J. Coats, Jr., +! (C) 2003-2010 by Baron Advanced Meteorological Systems. +! Distributed under the GNU LESSER GENERAL PUBLIC LICENSE version 2.1 +! See file "LGPL.txt" for conditions of use. +!......................................................................... +! function body starts at line 68 +! +! FUNCTION: returns the Julian day (1...365,366) corresponding to +! the date MNTH-MDAY-YEAR. +! NOTE: This is NOT the Julian DATE -- only the +! day-number. To get the Julian date: +! +! JDATE = 1000 * YEAR + JULIAN ( YEAR , MNTH , MDAY ) +! +! ARGUMENT LIST DESCRIPTION: +! +! Input arguments: +! +! YEAR Calendar year +! MNTH Month of year 1, 12 +! MDAY Day of month 1, 31 +! +! Output arguments: none +! +! RETURN VALUE: +! +! JULIAN The Julian DAY of the input arguments combined +! +! REVISION HISTORY: +! +! 5/1988 Modified for ROMNET +! +! 8/1990 Modified for ROM 2.2 by Carlie J. Coats, Jr., CSC +! improved comments; improved Zeller's Congruence algorithm +! and using IF-THEN ... ELSE IF ... construction. +! +! 8/1999 Version for global-climate IO_360, which uses 360-day "year" +! +! 2/2002 Unification by CJC with global-climate JULIAN +! +! Modified 03/2010 by CJC: F9x changes for I/O API v3.1 +!*********************************************************************** + +IMPLICIT NONE + +!........... ARGUMENTS and their descriptions: + +INTEGER, INTENT(IN) :: KYEAR ! year YYYY +INTEGER, INTENT(IN) :: KMNTH ! month 1...12 +INTEGER, INTENT(IN) :: KMDAY ! day-of-month 1...28,29,30,31 + +INTEGER :: KJULIAN + +!........... SCRATCH LOCAL VARIABLES: + +INTEGER :: JM, JN, JL + +!*********************************************************************** +! begin body of function JULIAN + +#ifdef IO_360 + +KJULIAN = KMDAY + 30 * ( KMNTH - 1 ) + +#else + +JM = MOD ((KMNTH + 9), 12) +JN = (JM * 153 + 2) / 5 + KMDAY + 58 + +IF ( MOD(KYEAR,4).NE.0 ) THEN + JL = 365 +ELSE IF ( MOD(KYEAR,100).NE.0 ) THEN + JL = 366 + JN = 1 + JN +ELSE IF ( MOD(KYEAR,400).NE.0 ) THEN + JL = 365 +ELSE + JL = 366 + JN = 1 + JN +END IF + +KJULIAN = 1 + MOD(JN,JL) + +#endif + +END FUNCTION JULIAN + diff --git a/src/MNH/mgn2mech.F90 b/src/LIB/MEGAN/mgn2mech.F90 similarity index 100% rename from src/MNH/mgn2mech.F90 rename to src/LIB/MEGAN/mgn2mech.F90 diff --git a/src/LIB/MEGAN/modd_megan.F90 b/src/LIB/MEGAN/modd_megan.F90 new file mode 100644 index 0000000000000000000000000000000000000000..df8fdb870141aadd492e194c474fd89de5d0af20 --- /dev/null +++ b/src/LIB/MEGAN/modd_megan.F90 @@ -0,0 +1,145 @@ +MODULE MODD_MEGAN +! +INTEGER, PARAMETER :: NLAYERS = 5 +! LENGTH OF THE TIME STEP (DAYS) +INTEGER, PARAMETER :: NTSTLEN = 30 +INTEGER, PARAMETER :: NMAXSTYPES = 11 +! +REAL, PARAMETER :: XSOLARCONSTANT = 1367, & ! SOLAR CONSTANT [W/M2] + XWATERAIRRATIO = 18.016/28.97 ! RATIO BETWEEN WATER AND AIR MOLECULES +! +REAL, PARAMETER :: XPSTD_SUN=200.0, XPSTD_SHADE=50.0 +REAL ,PARAMETER :: XCCE=0.56 +! +REAL,PARAMETER :: XSB = 0.0000000567 +! +! REAL,PARAMETER :: CONVERTPPFD = 4.766 +REAL,PARAMETER :: XCONVERTSHADEPPFD = 4.6 +REAL,PARAMETER :: XCONVERTSUNPPFD = 4.0 +! +REAL,PARAMETER :: XPI = 3.14159, XRPI180 = 57.29578 +! +REAL,PARAMETER :: XDIHIGH = -0.5, XDILOW = -5 +! +REAL,PARAMETER :: XCTM2 = 230 +REAL,PARAMETER :: XCT2 =200.0 +! +REAL,PARAMETER :: XTS = 303.15 +! +! PARAMETER FOR UNIT CONVERSION +REAL, PARAMETER :: XUG2TONNE = 1E-12 ! CONVERT MICROGRAM TO METRIC TONNE +REAL, PARAMETER :: XHR2SEC = 3600 ! CONVERT HR TO SECOND +REAL, PARAMETER :: XUG2G = 1E-6 ! CONVERT MICROGRAM TO GRAM +REAL, PARAMETER :: XN2NO = 2.142857 ! CONVERT HR TO SECOND +! +REAL, DIMENSION(NMAXSTYPES) :: XSATURATION=& + (/0.395, 0.410, 0.435, 0.485, 0.451, 0.420, 0.477, 0.476, 0.426, 0.482, 0.482/) +! +REAL, PARAMETER :: XISMAX=1.344, XH=1.4614 +REAL, PARAMETER :: XCSTAR=585 +!======================================================================= +! CANOPY.EXT +! THIS INCLUDE FILE CONTAINS MEGAN SPECIES +! +! WHO WHEN WHAT +! --------------------------------------------------------------------- +! XUEMEI WANG 06/16/2009 - CREATES THIS FILE +!======================================================================= + +INTEGER, PARAMETER :: N_MGN_SPC = 20 + +CHARACTER(LEN=6), DIMENSION(N_MGN_SPC) :: & + CMGN_SPC=(/'ISOP ','MYRC ','SABI ','LIMO ','A_3CAR','OCIM ','BPIN ','APIN ','OMTP ',& + 'FARN ','BCAR ','OSQT ','MBO ','MEOH ','ACTO ','CO ','NO ','BIDER ',& + 'STRESS','OTHER '/) + +REAL, DIMENSION(N_MGN_SPC), PARAMETER :: & + XCLEO=(/2.,1.83,1.83,1.83,1.83,1.83,1.83,1.83,1.83,2.37,2.37,2.37,2.,1.6,1.83,1.6,1.86,2.,1.83,1.83/) + +REAL, DIMENSION(N_MGN_SPC), PARAMETER :: & + XCTM1=(/95.,80.,80.,80.,80.,80.,80.,80.,80.,130.,130.,130.,95.,60.,80.,60.,80.,95.,80.,80./) + +REAL, DIMENSION(N_MGN_SPC), PARAMETER :: & + XTDF_PRM=(/0.13,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.17,0.17,0.17,0.13,0.08,0.1,0.08,0.1,0.13,0.1,0.1/) + +REAL, DIMENSION(N_MGN_SPC), PARAMETER :: & + XLDF_FCT=(/0.999,0.6,0.6,0.4,0.4,0.4,0.4,0.6,0.4,0.5,0.5,0.5,0.999,0.8,0.2,0.999,0.,0.8,0.8,0.2/) + +REAL, DIMENSION(N_MGN_SPC), PARAMETER :: & + XMGN_MWT=(/1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1./) +! +INTEGER, DIMENSION(N_MGN_SPC), PARAMETER :: & + NREA_INDEX=(/5,2,2,2,2,2,2,2,2,3,3,3,5,4,1,1,1,1,1,1/) +! +!************************************************************************************************************** +! +INTEGER,PARAMETER :: N_MGN_PFT = 16 +! +!CHARACTER(LEN=10), DIMENSION(N_MGN_PFT), PARAMETER :: & +! CMGN_PFT=(/'NT_EG_TEMP','NT_DC_BORL','NT_EG_BORL','BT_EG_TROP','BT_EG_TEMP','BT_DC_TROP',& +! 'BT_DC_TEMP','BT_DC_BORL','SG_EG_TEMP','SB_DC_TEMP','SB_DC_BORL',& +! 'GS_C3_COLD','GS_C3_COOL','GS_C3_WARM','CORN ','CROP '/) +! +!CHARACTER(LEN=35), DIMENSION(N_MGN_PFT), PARAMETER :: & +! CMGN_NAM=(/'Needleaf evergreen temperate tree ','Needleaf deciduous boreal tree ',& +! 'Needleaf evergreen boreal tree ','Broadleaf evergreen tropical tree ',& +! 'Broadleaf evergreen tropical tree ','Broadleaf deciduous tropical tree ',& +! 'Broadleaf deciduous temperate tree ','Broadleaf deciduous boreal tree ',& +! 'Broadleaf evergreen temperate shrub','Broadleaf deciduous temperate shrub',& +! 'Broadleaf deciduous boreal shrub ','Cold C3 grass ',& +! 'Cool C3 grass ','Warm C3 grass ',& +! 'Corn ','Other crops '/) +! +INTEGER,PARAMETER :: N_CAT = 5 +! +REAL, DIMENSION(N_CAT) :: XANEW=(/1.,2. ,0.4 ,3.5,0.05/) +REAL, DIMENSION(N_CAT) :: XAGRO=(/1.,1.8 ,0.6 ,3. ,0.6 /) +REAL, DIMENSION(N_CAT) :: XAMAT=(/1.,1. ,1. ,1. ,1. /) +REAL, DIMENSION(N_CAT) :: XAOLD=(/1.,1.05,0.95,1.2,0.9 /) +! +!********************************************************************************************************** + +INTEGER, PARAMETER :: NRCHA = 16 +! 1 = canopy depth +! 2 = leaf width +! 3 = leaf length +! 4 = canopy height +! 5 = scattering coefficient for PPFD +! 6 = scattering coefficient for near IR +! 7 = reflection coefficient for diffuse PPFD +! 8 = reflection coefficient for diffuse near IR +! 9 = clustering coefficient (accounts for leaf clumping influence on mean +! projected leaf area in the direction of the suns beam) +! use 0.85 for default, corn=0.4-0.9; Pine=0.6-1.0; oak=0.53-0.67; +! tropical rainforest=1.1 +! 10 = leaf IR emissivity +! 11 = leaf stomata and cuticle factor: 1=hypostomatous, 2=amphistomatous, +! 1.25=hypostomatous but with some transpiration through cuticle +! 12 = daytime temperature lapse rate (K m-1) +! 13 = nighttime temperature lapse rate (K m-1) +! 14 = warm (>283K) canopy total humidity change (Pa) +! 15 = cool (>= 283K) canopy total humidity change (Pa) +! 16 = normalized canopy depth where wind is negligible +! NT NT NT TF BT TF BT BT SB SB SB HB HB HB CR CR + +REAL,DIMENSION(NRCHA,N_MGN_PFT) :: XCANOPYCHAR = RESHAPE(& + (/ 16., 16., 16., 16., 16., 16., 16., 16., 1., 1., 1., 0.756, 0.756, 0.756, 1., 1., & + 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.02, 0.02, & + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.15, 0.15, 0.15, 0.15, 0.15, & + 24., 24., 24., 24., 24., 24., 24., 24., 2., 2., 2., 0.75, 0.75, 0.75, 1., 1., & + 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, & + 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, & + 0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057, & + 0.389, 0.389, 0.389, 0.389, 0.389, 0.389, 0.389, 0.389, 0.389, 0.389, 0.389, 0.389, 0.389, 0.389, 0.389, 0.389, & + 0.85, 0.85, 0.85, 1.1, 0.95, 1.1, 0.95, 0.95, 0.85, 0.85, 0.85, 0.76, 0.76, 0.76, 0.65, 0.65, & + 0.95, 0.95, 0.95, 0.95, 0.95, 0.95, 0.95, 0.95, 0.95, 0.95, 0.95, 0.95, 0.95, 0.95, 0.95, 0.95, & + 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.00, 1.00, 1.00, 1.25, 1.25, 1.25, 1.25, 1.25, & + 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, & + -0.06, -0.06, -0.06, -0.06, -0.06, -0.06, -0.06, -0.06, -0.06, -0.06, -0.06, -0.06, -0.06, -0.06, -0.06, -0.06, & + 700., 700., 700., 700., 700., 700., 700., 700., 700., 700., 700., 700., 700., 700., 700., 700., & + 150., 150., 150., 150., 150., 150., 150., 150., 150., 150., 150., 150., 150., 150., 150., 150., & + 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7/)& + ,SHAPE=(/NRCHA,N_MGN_PFT/) ,ORDER=(/2,1/) ) + + +END MODULE MODD_MEGAN diff --git a/src/LIB/MEGAN/modd_mgn2mech.F90 b/src/LIB/MEGAN/modd_mgn2mech.F90 new file mode 100644 index 0000000000000000000000000000000000000000..f64f45eb52ccb15ce98405c9fbcd260a8dac3b13 --- /dev/null +++ b/src/LIB/MEGAN/modd_mgn2mech.F90 @@ -0,0 +1,1275 @@ +MODULE MODD_MGN2MECH + +USE MODD_MEGAN, ONLY : N_MGN_SPC, N_MGN_PFT +!======================================================================= +! EF_MGN20.EXT +! This include file contains EF for 20 MEGAN species. The values in +! this file must be in the same order as in SPC_MGN.EXT +! +! MEGAN v2.1 +! INPUT version 210 +! +! History: +! Who When What +! --------------------------------------------------------------------- +! Tan 12/02/2006 - Creates this file +! Guenther A. 08/11/2007 - Creates this file again with updates and move +! from v2.0 to v2.02 +! Xuemei Wang and Alex 26/07/2011-Extend EFs to 16 PFTs +! Jiang X. 05/07/2012 - Updates EFs with new values from Guenther +!======================================================================= + +! EF_NT_EG_TEMP EF_NT_DC_BORL EF_NT_EG_BORL EF_BT_EG_TROP EF_BT_EG_TEMP +! EF_BT_DC_TROP EF_BT_DC_TEMP EF_BT_DC_BORL EF_SB_EG_TEMP EF_SB_DC_TEMP +! EF_SB_DC_BORL EF_GS_C3_COLD EF_GS_C3_COOL EF_GS_C3_WARM EF_CROP EF_CORN + +REAL,DIMENSION(N_MGN_PFT,N_MGN_SPC) :: XEF_ALL = RESHAPE( (/ & + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1.,& + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1.,& + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1.,& + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1.,& + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1.,& + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1.,& + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1.,& + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1.,& +180., 170., 180., 150., 150., 150., 150., 150., 110., 200., 110., 5., 5., 5., 5., 5.,& + 40., 40., 40., 60., 40., 60., 40., 40., 40., 40., 40., 3., 3., 3., 4., 4.,& + 80., 80., 80., 60., 40., 60., 40., 40., 50., 50., 50., 1., 1., 1., 2., 4.,& +120., 120., 120., 120., 100., 120., 100., 100., 100., 100., 100., 2., 2., 2., 2., 2.,& + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1.,& +900., 900., 900., 500., 900., 500., 900., 900., 900., 900., 900., 500., 500., 500., 900., 900.,& +240., 240., 240., 240., 240., 240., 240., 240., 240., 240., 240., 80., 80., 80., 80., 80.,& +600., 600., 600., 600., 600., 600., 600., 600., 600., 600., 600., 600., 600., 600., 600., 600.,& + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1.,& +500., 500., 500., 500., 500., 500., 500., 500., 500., 500., 500., 80., 80., 80., 80., 80.,& +300., 300., 300., 300., 300., 300., 300., 300., 300., 300., 300., 300., 300., 300., 300., 300.,& +140., 140., 140., 140., 140., 140., 140., 140., 140., 140., 140., 140., 140., 140., 140., 140. /),& +SHAPE=(/N_MGN_PFT,N_MGN_SPC/), ORDER=(/1,2/) ) + +!======================================================================= +! EFFS_MGN20T150.EXT +! This include file contains EF fractions for speciation from 20 MEGAN +! categories to 150 species. The values in this file must be in the +! same order as in MAP_MGN20T150.EXT +! +! MEGAN v2.1 +! INPUT version 210 +! +! History: +! Who When What +! --------------------------------------------------------------------- +! Tan 12/02/06 - Creates this file +! Guenther A. 08/11/07 - Move from MEGAN v2.0 to MEGAN v2.02 with update on +! Nitrogen gas. +! Guenther A. 26/07/2011-Extend EFs for 16 PFTs +! Jiang X. 05/07/12 - Update EF fractions with new values from Guenther +!======================================================================= + +INTEGER,PARAMETER :: N_EFFS_SPC=150 ! Number of chemical species + +! EFFS_NT_EG_TEMP EFFS_NT_DC_BORL EFFS_NT_EG_BORL EFFS_BT_EG_TROP EFFS_BT_EG_TEMP +! EFFS_BT_DC_TROP EFFS_BT_DC_TEMP EFFS_BT_DC_BORL EFSF_SB_EG_TEMP EFFS_SB_DC_TEMP +! EFFS_SB_DC_BORL EFFS_GS_C3_COLD EFFS_GS_C3_COOL EFFS_GS_C3_WARM EFFS_CROP EFFS_CORN + + +REAL,DIMENSION(N_MGN_PFT,N_EFFS_SPC) :: XEFFS_ALL = RESHAPE( (/ & + 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,& + 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,& + 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,& + 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,& + 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,& + 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,& + 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,& + 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,& + 0.006, 0.006, 0.006, 0.011, 0.011, 0.011, 0.011, 0.011, 0.009, 0.009, 0.009, 0.010, 0.010, 0.010, 0.010, 0.010,& + 0.055, 0.055, 0.055, 0.057, 0.057, 0.057, 0.057, 0.057, 0.046, 0.046, 0.046, 0.042, 0.042, 0.042, 0.042, 0.042,& + 0.017, 0.017, 0.017, 0.034, 0.034, 0.034, 0.034, 0.034, 0.028, 0.028, 0.028, 0.031, 0.031, 0.031, 0.031, 0.031,& + 0.055, 0.055, 0.055, 0.046, 0.046, 0.046, 0.046, 0.046, 0.046, 0.046, 0.046, 0.042, 0.042, 0.042, 0.042, 0.042,& + 0.033, 0.033, 0.033, 0.011, 0.011, 0.011, 0.011, 0.011, 0.037, 0.037, 0.037, 0.042, 0.042, 0.042, 0.042, 0.042,& + 0.055, 0.055, 0.055, 0.057, 0.057, 0.057, 0.057, 0.057, 0.046, 0.046, 0.046, 0.042, 0.042, 0.042, 0.042, 0.042,& + 0.055, 0.055, 0.055, 0.057, 0.057, 0.057, 0.057, 0.057, 0.046, 0.046, 0.046, 0.042, 0.042, 0.042, 0.042, 0.042,& + 0.067, 0.067, 0.067, 0.057, 0.057, 0.057, 0.057, 0.057, 0.055, 0.055, 0.055, 0.062, 0.062, 0.062, 0.062, 0.062,& + 0.160, 0.160, 0.160, 0.057, 0.057, 0.057, 0.057, 0.057, 0.092, 0.092, 0.092, 0.104, 0.104, 0.104, 0.104, 0.104,& + 0.248, 0.248, 0.248, 0.180, 0.180, 0.180, 0.180, 0.180, 0.186, 0.186, 0.186, 0.146, 0.146, 0.146, 0.146, 0.146,& + 0.005, 0.005, 0.005, 0.010, 0.010, 0.010, 0.010, 0.010, 0.008, 0.008, 0.008, 0.008, 0.008, 0.008, 0.008, 0.008,& + 0.002, 0.002, 0.002, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.004, 0.004, 0.004, 0.004, 0.004,& + 0.006, 0.006, 0.006, 0.011, 0.011, 0.011, 0.011, 0.011, 0.009, 0.009, 0.009, 0.010, 0.010, 0.010, 0.010, 0.010,& + 0.022, 0.022, 0.022, 0.046, 0.046, 0.046, 0.046, 0.046, 0.037, 0.037, 0.037, 0.042, 0.042, 0.042, 0.042, 0.042,& + 0.006, 0.006, 0.006, 0.011, 0.011, 0.011, 0.011, 0.011, 0.009, 0.009, 0.009, 0.010, 0.010, 0.010, 0.010, 0.010,& + 0.002, 0.002, 0.002, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.004, 0.004, 0.004, 0.004, 0.004,& + 0.033, 0.033, 0.033, 0.034, 0.034, 0.034, 0.034, 0.034, 0.046, 0.046, 0.046, 0.042, 0.042, 0.042, 0.042, 0.042,& + 0.006, 0.006, 0.006, 0.011, 0.011, 0.011, 0.011, 0.011, 0.009, 0.009, 0.009, 0.010, 0.010, 0.010, 0.010, 0.010,& + 0.002, 0.002, 0.002, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.004, 0.004, 0.004, 0.004, 0.004,& + 0.028, 0.028, 0.028, 0.011, 0.011, 0.011, 0.011, 0.011, 0.046, 0.046, 0.046, 0.042, 0.042, 0.042, 0.042, 0.042,& + 0.006, 0.006, 0.006, 0.002, 0.002, 0.002, 0.002, 0.002, 0.009, 0.009, 0.009, 0.010, 0.010, 0.010, 0.010, 0.010,& + 0.011, 0.011, 0.011, 0.057, 0.057, 0.057, 0.057, 0.057, 0.037, 0.037, 0.037, 0.042, 0.042, 0.042, 0.042, 0.042,& + 0.004, 0.004, 0.004, 0.008, 0.008, 0.008, 0.008, 0.008, 0.006, 0.006, 0.006, 0.006, 0.006, 0.006, 0.006, 0.006,& + 0.060, 0.060, 0.060, 0.138, 0.138, 0.138, 0.138, 0.138, 0.111, 0.111, 0.111, 0.125, 0.125, 0.125, 0.125, 0.125,& + 0.003, 0.003, 0.003, 0.007, 0.007, 0.007, 0.007, 0.007, 0.006, 0.006, 0.006, 0.006, 0.006, 0.006, 0.006, 0.006,& + 0.017, 0.017, 0.017, 0.034, 0.034, 0.034, 0.034, 0.034, 0.028, 0.028, 0.028, 0.031, 0.031, 0.031, 0.031, 0.031,& + 0.003, 0.003, 0.003, 0.007, 0.007, 0.007, 0.007, 0.007, 0.006, 0.006, 0.006, 0.006, 0.006, 0.006, 0.006, 0.006,& + 0.017, 0.017, 0.017, 0.030, 0.030, 0.030, 0.030, 0.030, 0.024, 0.024, 0.024, 0.027, 0.027, 0.027, 0.027, 0.027,& + 0.001, 0.001, 0.001, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002,& + 0.003, 0.003, 0.003, 0.001, 0.001, 0.001, 0.001, 0.001, 0.003, 0.003, 0.003, 0.002, 0.002, 0.002, 0.002, 0.002,& + 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,& + 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,& + 0.016, 0.016, 0.016, 0.019, 0.019, 0.019, 0.019, 0.019, 0.019, 0.019, 0.019, 0.022, 0.022, 0.022, 0.022, 0.022,& + 0.006, 0.006, 0.006, 0.007, 0.007, 0.007, 0.007, 0.007, 0.008, 0.008, 0.008, 0.011, 0.011, 0.011, 0.011, 0.011,& + 0.144, 0.144, 0.144, 0.084, 0.084, 0.084, 0.084, 0.084, 0.096, 0.096, 0.096, 0.098, 0.098, 0.098, 0.098, 0.098,& + 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.005, 0.005, 0.005, 0.005, 0.005,& + 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.005, 0.005, 0.005, 0.005, 0.005,& + 0.120, 0.120, 0.120, 0.056, 0.056, 0.056, 0.056, 0.056, 0.067, 0.067, 0.067, 0.077, 0.077, 0.077, 0.077, 0.077,& + 0.024, 0.024, 0.024, 0.028, 0.028, 0.028, 0.028, 0.028, 0.029, 0.029, 0.029, 0.033, 0.033, 0.033, 0.033, 0.033,& + 0.012, 0.012, 0.012, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.016, 0.016, 0.016, 0.016, 0.016,& + 0.008, 0.008, 0.008, 0.009, 0.009, 0.009, 0.009, 0.009, 0.010, 0.010, 0.010, 0.011, 0.011, 0.011, 0.011, 0.011,& + 0.005, 0.005, 0.005, 0.006, 0.006, 0.006, 0.006, 0.006, 0.006, 0.006, 0.006, 0.005, 0.005, 0.005, 0.005, 0.005,& + + 0.008, 0.008, 0.008, 0.009, 0.009, 0.009, 0.009, 0.009, 0.010, 0.010, 0.010, 0.011, 0.011, 0.011, 0.011, 0.011,& + 0.012, 0.012, 0.012, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.016, 0.016, 0.016, 0.016, 0.016,& + 0.008, 0.008, 0.008, 0.009, 0.009, 0.009, 0.009, 0.009, 0.010, 0.010, 0.010, 0.011, 0.011, 0.011, 0.011, 0.011,& + 0.016, 0.016, 0.016, 0.019, 0.019, 0.019, 0.019, 0.019, 0.019, 0.019, 0.019, 0.022, 0.022, 0.022, 0.022, 0.022,& + 0.234, 0.234, 0.234, 0.276, 0.276, 0.276, 0.276, 0.276, 0.285, 0.285, 0.285, 0.224, 0.224, 0.224, 0.224, 0.224,& + 0.008, 0.008, 0.008, 0.009, 0.009, 0.009, 0.009, 0.009, 0.010, 0.010, 0.010, 0.011, 0.011, 0.011, 0.011, 0.011,& + 0.024, 0.024, 0.024, 0.028, 0.028, 0.028, 0.028, 0.028, 0.029, 0.029, 0.029, 0.033, 0.033, 0.033, 0.033, 0.033,& + 0.004, 0.004, 0.004, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005,& + 0.199, 0.199, 0.199, 0.139, 0.139, 0.139, 0.139, 0.139, 0.172, 0.172, 0.172, 0.164, 0.164, 0.164, 0.164, 0.164,& + 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.005, 0.005, 0.005, 0.005, 0.005,& + 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.005, 0.005, 0.005, 0.005, 0.005,& + 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.005, 0.005, 0.005, 0.005, 0.005,& + 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.005, 0.005, 0.005, 0.005, 0.005,& + 0.012, 0.012, 0.012, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.016, 0.016, 0.016, 0.016, 0.016,& + 0.040, 0.040, 0.040, 0.046, 0.046, 0.046, 0.046, 0.046, 0.048, 0.048, 0.048, 0.055, 0.055, 0.055, 0.055, 0.055,& + 0.080, 0.080, 0.080, 0.186, 0.186, 0.186, 0.186, 0.186, 0.115, 0.115, 0.115, 0.109, 0.109, 0.109, 0.109, 0.109,& + 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.005, 0.005, 0.005, 0.005, 0.005,& + 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.005, 0.005, 0.005, 0.005, 0.005,& + 0.002, 0.002, 0.002, 0.005, 0.005, 0.005, 0.005, 0.005, 0.002, 0.002, 0.002, 0.005, 0.005, 0.005, 0.005, 0.005,& + 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.005, 0.005, 0.005, 0.005, 0.005,& + 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,& + 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,& + 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,& + 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005,& + 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,& + 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,& + 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,& + 0.400, 0.400, 0.400, 0.400, 0.400, 0.400, 0.400, 0.400, 0.400, 0.400, 0.400, 0.250, 0.250, 0.250, 0.250, 0.250,& + 0.400, 0.400, 0.400, 0.400, 0.400, 0.400, 0.400, 0.400, 0.400, 0.400, 0.400, 0.250, 0.250, 0.250, 0.250, 0.250,& + 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.150, 0.150, 0.150, 0.150, 0.150,& + 0.080, 0.080, 0.080, 0.080, 0.080, 0.080, 0.080, 0.080, 0.080, 0.080, 0.080, 0.200, 0.200, 0.200, 0.200, 0.200,& + 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.150, 0.150, 0.150, 0.150, 0.150,& + 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010,& + 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,& + 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010,& + 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002,& + + 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010,& + 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015,& + 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030,& + 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,& + 0.240, 0.240, 0.240, 0.240, 0.240, 0.240, 0.240, 0.240, 0.240, 0.240, 0.240, 0.240, 0.240, 0.240, 0.240, 0.240,& + 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010,& + 0.580, 0.580, 0.580, 0.580, 0.580, 0.580, 0.580, 0.580, 0.580, 0.580, 0.580, 0.580, 0.580, 0.580, 0.580, 0.580,& + 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015,& + 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.480, 0.480, 0.480, 0.480, 0.480, 0.480, 0.480, 0.480, 0.480, 0.480, 0.480, 0.480, 0.480, 0.480, 0.480, 0.480,& + 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002,& + 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003,& + 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002,& + 0.050, 0.050, 0.050, 0.050, 0.050, 0.050, 0.050, 0.050, 0.050, 0.050, 0.050, 0.050, 0.050, 0.050, 0.050, 0.050,& + 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010,& + 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002,& + 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003,& + 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030,& + 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030,& + 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002,& + 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010,& + 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002,& + 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010,& + 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010,& + 0.100, 0.100, 0.100, 0.100, 0.100, 0.100, 0.100, 0.100, 0.100, 0.100, 0.100, 0.100, 0.100, 0.100, 0.100, 0.100,& + 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060,& + 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060,& + 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060,& + 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060,& + 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030,& + 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.003, 0.003, 0.003, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002,& + 0.003, 0.003, 0.003, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.003, 0.003, 0.003, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.003, 0.003, 0.003, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,& + 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001 /),& +SHAPE=(/N_MGN_PFT,N_EFFS_SPC/), ORDER=(/1,2/) ) + + +!**************************************************************************************************************** +!**************************************************************************************************************** + +INTEGER, PARAMETER :: N_CB05_SPC=19 +! +CHARACTER(LEN=4), DIMENSION(N_CB05_SPC) :: CMECH_SPC_CB05=(/& ! Mechanism species name +'ISOP','TERP','PAR ','XYL ','OLE ','NR ','MEOH','CH4 ','NH3 ','NO ',& +'ALD2','ETOH','FORM','ALDX','TOL ','IOLE','CO ','ETHA','ETH '/) + + +REAL, DIMENSION(N_CB05_SPC) :: XMECH_MWT_CB05=(/& ! Mechanism species molecular weight + 80.,160., 16.,128., 32., 16., 16., 16., 17., 46., 32., 32., 16., 32.,112., 64.,& + 28., 32., 28./) + +INTEGER, PARAMETER :: N_CB05=204 + +CHARACTER(LEN=16), DIMENSION(N_CB05) :: CSPMH_NAM_CB05=(/& ! speciated species name +'isoprene ','myrcene ','sabinene ','limonene ','carene_3 ','ocimene_t_b ',& +'pinene_b ','pinene_a ','2met_styrene ','2met_styrene ','2met_styrene ','cymene_p ',& +'cymene_p ','cymene_o ','cymene_o ','phellandrene_a ','thujene_a ','terpinene_a ',& +'terpinene_g ','terpinolene ','phellandrene_b ','camphene ','bornene ','fenchene_a ',& +'ocimene_al ','ocimene_c_b ','tricyclene ','tricyclene ','estragole ','camphor ',& +'camphor ','fenchone ','fenchone ','piperitone ','thujone_a ','thujone_a ',& +'thujone_b ','thujone_b ','cineole_1_8 ','cineole_1_8 ','borneol ','borneol ',& +'linalool ','terpineol_4 ','terpineol_a ','linalool_OXD_c ','linalool_OXD_t ','ionone_b ',& +'ionone_b ','bornyl_ACT ','bornyl_ACT ','farnescene_a ','caryophyllene_b','acoradiene ',& +'aromadendrene ','bergamotene_a ','bergamotene_b ','bisabolene_a ','bisabolene_b ','bourbonene_b ',& +'cadinene_d ','cadinene_g ','cedrene_a ','copaene_a ','cubebene_a ','cubebene_b ',& +'elemene_b ','farnescene_b ','germacrene_B ','germacrene_D ','gurjunene_b ','humulene_a ',& +'humulene_g ','isolongifolene ','longifolene ','longipinene ','muurolene_a ','muurolene_g ',& +'selinene_b ','selinene_d ','nerolidol_c ','nerolidol_t ','cedrol ','cedrol ',& +'MBO_2m3e2ol ','MBO_2m3e2ol ','methanol ','acetone ','methane ','ammonia ',& +'nitric_OXD ','acetaldehyde ','ethanol ','formic_acid ','formaldehyde ','acetic_acid ',& +'acetic_acid ','MBO_3m2e1ol ','MBO_3m2e1ol ','MBO_3m3e1ol ','MBO_3m3e1ol ','benzaldehyde ',& +'butanone_2 ','decanal ','decanal ','dodecene_1 ','dodecene_1 ','geranyl_acetone',& +'geranyl_acetone','heptanal ','heptanal ','heptane ','hexane ','met_benzoate ',& +'met_benzoate ','met_heptenone ','met_heptenone ','neryl_acetone ','neryl_acetone ','neryl_acetone ',& +'nonanal ','nonanal ','nonenal ','nonenal ','nonenal ','octanal ',& +'octanal ','octanol ','octenol_1e3ol ','octenol_1e3ol ','oxopentanal ','oxopentanal ',& +'pentane ','phenyl_CCO ','phenyl_CCO ','pyruvic_acid ','pyruvic_acid ','terpinyl_ACT_a ',& +'terpinyl_ACT_a ','tetradecene_1 ','tetradecene_1 ','toluene ','carbon_monoxide','butene ',& +'butene ','ethane ','ethene ','propane ','propane ','propene ',& +'propene ','diallyl_2s ','diallyl_2s ','2met_2s ','2met_s ','met_chloride ',& +'met_bromide ','met_iodide ','met_mercaptan ','met_propenyl_2s','met_propenyl_2s','PPPP_2s ',& +'PPPP_2s ','2met_nonatriene','met_salicylate ','met_salicylate ','indole ','indole ',& +'jasmone ','jasmone ','met_jasmonate ','met_jasmonate ','3met_3DCTT ','hexanal ',& +'hexanal ','hexanol_1 ','hexenal_c3 ','hexenal_c3 ','hexenal_t2 ','hexenal_t2 ',& +'hexenol_c3 ','hexenol_c3 ','hexenyl_ACT_c3 ','hexenyl_ACT_c3 ','hexenyl_ACT_c3 ','homosalate ',& +'homosalate ','Ehsalate ','Ehsalate ','pentanal ','pentanal ','heptanone ',& +'anisole ','verbenene ','benzyl-acetate ','benzyl-acetate ','benzyl-acetate ','myrtenal ',& +'benzyl-alcohol ','meta-cymenene ','meta-cymenene ','ipsenol ','Napthalene ','Napthalene '/) +! +INTEGER, DIMENSION(N_CB05) :: NSPMH_MAP_CB05=(/& ! speciated species name + 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 9, 10, 10, 11, 11, 12,& + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 23, 24, 25, 25, 26,& + 26, 27, 28, 28, 29, 29, 30, 30, 31, 31, 32, 33, 34, 35, 36, 37,& + 37, 38, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,& + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,& + 68, 69, 70, 70, 71, 71, 72, 73, 74, 75, 77, 78, 79, 80, 81, 82,& + 82, 83, 83, 84, 84, 85, 86, 87, 87, 88, 88, 89, 89, 90, 90, 91,& + 92, 93, 93, 94, 94, 95, 95, 95, 96, 96, 97, 97, 97, 98, 98, 99,& +100,100,101,101,102,103,103,104,104,105,105,106,106,107,108,109,& +109,110,111,113,113,114,114,117,117,118,119,120,121,122,124,125,& +125,126,126,127,128,128,129,129,130,130,131,131,132,133,133,134,& +135,135,136,136,137,137,138,138,138,139,139,140,140,141,141,142,& +143,144,145,145,145,146,147,148,148,149,150,150/) +! +CHARACTER(LEN=4), DIMENSION(N_CB05) :: CMECH_NAM_CB05=(/& ! mechanism species +'ISOP','TERP','TERP','TERP','TERP','TERP','TERP','TERP','PAR ','XYL ','OLE ','PAR ','XYL ','PAR ','XYL ','TERP',& +'TERP','TERP','TERP','TERP','TERP','TERP','TERP','TERP','TERP','TERP','PAR ','NR ','TERP','PAR ','NR ','PAR ',& +'NR ','TERP','PAR ','NR ','PAR ','NR ','PAR ','NR ','PAR ','NR ','TERP','TERP','TERP','TERP','TERP','TERP',& +'NR ','PAR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ',& +'NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ',& +'NR ','NR ','PAR ','NR ','OLE ','PAR ','MEOH','PAR ','CH4 ','NH3 ','NO ','ALD2','ETOH','NR ','FORM','PAR ',& +'NR ','ALDX','PAR ','FORM','PAR ','TOL ','PAR ','ALDX','PAR ','OLE ','PAR ','TERP','NR ','ALDX','PAR ','PAR ',& +'PAR ','TOL ','NR ','PAR ','ALDX','IOLE','PAR ','NR ','ALDX','PAR ','PAR ','IOLE','ALDX','ALDX','PAR ','PAR ',& +'PAR ','OLE ','PAR ','ALDX','PAR ','TOL ','ALDX','FORM','ALDX','TERP','NR ','PAR ','OLE ','TOL ','CO ','OLE ',& +'PAR ','ETHA','ETH ','PAR ','NR ','OLE ','PAR ','PAR ','OLE ','PAR ','PAR ','NR ','NR ','NR ','PAR ','PAR ',& +'OLE ','PAR ','OLE ','TERP','TOL ','NR ','TOL ','NR ','TERP','NR ','TERP','NR ','NR ','ALDX','PAR ','PAR ',& +'IOLE','ALDX','IOLE','ALDX','PAR ','IOLE','PAR ','IOLE','NR ','TERP','NR ','TERP','NR ','ALDX','PAR ','PAR ',& +'TOL ','TERP','TOL ','PAR ','NR ','TERP','TOL ','XYL ','PAR ','TERP','XYL ','PAR '/) +! +INTEGER, DIMENSION(N_CB05) :: NMECH_MAP_CB05=(/& ! mechanism species mapped + 1, 2, 2, 2, 2, 2, 2, 2, 3, 4, 5, 3, 4, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 6, 2, 3, 6, 3,& + 6, 2, 3, 6, 3, 6, 3, 6, 3, 6, 2, 2, 2, 2, 2, 2, 6, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,& + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 3, 6, 5, 3, 7, 3, 8, 9,10,11,12, 6,13, 3,& + 6,14, 3,13, 3,15, 3,14, 3, 5, 3, 2, 6,14, 3, 3, 3,15, 6, 3,14,16, 3, 6,14, 3, 3,16,14,14, 3, 3,& + 3, 5, 3,14, 3,15,14,13,14, 2, 6, 3, 5,15,17, 5, 3,18,19, 3, 6, 5, 3, 3, 5, 3, 3, 6, 6, 6, 3, 3,& + 5, 3, 5, 2,15, 6,15, 6, 2, 6, 2, 6, 6,14, 3, 3,16,14,16,14, 3,16, 3,16, 6, 2, 6, 2, 6,14, 3, 3,& +15, 2,15, 3, 6, 2,15, 4, 3, 2, 4, 3/) + +! +REAL, DIMENSION(N_CB05) :: XCONV_FAC_CB05=(/& ! conversion factor + 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 0.5, 2., 1., 2., 1., 1.,& + 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 9., 1., 1., 8., 2., 8.,& + 2., 1., 9., 1., 9., 1., 9., 1., 8., 2., 1., 1., 1., 1., 1., 1.,& + 3., 6., 6., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15.,& + 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15.,& + 15., 15., 13., 2., 1., 3., 1., 3., 1., 1., 1., 1., 1., 1., 1., 1.,& + 1., 1., 3., 1., 4., 1., 4., 1., 8., 1., 10., 1., 3., 1., 5., 7.,& + 6., 1., 1., 6., 1., 1., 8., 1., 1., 7., 3., 1., 1., 1., 6., 8.,& + 6., 1., 3., 1., 5., 1., 0.5, 1., 1., 1., 2., 12., 1., 1., 1., 1.,& + 2., 1., 1., 1.5, 1.5, 1., 1., 2., 2., 2., 2., 1., 1., 1., 1., 2.,& + 1., 4., 1., 1., 1., 1., 1., 1., 1., 1., 1., 3., 16., 1., 4., 6.,& + 1., 1., 1., 1., 2., 1., 3., 1., 1., 1., 3., 1., 3., 1., 3., 7.,& + 1., 1., 1., 1., 1., 1., 1., 1., 2., 1., 1., 2./) + + +!**************************************************************************************************************** +!**************************************************************************************************************** + +INTEGER, PARAMETER :: N_CB6_SPC=24 + +CHARACTER(LEN=4), DIMENSION(N_CB6_SPC) :: CMECH_SPC_CB6=(/& ! Mechanism species name +'ISOP','TERP','PAR ','XYL ','OLE ','NR ','MEOH','CH4 ','NH3 ','NO ',& +'ALD2','ETOH','FORM','ALDX','TOL ','IOLE','CO ','ETHA','ETH ','ETHY',& +'PRPA','BENZ','ACET','KET '/) + +REAL, DIMENSION(N_CB6_SPC) :: XMECH_MWT_CB6=(/& ! Mechanism species molecular weight + 80.,160., 16.,128., 32., 16., 16., 16.,17., 46., 32., 32., 16., 32.,112., 64.,& + 28., 32., 28., 26., 44., 78., 58., 58./) + + +INTEGER, PARAMETER :: N_CB6=210 + +CHARACTER(LEN=15), DIMENSION(N_CB6) :: CSPMH_NAM_CB6=(/& +'isoprene ','myrcene ','sabinene ','limonene ','carene_3 ','ocimene_t_b ',& +'pinene_b ','pinene_a ','2met_styrene ','2met_styrene ','2met_styrene ','cymene_p ',& +'cymene_p ','cymene_o ','cymene_o ','phellandrene_a ','thujene_a ','terpinene_a ',& +'terpinene_g ','terpinolene ','phellandrene_b ','camphene ','bornene ','fenchene_a ',& +'ocimene_al ','ocimene_c_b ','tricyclene ','tricyclene ','estragole ','camphor ',& +'camphor ','fenchone ','fenchone ','piperitone ','thujone_a ','thujone_a ',& +'thujone_b ','thujone_b ','cineole_1_8 ','cineole_1_8 ','borneol ','borneol ',& +'linalool ','terpineol_4 ','terpineol_a ','linalool_OXD_c ','linalool_OXD_t ','ionone_b ',& +'ionone_b ','bornyl_ACT ','bornyl_ACT ','farnescene_a ','caryophyllene_b','acoradiene ',& +'aromadendrene ','bergamotene_a ','bergamotene_b ','bisabolene_a ','bisabolene_b ','bourbonene_b ',& +'cadinene_d ','cadinene_g ','cedrene_a ','copaene_a ','cubebene_a ','cubebene_b ',& +'elemene_b ','farnescene_b ','germacrene_B ','germacrene_D ','gurjunene_b ','humulene_a ',& +'humulene_g ','isolongifolene ','longifolene ','longipinene ','muurolene_a ','muurolene_g ',& +'selinene_b ','selinene_d ','nerolidol_c ','nerolidol_t ','cedrol ','cedrol ',& +'MBO_2m3e2ol ','MBO_2m3e2ol ','methanol ','acetone ','methane ','ammonia ',& +'nitric_OXD ','acetaldehyde ','ethanol ','formic_acid ','formaldehyde ','acetic_acid ',& +'acetic_acid ','MBO_3m2e1ol ','MBO_3m2e1ol ','MBO_3m3e1ol ','MBO_3m3e1ol ','benzaldehyde ',& +'butanone_2 ','decanal ','decanal ','dodecene_1 ','dodecene_1 ','geranyl_acetone',& +'geranyl_acetone','heptanal ','heptanal ','heptane ','hexane ','met_benzoate ',& +'met_benzoate ','met_heptenone ','met_heptenone ','neryl_acetone ','neryl_acetone ','neryl_acetone ',& +'nonanal ','nonanal ','nonenal ','nonenal ','nonenal ','octanal ',& +'octanal ','octanol ','octenol_1e3ol ','octenol_1e3ol ','oxopentanal ','oxopentanal ',& +'pentane ','phenyl_CCO ','phenyl_CCO ','pyruvic_acid ','pyruvic_acid ','terpinyl_ACT_a ',& +'terpinyl_ACT_a ','tetradecene_1 ','tetradecene_1 ','toluene ','carbon_monoxide','butene ',& +'butene ','ethane ','ethene ','propane ','propene ','propene ',& +'diallyl_2s ','diallyl_2s ','2met_2s ','2met_s ','met_chloride ','met_bromide ',& +'met_iodide ','met_mercaptan ','met_propenyl_2s','met_propenyl_2s','PPPP_2s ','PPPP_2s ',& +'2met_nonatriene','met_salicylate ','met_salicylate ','indole ','indole ','jasmone ',& +'jasmone ','met_jasmonate ','met_jasmonate ','3met_3DCTT ','hexanal ','hexanal ',& +'hexanol_1 ','hexenal_c3 ','hexenal_c3 ','hexenal_t2 ','hexenal_t2 ','hexenol_c3 ',& +'hexenol_c3 ','hexenyl_ACT_c3 ','hexenyl_ACT_c3 ','hexenyl_ACT_c3 ','homosalate ','homosalate ',& +'Ehsalate ','Ehsalate ','pentanal ','pentanal ','heptanone ','anisole ',& +'verbenene ','benzyl-acetate ','benzyl-acetate ','benzyl-acetate ','myrtenal ','benzyl-alcohol ',& +'meta-cymenene ','meta-cymenene ','ipsenol ','Napthalene ','Napthalene ','fenchone ',& +'thujone_a ','thujone_b ','butanone_2 ','met_heptenone ','neryl_acetone ','heptanone '/) + +INTEGER, DIMENSION(N_CB6) :: NSPMH_MAP_CB6=(/& + 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 9, 10, 10, 11, 11, 12,& + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 23, 24, 25, 25, 26,& + 26, 27, 28, 28, 29, 29, 30, 30, 31, 31, 32, 33, 34, 35, 36, 37,& + 37, 38, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,& + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,& + 68, 69, 70, 70, 71, 71, 72, 73, 74, 75, 77, 78, 79, 80, 81, 82,& + 82, 83, 83, 84, 84, 85, 86, 87, 87, 88, 88, 89, 89, 90, 90, 91,& + 92, 93, 93, 94, 94, 95, 95, 95, 96, 96, 97, 97, 97, 98, 98, 99,& +100,100,101,101,102,103,103,104,104,105,105,106,106,107,108,109,& +109,110,111,113,114,114,117,117,118,119,120,121,122,124,125,125,& +126,126,127,128,128,129,129,130,130,131,131,132,133,133,134,135,& +135,136,136,137,137,138,138,138,139,139,140,140,141,141,142,143,& +144,145,145,145,146,147,148,148,149,150,150, 26, 28, 29, 86, 94,& + 95,142/) + +CHARACTER(LEN=4), DIMENSION(N_CB6) :: CMECH_NAM_CB6=(/& +'ISOP','TERP','TERP','TERP','TERP','TERP','TERP','TERP','PAR ','XYL ','OLE ','PAR ','XYL ','PAR ','XYL ','TERP',& +'TERP','TERP','TERP','TERP','TERP','TERP','TERP','TERP','TERP','TERP','PAR ','NR ','TERP','PAR ','NR ','PAR ',& +'NR ','TERP','PAR ','NR ','PAR ','NR ','PAR ','NR ','PAR ','NR ','TERP','TERP','TERP','TERP','TERP','TERP',& +'NR ','PAR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ',& +'NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ','NR ',& +'NR ','NR ','PAR ','NR ','OLE ','PAR ','MEOH','ACET','CH4 ','NH3 ','NO ','ALD2','ETOH','NR ','FORM','PAR ',& +'NR ','ALDX','PAR ','FORM','PAR ','TOL ','PAR ','ALDX','PAR ','OLE ','PAR ','TERP','NR ','ALDX','PAR ','PAR ',& +'PAR ','TOL ','NR ','PAR ','ALDX','IOLE','PAR ','NR ','ALDX','PAR ','PAR ','IOLE','ALDX','ALDX','PAR ','PAR ',& +'PAR ','OLE ','PAR ','ALDX','PAR ','TOL ','ALDX','FORM','ALDX','TERP','NR ','PAR ','OLE ','TOL ','CO ','OLE ',& +'PAR ','ETHA','ETH ','PRPA','OLE ','PAR ','PAR ','OLE ','PAR ','PAR ','NR ','NR ','NR ','PAR ','PAR ','OLE ',& +'PAR ','OLE ','TERP','TOL ','NR ','TOL ','NR ','TERP','NR ','TERP','NR ','NR ','ALDX','PAR ','PAR ','IOLE',& +'ALDX','IOLE','ALDX','PAR ','IOLE','PAR ','IOLE','NR ','TERP','NR ','TERP','NR ','ALDX','PAR ','PAR ','TOL ',& +'TERP','TOL ','PAR ','NR ','TERP','TOL ','XYL ','PAR ','TERP','XYL ','PAR ','KET ','KET ','KET ','KET ','KET ',& +'KET ','KET '/) + +INTEGER, DIMENSION(N_CB6) :: NMECH_MAP_CB6=(/& + 1, 2, 2, 2, 2, 2, 2, 2, 3, 4, 5, 3, 4, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 6, 2, 3, 6, 3,& + 6, 2, 3, 6, 3, 6, 3, 6, 3, 6, 2, 2, 2, 2, 2, 2, 6, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,& + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 3, 6, 5, 3, 7,23, 8, 9,10,11,12, 6,13, 3,& + 6,14, 3,13, 3,15, 3,14, 3, 5, 3, 2, 6,14, 3, 3, 3,15, 6, 3,14,16, 3, 6,14, 3, 3,16,14,14, 3, 3,& + 3, 5, 3,14, 3,15,14,13,14, 2, 6, 3, 5,15,17, 5, 3,18,19,21, 5, 3, 3, 5, 3, 3, 6, 6, 6, 3, 3, 5,& + 3, 5, 2,15, 6,15, 6, 2, 6, 2, 6, 6,14, 3, 3,16,14,16,14, 3,16, 3,16, 6, 2, 6, 2, 6,14, 3, 3,15,& + 2,15, 3, 6, 2,15, 4, 3, 2, 4, 3,24,24,24,24,24,24,24/) + +REAL, DIMENSION(N_CB6) :: XCONV_FAC_CB6=(/& + 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 0.5, 2., 1., 2., 1., 1.,& + 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 9., 1., 1., 8., 2., 7.,& + 2., 1., 8., 1., 8., 1., 9., 1., 8., 2., 1., 1., 1., 1., 1., 1.,& + 3., 6., 6., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15.,& + 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15.,& + 15., 15., 13., 2., 1., 3., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,& + 1., 1., 3., 1., 4., 1., 3., 1., 8., 1., 10., 1., 3., 1., 5., 7.,& + 6., 1., 1., 5., 1., 1., 7., 1., 1., 7., 3., 1., 1., 1., 6., 8.,& + 6., 1., 3., 1., 5., 1., 0.5, 1., 1., 1., 2., 12., 1., 1., 1., 1.,& + 2., 1., 1., 1., 1., 1., 2., 2., 2., 2., 1., 1., 1., 1., 2., 1.,& + 4., 1., 1., 1., 1., 1., 1., 1., 1., 1., 3., 16., 1., 4., 6., 1.,& + 1., 1., 1., 2., 1., 3., 1., 1., 1., 3., 1., 3., 1., 3., 6., 1.,& + 1., 1., 1., 1., 1., 1., 1., 2., 1., 1., 2., 1., 1., 1., 1., 1.,& + 1., 1./) + + +!**************************************************************************************************************** +!**************************************************************************************************************** + +INTEGER, PARAMETER :: N_SAPRCII_SPC = 31 ! Number of mechanism species + +CHARACTER(LEN=8), PARAMETER, DIMENSION(N_SAPRCII_SPC) :: CMECH_SPC_SAPRCII=(/& ! Mechanism species name +'ISOPRENE','TRP1 ','BCARL ','AHUMUL ','SSQT ','MEOH ','ACET ','CH4 ',& +'NO ','NO2 ','NH3 ','CCHO ','HCOOH ','HCHO ','CCO_OH ','BALD ',& +'MEK ','RCO_OH ','CO ','ETHENE ','ALK1 ','ALK2 ','ALK3 ','ALK4 ',& +'ALK5 ','ARO1 ','ARO2 ','OLE1 ','OLE2 ','RCHO ','NONR '/) + +REAL, PARAMETER, DIMENSION(N_SAPRCII_SPC) :: XMECH_MWT_SAPRCII=(/& ! Mechanism species mol. wt. + 68.0,136.0,204.0,204.0,204.0, 32.0, 58.0, 16.0, 30.0,44.01, 17.0, 44.0, 46.0, 30.0, 60.0,106.0,& + 72.0, 74.0, 28.0, 28.0, 30.1, 36.7, 58.6, 77.6,118.9, 98.6,118.7, 72.3, 75.8, 58.0, 1.0/) + + +INTEGER, PARAMETER :: N_SAPRCII = 150 ! Number of map species + +CHARACTER(LEN=17), PARAMETER, DIMENSION(N_SAPRCII) :: CSPMH_NAM_SAPRCII=(/& ! speciated species name +'isoprene ','myrcene ','sabinene ','limonene ','carene_3 ','ocimene_t_b ',& +'pinene_b ','pinene_a ','A_2met_styrene ','cymene_p ','cymene_o ','phellandrene_a ',& +'thujene_a ','terpinene_a ','terpinene_g ','terpinolene ','phellandrene_b ','camphene ',& +'bornene ','fenchene_a ','ocimene_al ','ocimene_c_b ','tricyclene ','estragole ',& +'camphor ','fenchone ','piperitone ','thujone_a ','thujone_b ','cineole_1_8 ',& +'borneol ','linalool ','terpineol_4 ','terpineol_a ','linalool_OXD_c ','linalool_OXD_t ',& +'ionone_b ','bornyl_ACT ','farnescene_a ','caryophyllene_b ','acoradiene ','aromadendrene ',& +'bergamotene_a ','bergamotene_b ','bisabolene_a ','bisabolene_b ','bourbonene_b ','cadinene_d ',& +'cadinene_g ','cedrene_a ','copaene_a ','cubebene_a ','cubebene_b ','elemene_b ',& +'farnescene_b ','germacrene_B ','germacrene_D ','gurjunene_b ','humulene_a ','humulene_g ',& +'isolongifolene ','longifolene ','longipinene ','muurolene_a ','muurolene_g ','selinene_b ',& +'selinene_d ','nerolidol_c ','nerolidol_t ','cedrol ','MBO_2m3e2ol ','methanol ',& +'acetone ','methane ','ammonia ','nitrous_OXD ','nitric_OXD ','acetaldehyde ',& +'ethanol ','formic_acid ','formaldehyde ','acetic_acid ','MBO_3m2e1ol ','MBO_3m3e1ol ',& +'benzaldehyde ','butanone_2 ','decanal ','dodecene_1 ','geranyl_acetone ','heptanal ',& +'heptane ','hexane ','met_benzoate ','met_heptenone ','neryl_acetone ','nonanal ',& +'nonenal ','octanal ','octanol ','octenol_1e3ol ','oxopentanal ','pentane ',& +'phenyl_CCO ','pyruvic_acid ','terpinyl_ACT_a ','tetradecene_1 ','toluene ','carbon_monoxide ',& +'butene ','ethane ','ethene ','hydrogen_cyanide ','propane ','propene ',& +'carbon_2s ','carbonyl_s ','diallyl_2s ','A_2met_2s ','A_2met_s ','met_chloride ',& +'met_bromide ','met_iodide ','hydrogen_s ','met_mercaptan ','met_propenyl_2s ','PPPP_2s ',& +'A_2met_nonatriene','met_salicylate ','indole ','jasmone ','met_jasmonate ','A_3met_3DCTT ',& +'hexanal ','hexanol_1 ','hexenal_c3 ','hexenal_t2 ','hexenol_c3 ','hexenyl_ACT_c3 ',& +'homosalate ','Ehsalate ','pentanal ','heptanone ','anisole ','verbenene ',& +'benzyl-acetate ','myrtenal ','benzyl-alcohol ','meta-cymenene ','ipsenol ','Napthalene '/) + +INTEGER, PARAMETER, DIMENSION(N_SAPRCII) :: NSPMH_MAP_SAPRCII=(/& ! speciated species name + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,& + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,& + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,& + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,& + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,& + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,& + 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,112,& +113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,& +129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,& +145,146,147,148,149,150/) + +CHARACTER(LEN=8), PARAMETER, DIMENSION(N_SAPRCII) :: CMECH_NAM_SAPRCII=(/& ! mechanism species +'ISOPRENE','TRP1g ','TRP1g ','TRP1g ','TRP1g ','TRP1g ','TRP1g ','TRP1g ',& +'OLE2g ','ARO2g ','ARO2g ','TRP1g ','TRP1g ','TRP1g ','TRP1g ','TRP1g ',& +'TRP1g ','TRP1g ','TRP1g ','TRP1g ','TRP1g ','TRP1g ','ALK5g ','TRP1g ',& +'TRP1g ','ALK5g ','TRP1g ','ALK5g ','ALK5g ','ALK5g ','ALK5g ','TRP1g ',& +'TRP1g ','TRP1g ','TRP1g ','TRP1g ','SSQTg ','ALK5g ','AHUMULg ','BCARLg ',& +'SSQTg ','SSQTg ','SSQTg ','SSQTg ','AHUMULg ','SSQTg ','SSQTg ','SSQTg ',& +'SSQTg ','SSQTg ','SSQTg ','SSQTg ','SSQTg ','SSQTg ','AHUMULg ','AHUMULg ',& +'SSQTg ','SSQTg ','AHUMULg ','AHUMULg ','SSQTg ','SSQTg ','SSQTg ','SSQTg ',& +'SSQTg ','SSQTg ','SSQTg ','SSQTg ','SSQTg ','ALK5g ','ISOPRENE','MEOHg ',& +'ACETg ','CH4g ','NH3g ','NONRg ','NOg ','CCHOg ','ALK3g ','HCOOHg ',& +'HCHOg ','CCO_OHg ','ISOPRENE','ISOPRENE','BALDg ','MEKg ','RCHOg ','OLE1g ',& +'SSQTg ','RCHOg ','ALK5g ','ALK4g ','ARO1g ','OLE2g ','OLE2g ','RCHOg ',& +'OLE1g ','RCHOg ','ALK5g ','OLE1g ','RCHOg ','ALK4g ','ARO1g ','RCO_OHg ',& +'TRP1g ','OLE1g ','ARO1g ','COg ','OLE1g ','ALK1g ','ETHENEg ','NONRg ',& +'ALK2g ','OLE1g ','NONRg ','NONRg ','OLE1g ','ALK5g ','ALK4g ','NONRg ',& +'NONRg ','NONRg ','NONRg ','ALK5g ','OLE1g ','OLE1g ','TRP1g ','ARO1g ',& +'ARO2g ','TRP1g ','SSQTg ','AHUMULg ','RCHOg ','ALK5g ','OLE2g ','OLE2g ',& +'OLE2g ','OLE2g ','SSQTg ','SSQTg ','RCHOg ','OLE2g ','BALD ','ARO2g ',& +'BALDg ','TRP1g ','BALDg ','ARO2g ','TRP1g ','ARO2g '/) + +INTEGER, PARAMETER, DIMENSION(N_SAPRCII) :: NMECH_MAP_SAPRCII=(/& ! mechanism species mapped + 1, 2, 2, 2, 2, 2, 2, 2,29,27,27, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,25, 2, 2,25, 2,25,25,25,25, 2,& + 2, 2, 2, 2, 5,25, 4, 3, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 5, 5, 4, 4, 5, 5, 5, 5,& + 5, 5, 5, 5, 5,25, 1, 6, 7, 8,11,31, 9,12,23,13,14,15, 1, 1,16,17,30,28, 5,30,25,24,26,29,29,30,& +28,30,25,28,30,24,26,18, 2,28,26,19,28,21,20,31,22,28,31,31,28,25,24,31,31,31,31,25,28,28, 2,26,& +27, 2, 5, 4,30,25,29,29,29,29, 5, 5,30,29,16,27,16, 2,16,27, 2,27/) + + ! to SPC_SAPRCII.EXT +REAL, PARAMETER, DIMENSION(N_SAPRCII) :: XCONV_FAC_SAPRCII=(/& ! conversion factor +1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,& +1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,& +1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,& +1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,& +1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1./) + +!**************************************************************************************************************** +!**************************************************************************************************************** + +INTEGER, PARAMETER :: N_RADM2_SPC = 21 ! Number of mechanism species + +CHARACTER(LEN=4), PARAMETER, DIMENSION(N_RADM2_SPC) :: CMECH_SPC_RADM2=(/& ! Mechanism species name +'ISO ','CH4 ','ETH ','HC3 ','HC5 ','HC8 ','OL2 ','OLI ','OLT ','ALD ',& +'KET ','TOL ','HCHO','ORA1','ORA2','CO ','SO2 ','NO ','HNO3','NO2 ',& +'NR '/) + +REAL, PARAMETER, DIMENSION(N_RADM2_SPC) :: XMECH_MWT_RADM2=(/& ! Mechanism species mol. wt. + 68., 16., 30., 44., 72., 114., 28., 56., 42., 44., 72., 92., 30., 46., 60., 28.,& + 64., 30., 63., 46., 1./) + +INTEGER,PARAMETER :: N_RADM2 = 177 ! Number of map species + +CHARACTER(LEN=17), PARAMETER, DIMENSION(N_RADM2) :: CSPMH_NAM_RADM2=(/& ! speciated species name +'isoprene ','myrcene ','A_myrcene ','sabinene ','limonene ','A_limonene ',& +'carene_3 ','ocimene_t_b ','ocimene_t_b ','pinene_b ','pinene_a ','A_2met_styrene ',& +'cymene_p ','cymene_o ','phellandrene_a ','thujene_a ','terpinene_a ','terpinene_g ',& +'terpinolene ','phellandrene_b ','phellandrene_b ','camphene ','bornene ','fenchene_a ',& +'ocimene_al ','ocimene_c_b ','ocimene_c_b ','tricyclene ','estragole ','camphor ',& +'fenchone ','piperitone ','thujone_a ','thujone_b ','cineole_1_8 ','borneol ',& +'linalool ','linalool ','terpineol_4 ','terpineol_a ','linalool_OXD_c ','linalool_OXD_t ',& +'ionone_b ','bornyl_ACT ','farnescene_a ','farnescene_a ','caryophyllene_b ','caryophyllene_b ',& +'acoradiene ','acoradiene ','aromadendrene ','bergamotene_a ','bergamotene_b ','bergamotene_b ',& +'bisabolene_a ','bisabolene_b ','bisabolene_b ','bourbonene_b ','cadinene_d ','cadinene_g ',& +'cadinene_g ','cedrene_a ','copaene_a ','cubebene_a ','cubebene_b ','elemene_b ',& +'farnescene_b ','farnescene_b ','germacrene_B ','germacrene_D ','germacrene_D ','gurjunene_b ',& +'humulene_a ','humulene_g ','isolongifolene ','longifolene ','longipinene ','muurolene_a ',& +'muurolene_g ','muurolene_g ','selinene_b ','selinene_d ','nerolidol_c ','nerolidol_c ',& +'nerolidol_t ','nerolidol_t ','cedrol ','MBO_2m3e2ol ','methanol ','acetone ',& +'methane ','ammonia ','nitrous_OXD ','nitric_OXD ','acetaldehyde ','ethanol ',& +'formic_acid ','formaldehyde ','acetic_acid ','MBO_3m2e1ol ','MBO_3m3e1ol ','benzaldehyde ',& +'butanone_2 ','decanal ','dodecene_1 ','geranyl_acetone ','heptanal ','heptane ',& +'hexane ','met_benzoate ','met_heptenone ','neryl_acetone ','nonanal ','nonenal ',& +'nonenal ','octanal ','octanol ','octenol_1e3ol ','oxopentanal ','pentane ',& +'phenyl_CCO ','pyruvic_acid ','terpinyl_ACT_a ','tetradecene_1 ','toluene ','carbon_monoxide ',& +'butene ','ethane ','ethene ','hydrogen_cyanide ','propane ','propene ',& +'carbon_2s ','carbonyl_s ','diallyl_2s ','diallyl_2s ','A_2met_2s ','A_2met_2s ',& +'A_2met_s ','A_2met_s ','met_chloride ','met_bromide ','met_iodide ','hydrogen_s ',& +'met_mercaptan ','met_mercaptan ','met_propenyl_2s ','met_propenyl_2s ','PPPP_2s ','PPPP_2s ',& +'A_2met_nonatriene','A_2met_nonatriene','met_salicylate ','indole ','indole ','jasmone ',& +'met_jasmonate ','A_3met_3DCTT ','A_3met_3DCTT ','hexanal ','hexanol_1 ','hexenal_c3 ',& +'hexenal_t2 ','hexenol_c3 ','hexenyl_ACT_c3 ','homosalate ','Ehsalate ','pentanal ',& +'heptanone ','anisole ','verbenene ','benzyl-acetate ','myrtenal ','benzyl-alcohol ',& +'meta-cymenene ','ipsenol ','Napthalene '/) + +INTEGER, PARAMETER, DIMENSION(N_RADM2) :: NSPMH_MAP_RADM2=(/& ! speciated species name + 1, 2, 2, 3, 4, 4, 5, 6, 6, 7, 8, 9, 10, 11, 12, 13,& + 14, 15, 16, 17, 17, 18, 19, 20, 21, 22, 22, 23, 24, 25, 26, 27,& + 28, 29, 30, 31, 32, 32, 33, 34, 35, 36, 37, 38, 39, 39, 40, 40,& + 41, 41, 42, 43, 44, 44, 45, 46, 46, 47, 48, 49, 49, 50, 51, 52,& + 53, 54, 55, 55, 56, 57, 57, 58, 59, 60, 61, 62, 63, 64, 65, 65,& + 66, 67, 68, 68, 69, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,& + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,& + 96, 97, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,& +111,112,113,114,115,116,117,117,118,118,119,119,120,121,122,123,& +124,124,125,125,126,126,127,127,128,129,129,130,131,132,132,133,& +134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,& +150/) + + ! mapped to SPC_SPCAT.EXT +CHARACTER(LEN=4), PARAMETER, DIMENSION(N_RADM2) :: CMECH_NAM_RADM2=(/& ! mechanism species +'ISO ','OLT ','OLI ','OLT ','OLT ','OLI ','OLI ','OLT ','OLI ','OLT ','OLI ','TOL ','TOL ','TOL ','OLI ','OLI ',& +'OLI ','OLI ','OLI ','OLT ','OLI ','OLT ','OLI ','OLT ','OLI ','OLT ','OLI ','NR ','OLT ','HC8 ','NR ','OLT ',& +'NR ','NR ','HC8 ','NR ','OLT ','OLI ','OLI ','OLI ','OLT ','OLT ','OLI ','NR ','OLT ','OLI ','OLT ','OLI ',& +'OLT ','OLI ','OLT ','OLI ','OLT ','OLI ','OLI ','OLT ','OLI ','OLT ','OLI ','OLT ','OLI ','OLI ','OLI ','OLI ',& +'OLT ','OLT ','OLT ','OLI ','OLI ','OLT ','OLI ','OLI ','OLI ','OLI ','OLI ','OLT ','OLI ','OLI ','OLT ','OLI ',& +'OLT ','OLI ','OLT ','OLI ','OLT ','OLI ','NR ','ISO ','HC3 ','KET ','CH4 ','NR ','NO2 ','NO ','ALD ','HC3 ',& +'ORA1','HCHO','ORA2','ISO ','ISO ','NR ','KET ','ALD ','OLT ','OLI ','ALD ','HC5 ','HC5 ','HC8 ','OLI ','OLI ',& +'ALD ','ALD ','HC8 ','ALD ','HC8 ','OLT ','ALD ','HC5 ','NR ','ORA2','OLI ','OLT ','TOL ','CO ','OLT ','ETH ',& +'OL2 ','NR ','HC3 ','OLT ','NR ','NR ','OLI ','SO2 ','ETH ','SO2 ','ETH ','SO2 ','NR ','NR ','NR ','SO2 ',& +'CH4 ','SO2 ','OLI ','SO2 ','OLI ','SO2 ','OLT ','OLI ','HC8 ','HC8 ','HNO3','OLI ','OLI ','OLT ','OLI ','ALD ',& +'HC5 ','OLI ','OLI ','OLT ','OLI ','OLI ','OLI ','ALD ','OLI ','NR ','TOL ','NR ','OLT ','NR ','TOL ','OLT ',& +'HC8 '/) + +INTEGER, PARAMETER, DIMENSION(N_RADM2) :: NMECH_MAP_RADM2=(/& ! mechanism species mapped + 1, 9, 8, 9, 9, 8, 8, 9, 8, 9, 8,12,12,12, 8, 8, 8, 8, 8, 9, 8, 9, 8, 9, 8, 9, 8,21, 9, 6,21, 9,& +21,21, 6,21, 9, 8, 8, 8, 9, 9, 8,21, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 8, 9, 8, 9, 8, 9, 8, 8, 8, 8,& + 9, 9, 9, 8, 8, 9, 8, 8, 8, 8, 8, 9, 8, 8, 9, 8, 9, 8, 9, 8, 9, 8,21, 1, 4,11, 2,21,20,18,10, 4,& +14,13,15, 1, 1,21,11,10, 9, 8,10, 5, 5, 6, 8, 8,10,10, 6,10, 6, 9,10, 5,21,15, 8, 9,12,16, 9, 3,& + 7,21, 4, 9,21,21, 8,17, 3,17, 3,17,21,21,21,17, 2,17, 8,17, 8,17, 9, 8, 6, 6,19, 8, 8, 9, 8,10,& + 5, 8, 8, 9, 8, 8, 8,10, 8,21,12,21, 9,21,12, 9, 6/) + + ! to SPC_RADM2.EXT +REAL, PARAMETER, DIMENSION(N_RADM2) :: XCONV_FAC_RADM2=(/& ! conversion factor + 1., 0.5, 0.5, 1., 0.5, 0.5, 1., 0.5, 0.5, 1., 1., 1., 1., 1., 1., 1.,& + 1., 1., 1., 0.5, 0.5, 1., 1., 1., 1., 0.5, 0.5, 1., 1.,0.388, 1., 1.,& + 1., 1.,0.755, 1., 0.5, 0.5, 1., 1., 1., 1., 1., 1., 0.5, 0.5, 0.5, 0.5,& + 0.5, 0.5, 1., 1., 0.5, 0.5, 1., 0.5, 0.5, 1., 1., 0.5, 0.5, 1., 1., 1.,& + 1., 1., 0.5, 0.5, 1., 0.5, 0.5, 1., 1., 1., 1., 1., 1., 1., 0.5, 0.5,& + 1., 1., 0.5, 0.5, 0.5, 0.5, 1., 1.,0.402,0.253, 1., 1., 1., 1., 1.,1.198,& + 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,1.226,1.049, 1., 1., 1.,& + 1., 1., 1., 1.,1.119, 1., 1.,0.847, 1., 1., 1., 1., 1., 1., 1., 1.,& + 1., 1.,0.519, 1., 1., 1., 1., 2., 1., 2., 1., 1., 1., 1., 1., 1.,& + 1., 1., 1., 2., 1., 2., 0.5, 0.5, 1.,1.238, 1., 1., 1., 0.5, 0.5, 1.,& +1.697, 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,& + 1./) + +!**************************************************************************************************************** +!**************************************************************************************************************** + + INTEGER, PARAMETER :: N_RACM_SPC = 23 ! Number of mechanism species + +CHARACTER(LEN=4), PARAMETER, DIMENSION(N_RACM_SPC) :: CMECH_SPC_RACM=(/& ! Mechanism species name +'ISO ','CH4 ','ETH ','HC3 ','HC5 ','HC8 ','OL2 ','OLI ','OLT ','ALD ','KET ','TOL ','HCHO','ORA1','ORA2','API ',& +'LIM ','CO ','SO2 ','NO ','HNO3','NO2 ','NR '/) + +REAL, PARAMETER, DIMENSION(N_RACM_SPC) :: XMECH_MWT_RACM=(/& ! Mechanism species mol. wt. + 68., 16., 30., 44., 72., 114., 28., 68., 42., 44., 72., 92., 30., 46., 60., 136.,& + 136., 28., 64., 30., 63., 46., 1./) + +INTEGER, PARAMETER :: N_RACM = 159 ! Number of map species + +CHARACTER(LEN=17), PARAMETER, DIMENSION(N_RACM) :: CSPMH_NAM_RACM=(/& ! speciated species name +'isoprene ','myrcene ','sabinene ','limonene ','carene_3 ','ocimene_t_b ',& +'pinene_b ','pinene_a ','A_2met_styrene ','cymene_p ','cymene_o ','phellandrene_a ',& +'thujene_a ','terpinene_a ','terpinene_g ','terpinolene ','phellandrene_b ','camphene ',& +'bornene ','fenchene_a ','ocimene_al ','ocimene_c_b ','tricyclene ','estragole ',& +'camphor ','fenchone ','piperitone ','thujone_a ','thujone_b ','cineole_1_8 ',& +'borneol ','linalool ','terpineol_4 ','terpineol_a ','linalool_OXD_c ','linalool_OXD_t ',& +'ionone_b ','bornyl_ACT ','farnescene_a ','caryophyllene_b ','acoradiene ','aromadendrene ',& +'bergamotene_a ','bergamotene_b ','bisabolene_a ','bisabolene_b ','bourbonene_b ','cadinene_d ',& +'cadinene_g ','cedrene_a ','copaene_a ','cubebene_a ','cubebene_b ','elemene_b ',& +'farnescene_b ','germacrene_B ','germacrene_D ','gurjunene_b ','humulene_a ','humulene_g ',& +'isolongifolene ','longifolene ','longipinene ','muurolene_a ','muurolene_g ','selinene_b ',& +'selinene_d ','nerolidol_c ','nerolidol_t ','cedrol ','MBO_2m3e2ol ','methanol ',& +'acetone ','methane ','ammonia ','nitrous_OXD ','nitric_OXD ','acetaldehyde ',& +'ethanol ','formic_acid ','formaldehyde ','acetic_acid ','MBO_3m2e1ol ','MBO_3m3e1ol ',& +'benzaldehyde ','butanone_2 ','decanal ','dodecene_1 ','geranyl_acetone ','heptanal ',& +'heptane ','hexane ','met_benzoate ','met_heptenone ','neryl_acetone ','nonanal ',& +'nonenal ','nonenal ','octanal ','octanol ','octenol_1e3ol ','oxopentanal ',& +'pentane ','phenyl_CCO ','pyruvic_acid ','terpinyl_ACT_a ','tetradecene_1 ','toluene ',& +'carbon_monoxide ','butene ','ethane ','ethene ','hydrogen_cyanide ','propane ',& +'propene ','carbon_2s ','carbonyl_s ','diallyl_2s ','diallyl_2s ','A_2met_2s ',& +'A_2met_2s ','A_2met_s ','A_2met_s ','met_chloride ','met_bromide ','met_iodide ',& +'hydrogen_s ','met_mercaptan ','met_mercaptan ','met_propenyl_2s ','met_propenyl_2s ','PPPP_2s ',& +'PPPP_2s ','A_2met_nonatriene','met_salicylate ','indole ','indole ','jasmone ',& +'met_jasmonate ','A_3met_3DCTT ','A_3met_3DCTT ','hexanal ','hexanol_1 ','hexenal_c3 ',& +'hexenal_t2 ','hexenol_c3 ','hexenyl_ACT_c3 ','homosalate ','Ehsalate ','pentanal ',& +'heptanone ','anisole ','verbenene ','benzyl-acetate ','myrtenal ','benzyl-alcohol ',& +'meta-cymenene ','ipsenol ','Napthalene '/) + + +INTEGER, PARAMETER, DIMENSION(N_RACM) :: NSPMH_MAP_RACM=(/& ! speciated species name + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,& + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,& + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,& + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,& + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,& + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,& + 97, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,& +112,113,114,115,116,117,117,118,118,119,119,120,121,122,123,124,& +124,125,125,126,126,127,128,129,129,130,131,132,132,133,134,135,& +136,137,138,139,140,141,142,143,144,145,146,147,148,149,150/) + + ! mapped to SPC_SPCAT.EXT +CHARACTER(LEN=4), PARAMETER, DIMENSION(N_RACM) :: CMECH_NAM_RACM=(/& ! mechanism species +'ISO ','LIM ','API ','LIM ','API ','LIM ','API ','API ','LIM ','LIM ','LIM ','LIM ','API ','LIM ','LIM ','LIM ',& +'LIM ','API ','API ','API ','LIM ','LIM ','NR ','LIM ','HC8 ','NR ','API ','NR ','NR ','HC8 ','NR ','LIM ',& +'API ','API ','LIM ','LIM ','LIM ','NR ','LIM ','LIM ','LIM ','API ','LIM ','LIM ','LIM ','LIM ','API ','LIM ',& +'LIM ','API ','API ','API ','API ','LIM ','LIM ','LIM ','LIM ','API ','LIM ','LIM ','API ','API ','API ','LIM ',& +'LIM ','LIM ','LIM ','LIM ','LIM ','NR ','ISO ','HC3 ','KET ','CH4 ','NR ','NO2 ','NO ','ALD ','HC3 ','ORA1',& +'HCHO','ORA2','ISO ','ISO ','NR ','KET ','ALD ','OLT ','LIM ','ALD ','HC5 ','HC5 ','HC8 ','OLI ','OLI ','ALD ',& +'HC8 ','ALD ','ALD ','HC8 ','OLT ','ALD ','HC5 ','NR ','ORA2','API ','OLT ','TOL ','CO ','OLT ','ETH ','ETE ',& +'NR ','HC3 ','OLT ','NR ','NR ','OLI ','SO2 ','ETH ','SO2 ','ETH ','SO2 ','NR ','NR ','NR ','SO2 ','CH4 ',& +'SO2 ','OLI ','SO2 ','OLI ','SO2 ','LIM ','HC8 ','HC8 ','HNO3','LIM ','LIM ','OLI ','OLT ','ALD ','HC5 ','OLI ',& +'OLI ','OLT ','OLI ','LIM ','LIM ','ALD ','OLI ','NR ','LIM ','NR ','LIM ','NR ','LIM ','LIM ','HC8 '/) + +INTEGER, PARAMETER, DIMENSION(N_RACM) :: NMECH_MAP_RACM=(/& ! mechanism species mapped + 1,17,16,17,16,17,16,16,17,17,17,17,16,17,17,17,17,16,16,16,17,17,23,17, 6,23,16,23,23, 6,23,17,& +16,16,17,17,17,23,17,17,17,16,17,17,17,17,16,17,17,16,16,16,16,17,17,17,17,16,17,17,16,16,16,17,& +17,17,17,17,17,23, 1, 4,11, 2,23,22,20,10, 4,14,13,15, 1, 1,23,11,10, 9,17,10, 5, 5, 6, 8, 8,10,& + 6,10,10, 6, 9,10, 5,23,15,16, 9,12,18, 9, 3, 7,23, 4, 9,23,23, 8,19, 3,19, 3,19,23,23,23,19, 2,& +19, 8,19, 8,19,17, 6, 6,21,17,17, 8, 9,10, 5, 8, 8, 9, 8,17,17,10, 8,23,17,23,17,23,17,17, 6/) + + ! to SPC_RACM.EXT +REAL, PARAMETER, DIMENSION(N_RACM) :: XCONV_FAC_RACM=(/& ! conversion factor + 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,& + 1., 1., 1., 1., 1., 1., 1., 1., 0.38, 1., 1., 1., 1.,0.738, 1., 1.,& + 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,& + 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,& + 1., 1., 1., 1., 1., 1., 1., 0.49, 0.33, 1., 1., 1., 1., 1., 1.37, 1.,& + 1., 1., 1., 1., 1., 1.61, 1., 1., 1., 1.,1.236,1.058, 1., 1., 1., 1.,& + 1., 1., 1.,1.092, 1., 1.,0.854, 1., 1., 1., 1., 1., 1., 1., 1., 1.,& + 1., 0.57, 1., 1., 1., 1., 2., 1., 2., 1., 1., 1., 1., 1., 1., 1.,& + 1., 1., 2., 1., 2., 1., 1.,1.201, 1., 1., 1., 0.5, 0.5, 1., 1.71, 1.,& + 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1./) + + +!**************************************************************************************************************** +!**************************************************************************************************************** + +INTEGER, PARAMETER :: N_CBMZ_SPC = 23 ! Number of mechanism species + +CHARACTER(LEN=5), PARAMETER, DIMENSION(N_CBMZ_SPC) :: CMECH_SPC_CBMZ=(/& ! Mechanism species name +'ISOP ','NO ','NO2 ','CO ','CH3OH','ANOL ','ALD2 ','HCHO ','HCOOH','RCOOH','CH4 ','C2H6 ','PAR ','ETH ','OLET ','OLEI ',& +'CRES ','AONE ','TOL ','XYL ','DMS ','NH3 ','NR '/) + +REAL, PARAMETER, DIMENSION(N_CBMZ_SPC) :: XMECH_MWT_CBMZ=(/& ! Mechanism species mol. wt. + 68.12, 30.01, 44.01, 28.01, 32.04, 46.07, 44.05, 30.03, 46.03, 60.05, 16.04, 30.07, 13.00, 28.05, 27.00, 26.00,& +108.14, 58.08, 92.14,106.17, 62.14, 17.03, 1.00/) + +INTEGER, PARAMETER :: N_CBMZ = 185 ! Number of map species + +CHARACTER(LEN=17), PARAMETER, DIMENSION(N_CBMZ) :: CSPMH_NAM_CBMZ=(/& ! speciated species name +'isoprene ','myrcene ','sabinene ','limonene ','carene_3 ','ocimene_t_b ',& +'pinene_b ','pinene_a ','A_2met_styrene ','cymene_p ','cymene_o ','phellandrene_a ',& +'thujene_a ','terpinene_a ','terpinene_g ','terpinolene ','phellandrene_b ','camphene ',& +'bornene ','fenchene_a ','ocimene_al ','ocimene_c_b ','tricyclene ','estragole ',& +'camphor ','fenchone ','piperitone ','thujone_a ','thujone_b ','cineole_1_8 ',& +'borneol ','linalool ','terpineol_4 ','terpineol_a ','linalool_OXD_c ','linalool_OXD_t ',& +'ionone_b ','bornyl_ACT ','farnescene_a ','caryophyllene_b ','acoradiene ','aromadendrene ',& +'bergamotene_a ','bergamotene_b ','bisabolene_a ','bisabolene_b ','bourbonene_b ','cadinene_d ',& +'cadinene_g ','cedrene_a ','copaene_a ','cubebene_a ','cubebene_b ','elemene_b ',& +'farnescene_b ','germacrene_B ','germacrene_D ','gurjunene_b ','humulene_a ','humulene_g ',& +'isolongifolene ','longifolene ','longipinene ','muurolene_a ','muurolene_g ','selinene_b ',& +'selinene_d ','nerolidol_c ','nerolidol_t ','cedrol ','MBO_2m3e2ol ','MBO_2m3e2ol ',& +'methanol ','acetone ','methane ','ammonia ','nitrous_OXD ','nitric_OXD ',& +'acetaldehyde ','ethanol ','formic_acid ','formaldehyde ','acetic_acid ','MBO_3m2e1ol ',& +'MBO_3m2e1ol ','MBO_3m3e1ol ','MBO_3m3e1ol ','benzaldehyde ','butanone_2 ','butanone_2 ',& +'decanal ','decanal ','dodecene_1 ','dodecene_1 ','geranyl_acetone ','heptanal ',& +'heptanal ','heptane ','hexane ','met_benzoate ','met_heptenone ','met_heptenone ',& +'met_heptenone ','neryl_acetone ','neryl_acetone ','neryl_acetone ','nonanal ','nonanal ',& +'nonenal ','nonenal ','nonenal ','octanal ','octanal ','octanol ',& +'octenol_1e3ol ','octenol_1e3ol ','oxopentanal ','oxopentanal ','pentane ','phenyl_CCO ',& +'phenyl_CCO ','pyruvic_acid ','pyruvic_acid ','terpinyl_ACT_a ','tetradecene_1 ','tetradecene_1 ',& +'toluene ','carbon_monoxide ','butene ','butene ','ethane ','ethene ',& +'hydrogen_cyanide ','propane ','propene ','propene ','carbon_2s ','carbonyl_s ',& +'diallyl_2s ','diallyl_2s ','diallyl_2s ','A_2met_2s ','A_2met_s ','met_chloride ',& +'met_bromide ','met_iodide ','hydrogen_s ','met_mercaptan ','met_propenyl_2s ','met_propenyl_2s ',& +'PPPP_2s ','PPPP_2s ','PPPP_2s ','A_2met_nonatriene','met_salicylate ','indole ',& +'jasmone ','met_jasmonate ','A_3met_3DCTT ','hexanal ','hexanal ','hexanol_1 ',& +'hexenal_c3 ','hexenal_c3 ','hexenal_c3 ','hexenal_t2 ','hexenal_t2 ','hexenal_t2 ',& +'hexenol_c3 ','hexenol_c3 ','hexenyl_ACT_c3 ','hexenyl_ACT_c3 ','hexenyl_ACT_c3 ','homosalate ',& +'Ehsalate ','pentanal ','heptanone ','anisole ','verbenene ','benzyl-acetate ',& +'myrtenal ','benzyl-alcohol ','meta-cymenene ','ipsenol ','Napthalene '/) + +INTEGER, PARAMETER, DIMENSION(N_CBMZ) :: NSPMH_MAP_CBMZ=(/& ! speciated species name + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,& + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,& + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,& + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,& + 65, 66, 67, 68, 69, 70, 71, 71, 72, 73, 74, 75, 76, 77, 78, 79,& + 80, 81, 82, 83, 83, 84, 84, 85, 86, 86, 87, 87, 88, 88, 89, 90,& + 90, 91, 92, 93, 94, 94, 94, 95, 95, 95, 96, 96, 97, 97, 97, 98,& + 98, 99,100,100,101,101,102,103,103,104,104,105,106,106,107,108,& +109,109,110,111,112,113,114,114,115,116,117,117,117,118,119,120,& +121,122,123,124,125,125,126,126,126,127,128,129,130,131,132,133,& +133,134,135,135,135,136,136,136,137,137,138,138,138,139,140,141,& +142,143,144,145,146,147,148,149,150/) + + ! mapped to SPC_SPCAT.EXT +CHARACTER(LEN=5), PARAMETER, DIMENSION(N_CBMZ) :: CMECH_NAM_CBMZ=(/& ! mechanism species +'ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ',& +'ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ',& +'ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ',& +'ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ',& +'ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','OLET ','PAR ','CH3OH','AONE ','CH4 ','NH3 ','NR ','NO ','ALD2 ','ANOL ',& +'HCOOH','HCHO ','RCOOH','ALD2 ','PAR ','HCHO ','PAR ','TOL ','AONE ','PAR ','ALD2 ','PAR ','OLET ','PAR ','ISOP ','ALD2 ',& +'PAR ','PAR ','PAR ','TOL ','AONE ','PAR ','OLET ','AONE ','PAR ','OLEI ','ALD2 ','PAR ','ALD2 ','PAR ','OLEI ','ALD2 ',& +'PAR ','PAR ','PAR ','OLET ','PAR ','ALD2 ','PAR ','ALD2 ','TOL ','HCOOH','AONE ','ISOP ','PAR ','OLET ','TOL ','CO ',& +'OLET ','PAR ','C2H6 ','ETH ','NR ','PAR ','OLET ','PAR ','NR ','NR ','DMS ','PAR ','OLET ','DMS ','DMS ','NR ',& +'NR ','NR ','NR ','PAR ','DMS ','OLEI ','DMS ','PAR ','OLEI ','ISOP ','TOL ','TOL ','ISOP ','ISOP ','ISOP ','ALD2 ',& +'PAR ','PAR ','ALD2 ','PAR ','OLEI ','ALD2 ','PAR ','OLEI ','PAR ','OLEI ','AONE ','PAR ','OLEI ','ISOP ','ISOP ','ALD2 ',& +'AONE ','TOL ','ISOP ','TOL ','ISOP ','TOL ','ISOP ','ISOP ','TOL '/) + +INTEGER, PARAMETER, DIMENSION(N_CBMZ) :: NMECH_MAP_CBMZ=(/& ! mechanism species mapped + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,& + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,& + 1, 1, 1, 1, 1, 1,15,13, 5,18,11,22,23, 2, 7, 6, 9, 8,10, 7,13, 8,13,19,18,13, 7,13,15,13, 1, 7,& +13,13,13,19,18,13,15,18,13,16, 7,13, 7,13,16, 7,13,13,13,15,13, 7,13, 7,19, 9,18, 1,13,15,19, 4,& +15,13,12,14,23,13,15,13,23,23,21,13,15,21,21,23,23,23,23,13,21,16,21,13,16, 1,19,19, 1, 1, 1, 7,& +13,13, 7,13,16, 7,13,16,13,16,18,13,16, 1, 1, 7,18,19, 1,19, 1,19, 1, 1,19/) + +REAL, PARAMETER, DIMENSION(N_CBMZ) :: XCONV_FAC_CBMZ=(/& ! conversion factor + 1., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2.,& + 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2.,& + 2., 2., 2., 2., 3., 2., 3., 3., 3., 3., 3., 3., 3., 3., 3., 3.,& + 3., 3., 3., 3., 3., 3., 3., 3., 3., 3., 3., 3., 3., 3., 3., 3.,& + 3., 3., 3., 3., 3., 3., 1., 3., 1., 1., 1., 1., 1., 1., 1., 1.,& + 1., 1., 1., 1., 3., 1., 4., 1., 1., 1., 1., 8., 1., 10., 3., 1.,& + 5., 7., 6., 1., 1., 3., 1., 1., 8., 2., 1., 7., 1., 6., 1., 1.,& + 6., 8., 6., 1., 3., 1., 5., 1., 1., 1., 1., 2., 12., 1., 1., 1.,& + 1., 2., 1., 1., 1., 3., 1., 1., 1., 1., 1., 2., 2., 1., 1., 1.,& + 1., 1., 1., 1., 1., 1., 1., 2., 1., 2., 1., 1., 2., 3., 3., 1.,& + 4., 6., 1., 3., 1., 1., 6., 1., 5., 1., 1., 3., 1., 1., 1., 1.,& + 1., 1., 1., 1., 1., 1., 1., 1., 1./) + +!**************************************************************************************************************** +!**************************************************************************************************************** + +INTEGER, PARAMETER :: N_SAPRC99_SPC=28 + +CHARACTER(LEN=8), DIMENSION(N_SAPRC99_SPC) :: CMECH_SPC_SAPRC99=(/& ! Mechanism species name +'ISOPRENE','TRP1 ','MEOH ','ACET ','CH4 ','NO ','NO2 ','NH3 ','CCHO ','HCOOH ',& +'HCHO ','CCO_OH ','BALD ','MEK ','RCO_OH ','CO ','ETHENE ','ALK1 ','ALK2 ','ALK3 ',& +'ALK4 ','ALK5 ','ARO1 ','ARO2 ','OLE1 ','OLE2 ','RCHO ','NONR '/) + + +REAL, DIMENSION(N_SAPRC99_SPC) :: XMECH_MWT_SAPRC99=(/& ! Mechanism species molecular weight + 68.0,136.0, 32.0, 58.0, 16.0, 30.0,44.01, 17.0, 44.0, 46.0, 30.0, 60.0,106.0, 72.0, 74.0, 28.0,& + 28.0, 30.1, 36.7, 58.6, 77.6,118.9, 98.6,118.7, 72.3, 75.8, 58.0, 1.0/) + + +INTEGER, PARAMETER :: N_SAPRC99=150 + +CHARACTER(LEN=16), DIMENSION(N_SAPRC99) :: CSPMH_NAM_SAPRC99=(/& ! speciated species name +'isoprene ','myrcene ','sabinene ','limonene ','carene_3 ','ocimene_t_b ',& +'pinene_b ','pinene_a ','2met_styrene ','cymene_p ','cymene_o ','phellandrene_a ',& +'thujene_a ','terpinene_a ','terpinene_g ','terpinolene ','phellandrene_b ','camphene ',& +'bornene ','fenchene_a ','ocimene_al ','ocimene_c_b ','tricyclene ','estragole ',& +'camphor ','fenchone ','piperitone ','thujone_a ','thujone_b ','cineole_1_8 ',& +'borneol ','linalool ','terpineol_4 ','terpineol_a ','linalool_OXD_c ','linalool_OXD_t ',& +'ionone_b ','bornyl_ACT ','farnescene_a ','caryophyllene_b ','acoradiene ','aromadendrene ',& +'bergamotene_a ','bergamotene_b ','bisabolene_a ','bisabolene_b ','bourbonene_b ','cadinene_d ',& +'cadinene_g ','cedrene_a ','copaene_a ','cubebene_a ','cubebene_b ','elemene_b ',& +'farnescene_b ','germacrene_B ','germacrene_D ','gurjunene_b ','humulene_a ','humulene_g ',& +'isolongifolene ','longifolene ','longipinene ','muurolene_a ','muurolene_g ','selinene_b ',& +'selinene_d ','nerolidol_c ','nerolidol_t ','cedrol ','MBO_2m3e2ol ','methanol ',& +'acetone ','methane ','ammonia ','nitrous_OXD ','nitric_OXD ','acetaldehyde ',& +'ethanol ','formic_acid ','formaldehyde ','acetic_acid ','MBO_3m2e1ol ','MBO_3m3e1ol ',& +'benzaldehyde ','butanone_2 ','decanal ','dodecene_1 ','geranyl_acetone ','heptanal ',& +'heptane ','hexane ','met_benzoate ','met_heptenone ','neryl_acetone ','nonanal ',& +'nonenal ','octanal ','octanol ','octenol_1e3ol ','oxopentanal ','pentane ',& +'phenyl_CCO ','pyruvic_acid ','terpinyl_ACT_a ','tetradecene_1 ','toluene ','carbon_monoxide ',& +'butene ','ethane ','ethene ','hydrogen_cyanide','propane ','propene ',& +'carbon_2s ','carbonyl_s ','diallyl_2s ','2met_2s ','2met_s ','met_chloride ',& +'met_bromide ','met_iodide ','hydrogen_s ','met_mercaptan ','met_propenyl_2s ','PPPP_2s ',& +'2met_nonatriene ','met_salicylate ','indole ','jasmone ','met_jasmonate ','3met_3DCTT ',& +'hexanal ','hexanol_1 ','hexenal_c3 ','hexenal_t2 ','hexenol_c3 ','hexenyl_ACT_c3 ',& +'homosalate ','Ehsalate ','pentanal ','heptanone ','anisole ','verbenene ',& +'benzyl-acetate ','myrtenal ','benzyl-alcohol ','meta-cymenene ','ipsenol ','Napthalene '/) + +INTEGER, DIMENSION(N_SAPRC99) :: NSPMH_MAP_SAPRC99=(/& ! speciated species name + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,& + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,& + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,& + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,& + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,& + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,& + 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,112,& +113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,& +129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,& +145,146,147,148,149,150/) + +CHARACTER(LEN=8), DIMENSION(N_SAPRC99) :: CMECH_NAM_SAPRC99=(/& ! mechanism species +'ISOPRENE','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','OLE2 ','ARO2 ',& +'ARO2 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ',& +'TRP1 ','TRP1 ','ALK5 ','TRP1 ','TRP1 ','ALK5 ','TRP1 ','ALK5 ','ALK5 ','ALK5 ',& +'ALK5 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','ALK5 ','TRP1 ','TRP1 ',& +'TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ',& +'TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ',& +'TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','ALK5 ',& +'ISOPRENE','MEOH ','ACET ','CH4 ','NH3 ','NONR ','NO ','CCHO ','ALK3 ','HCOOH ',& +'HCHO ','CCO_OH ','ISOPRENE','ISOPRENE','BALD ','MEK ','RCHO ','OLE1 ','TRP1 ','RCHO ',& +'ALK5 ','ALK4 ','ARO1 ','OLE2 ','OLE2 ','RCHO ','OLE1 ','RCHO ','ALK5 ','OLE1 ',& +'RCHO ','ALK4 ','ARO1 ','RCO_OH ','TRP1 ','OLE1 ','ARO1 ','CO ','OLE1 ','ALK1 ',& +'ETHENE ','NONR ','ALK2 ','OLE1 ','NONR ','NONR ','OLE1 ','ALK5 ','ALK4 ','NONR ',& +'NONR ','NONR ','NONR ','ALK5 ','OLE1 ','OLE1 ','TRP1 ','ARO1 ','ARO2 ','TRP1 ',& +'TRP1 ','TRP1 ','RCHO ','ALK5 ','OLE2 ','OLE2 ','OLE2 ','OLE2 ','TRP1 ','TRP1 ',& +'RCHO ','OLE2 ','BALD ','ARO2 ','ARO1 ','TRP1 ','ARO1 ','ARO2 ','TRP1 ','ARO2 '/) + +INTEGER, DIMENSION(N_SAPRC99) :: NMECH_MAP_SAPRC99=(/& ! mechanism species mapped + 1, 2, 2, 2, 2, 2, 2, 2,26,24,24, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,22, 2, 2,22, 2,22,22,22,22, 2,& + 2, 2, 2, 2, 2,22, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,& + 2, 2, 2, 2, 2,22, 1, 3, 4, 5, 8,28, 6, 9,20,10,11,12, 1, 1,13,14,27,25, 2,27,22,21,23,26,26,27,& +25,27,22,25,27,21,23,15, 2,25,23,16,25,18,17,28,19,25,28,28,25,22,21,28,28,28,28,22,25,25, 2,23,& +24, 2, 2, 2,27,22,26,26,26,26, 2, 2,27,26,13,24,23, 2,23,24, 2,24/) + +REAL, DIMENSION(N_SAPRC99) :: XCONV_FAC_SAPRC99=(/& ! conversion factor + 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,& + 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,& + 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,& + 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,& + 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1./) + + +!**************************************************************************************************************** +!**************************************************************************************************************** + +INTEGER, PARAMETER :: N_SAPRC99_Q_SPC=27 + +CHARACTER(LEN=8), DIMENSION(N_SAPRC99_Q_SPC) :: CMECH_SPC_SAPRC99_Q=(/& ! Mechanism species name +'ISOPRENE','TRP1 ','OLE2 ','ARO2 ','ALK5 ','XC ','OLE1 ','MEOH ','ACET ','CH4 ','NH3 ',& +'NO ','CCHO ','ALK3 ','HCOOH ','HCHO ','CCO_OH ','BALD ','MEK ','RCHO ','ALK4 ','ARO1 ',& +'BACL ','CO ','ALK1 ','ETHENE ','ALK2 '/) + + +REAL, DIMENSION(N_SAPRC99_Q_SPC) :: XMECH_MWT_SAPRC99_Q=(/& ! Mechanism species molecular weight + 68.0,136.0, 75.8,118.7,118.9, 12.0, 72.3, 32.0, 58.0, 16.0, 17.0, 30.0, 44.0, 58.6, 46.0, 30.0,& + 75.0,106.0, 72.0, 58.0, 77.6, 98.6, 86.0, 28.0, 30.1, 92.0, 36.7/) + + +INTEGER, PARAMETER :: N_SAPRC99_Q=145 + +CHARACTER(LEN=15), DIMENSION(N_SAPRC99_Q) :: CSPMH_NAM_SAPRC99_Q=(/& ! speciated species name +'isoprene ','myrcene ','sabinene ','limonene ','carene_3 ','ocimene_t_b ',& +'pinene_b ','pinene_a ','2met_styrene ','cymene_p ','cymene_o ','phellandrene_a ',& +'thujene_a ','terpinene_a ','terpinene_g ','terpinolene ','phellandrene_b ','camphene ',& +'bornene ','fenchene_a ','ocimene_al ','ocimene_c_b ','tricyclene ','estragole ',& +'camphor ','fenchone ','piperitone ','thujone_a ','thujone_b ','cineole_1_8 ',& +'borneol ','linalool ','terpineol_4 ','terpineol_a ','linalool_OXD_c ','linalool_OXD_t ',& +'ionone_b ','bornyl_ACT ','farnescene_a ','caryophyllene_b','acoradiene ','aromadendrene ',& +'bergamotene_a ','bergamotene_b ','bisabolene_a ','bisabolene_b ','bourbonene_b ','cadinene_d ',& +'cadinene_g ','cedrene_a ','copaene_a ','cubebene_a ','cubebene_b ','elemene_b ',& +'farnescene_b ','germacrene_B ','germacrene_D ','gurjunene_b ','humulene_a ','humulene_g ',& +'isolongifolene ','longifolene ','longipinene ','muurolene_a ','muurolene_g ','selinene_b ',& +'selinene_d ','nerolidol_c ','nerolidol_t ','cedrol ','MBO_2m3e2ol ','methanol ',& +'acetone ','methane ','ammonia ','nitric_OXD ','acetaldehyde ','ethanol ',& +'formic_acid ','formaldehyde ','acetic_acid ','MBO_3m2e1ol ','MBO_3m3e1ol ','benzaldehyde ',& +'butanone_2 ','decanal ','dodecene_1 ','geranyl_acetone','heptanal ','heptane ',& +'hexane ','met_benzoate ','met_heptenone ','neryl_acetone ','nonanal ','nonenal ',& +'octanal ','octanol ','octenol_1e3ol ','oxopentanal ','pentane ','phenyl_CCO ',& +'pyruvic_acid ','terpinyl_ACT_a ','tetradecene_1 ','toluene ','carbon_monoxide','butene ',& +'ethane ','ethene ','propane ','propene ','diallyl_2s ','2met_2s ',& +'2met_s ','met_chloride ','met_bromide ','met_iodide ','met_mercaptan ','met_propenyl_2s',& +'PPPP_2s ','2met_nonatriene','met_salicylate ','indole ','jasmone ','met_jasmonate ',& +'3met_3DCTT ','hexanal ','hexanol_1 ','hexenal_c3 ','hexenal_t2 ','hexenol_c3 ',& +'hexenyl_ACT_c3 ','homosalate ','Ehsalate ','pentanal ','heptanone ','anisole ',& +'verbenene ','benzyl-acetate ','myrtenal ','benzyl-alcohol ','meta-cymenene ','ipsenol ',& +'Napthalene '/) + +INTEGER, DIMENSION(N_SAPRC99_Q) :: NSPMH_MAP_SAPRC99_Q=(/& ! speciated species name + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,& + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,& + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,& + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,& + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 77, 78, 79, 80, 81,& + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,& + 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,113,114,& +117,118,119,120,121,122,124,125,126,127,128,129,130,131,132,133,& +134,135,136,137,138,134,135,136,137,138,139,140,141,142,143,144,& +145/) + +CHARACTER(LEN=8), DIMENSION(N_SAPRC99_Q) :: CMECH_NAM_SAPRC99_Q=(/& ! mechanism species +'ISOPRENE','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','OLE2 ','ARO2 ',& +'ARO2 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ',& +'TRP1 ','TRP1 ','ALK5 ','TRP1 ','TRP1 ','ALK5 ','TRP1 ','ALK5 ','ALK5 ','ALK5 ',& +'ALK5 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','TRP1 ','ALK5 ','XC ','XC ',& +'XC ','XC ','XC ','XC ','XC ','XC ','XC ','XC ','XC ','XC ',& +'XC ','XC ','XC ','XC ','XC ','XC ','XC ','XC ','XC ','XC ',& +'XC ','XC ','XC ','XC ','XC ','XC ','XC ','XC ','XC ','ALK5 ',& +'OLE1 ','MEOH ','ACET ','CH4 ','NH3 ','NO ','CCHO ','ALK3 ','HCOOH ','HCHO ',& +'CCO_OH ','OLE2 ','OLE1 ','BALD ','MEK ','RCHO ','OLE1 ','TRP1 ','RCHO ','ALK5 ',& +'ALK4 ','ARO1 ','OLE2 ','OLE2 ','RCHO ','OLE1 ','RCHO ','ALK5 ','OLE1 ','RCHO ',& +'ALK4 ','ARO1 ','BACL ','TRP1 ','OLE1 ','ARO1 ','CO ','OLE1 ','ALK1 ','ETHENE ',& +'ALK2 ','OLE1 ','OLE1 ','ALK3 ','ALK4 ','ALK2 ','ALK2 ','ALK2 ','ALK2 ','OLE1 ',& +'OLE1 ','TRP1 ','ARO1 ','ARO2 ','TRP1 ','TRP1 ','XC ','RCHO ','ALK5 ','OLE2 ',& +'OLE2 ','OLE2 ','OLE2 ','TRP1 ','TRP1 ','RCHO ','OLE2 ','BALD ','ARO2 ','ARO1 ',& +'TRP1 ','ARO1 ','ARO2 ','TRP1 ','ARO2 '/) + +INTEGER, DIMENSION(N_SAPRC99_Q) :: NMECH_MAP_SAPRC99_Q=(/& ! mechanism species mapped + 1, 2, 2, 2, 2, 2, 2, 2, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 2, 2, 5, 2, 5, 5, 5, 5, 2,& + 2, 2, 2, 2, 2, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,& + 6, 6, 6, 6, 6, 5, 7, 8, 9,10,11,12,13,14,15,16,17, 3, 7,18,19,20, 7, 2,20, 5,21,22, 3, 3,20, 7,& +20, 5, 7,20,21,22,23, 2, 7,22,24, 7,25,26,27, 7, 7,14,21,27,27,27,27, 7, 7, 2,22, 4, 2, 2, 6,20,& + 5, 3, 3, 3, 3, 2, 2,27,26,13,24,23, 2,23,24, 2,24/) + +REAL, DIMENSION(N_SAPRC99_Q) :: XCONV_FAC_SAPRC99_Q=(/& ! conversion factor + 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,& + 1., 1., 1., 1., 1., 1.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,& +15.,15.,15.,15.,15., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,& + 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,16., 1.,& + 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1./) + +!**************************************************************************************************************** +!**************************************************************************************************************** + +INTEGER, PARAMETER :: N_SAPRC99_X_SPC=27 + +CHARACTER(LEN=4), DIMENSION(N_SAPRC99_X_SPC) :: CMECH_SPC_SAPRC99_X=(/& ! Mechanism species name +'ISOP','TERP','OLE2','ARO2','ALK5','XC ','OLE1','MEOH','ACET','CH4 ','NH3 ','NO ','CCHO','ALK3','HC2H','HCHO',& +'CO2H','BALD','MEK ','RCHO','ALK4','ARO1','BACL','CO ','ALK1','ETHE','ALK2'/) + + +REAL, DIMENSION(N_SAPRC99_X_SPC) :: XMECH_MWT_SAPRC99_X=(/& ! Mechanism species molecular weight + 68.0,136.0, 75.8,118.7,118.9, 12.0, 72.3, 32.0, 58.0, 16.0, 17.0, 30.0, 44.0, 58.6, 46.0, 30.0,& + 75.0,106.0, 72.0, 58.0, 77.6, 98.6, 86.0, 28.0, 30.1, 92.0, 36.7/) + + +INTEGER, PARAMETER :: N_SAPRC99_X=145 + +CHARACTER(LEN=15), DIMENSION(N_SAPRC99_X) :: CSPMH_NAM_SAPRC99_X=(/& ! speciated species name +'isoprene ','myrcene ','sabinene ','limonene ','carene_3 ','ocimene_t_b ',& +'pinene_b ','pinene_a ','2met_styrene ','cymene_p ','cymene_o ','phellandrene_a ',& +'thujene_a ','terpinene_a ','terpinene_g ','terpinolene ','phellandrene_b ','camphene ',& +'bornene ','fenchene_a ','ocimene_al ','ocimene_c_b ','tricyclene ','estragole ',& +'camphor ','fenchone ','piperitone ','thujone_a ','thujone_b ','cineole_1_8 ',& +'borneol ','linalool ','terpineol_4 ','terpineol_a ','linalool_OXD_c ','linalool_OXD_t ',& +'ionone_b ','bornyl_ACT ','farnescene_a ','caryophyllene_b','acoradiene ','aromadendrene ',& +'bergamotene_a ','bergamotene_b ','bisabolene_a ','bisabolene_b ','bourbonene_b ','cadinene_d ',& +'cadinene_g ','cedrene_a ','copaene_a ','cubebene_a ','cubebene_b ','elemene_b ',& +'farnescene_b ','germacrene_B ','germacrene_D ','gurjunene_b ','humulene_a ','humulene_g ',& +'isolongifolene ','longifolene ','longipinene ','muurolene_a ','muurolene_g ','selinene_b ',& +'selinene_d ','nerolidol_c ','nerolidol_t ','cedrol ','MBO_2m3e2ol ','methanol ',& +'acetone ','methane ','ammonia ','nitric_OXD ','acetaldehyde ','ethanol ',& +'formic_acid ','formaldehyde ','acetic_acid ','MBO_3m2e1ol ','MBO_3m3e1ol ','benzaldehyde ',& +'butanone_2 ','decanal ','dodecene_1 ','geranyl_acetone','heptanal ','heptane ',& +'hexane ','met_benzoate ','met_heptenone ','neryl_acetone ','nonanal ','nonenal ',& +'octanal ','octanol ','octenol_1e3ol ','oxopentanal ','pentane ','phenyl_CCO ',& +'pyruvic_acid ','terpinyl_ACT_a ','tetradecene_1 ','toluene ','carbon_monoxide','butene ',& +'ethane ','ethene ','propane ','propene ','diallyl_2s ','2met_2s ',& +'2met_s ','met_chloride ','met_bromide ','met_iodide ','met_mercaptan ','met_propenyl_2s',& +'PPPP_2s ','2met_nonatriene','met_salicylate ','indole ','jasmone ','met_jasmonate ',& +'3met_3DCTT ','hexanal ','hexanol_1 ','hexenal_c3 ','hexenal_t2 ','hexenol_c3 ',& +'hexenyl_ACT_c3 ','homosalate ','Ehsalate ','pentanal ','heptanone ','anisole ',& +'verbenene ','benzyl-acetate ','myrtenal ','benzyl-alcohol ','meta-cymenene ','ipsenol ',& +'Napthalene '/) + + +INTEGER, DIMENSION(N_SAPRC99_X) :: NSPMH_MAP_SAPRC99_X=(/& ! speciated species name + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,& + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,& + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,& + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,& + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 77, 78, 79, 80, 81,& + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,& + 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,113,114,& +117,118,119,120,121,122,124,125,126,127,128,129,130,131,132,133,& +134,135,136,137,138,134,135,136,137,138,139,140,141,142,143,144,& +145/) + + +CHARACTER(LEN=4), DIMENSION(N_SAPRC99_X) :: CMECH_NAM_SAPRC99_X=(/& ! mechanism species +'ISOP','TERP','TERP','TERP','TERP','TERP','TERP','TERP','OLE2','ARO2','ARO2','TERP','TERP','TERP','TERP','TERP',& +'TERP','TERP','TERP','TERP','TERP','TERP','ALK5','TERP','TERP','ALK5','TERP','ALK5','ALK5','ALK5','ALK5','TERP',& +'TERP','TERP','TERP','TERP','TERP','ALK5','XC ','XC ','XC ','XC ','XC ','XC ','XC ','XC ','XC ','XC ',& +'XC ','XC ','XC ','XC ','XC ','XC ','XC ','XC ','XC ','XC ','XC ','XC ','XC ','XC ','XC ','XC ',& +'XC ','XC ','XC ','XC ','XC ','ALK5','OLE1','MEOH','ACET','CH4 ','NH3 ','NO ','CCHO','ALK3','HC2H','HCHO',& +'CO2H','OLE2','OLE1','BALD','MEK ','RCHO','OLE1','TERP','RCHO','ALK5','ALK4','ARO1','OLE2','OLE2','RCHO','OLE1',& +'RCHO','ALK5','OLE1','RCHO','ALK4','ARO1','BACL','TERP','OLE1','ARO1','CO ','OLE1','ALK1','ETHE','ALK2','OLE1',& +'OLE1','ALK3','ALK4','ALK2','ALK2','ALK2','ALK2','OLE1','OLE1','TERP','ARO1','ARO2','TERP','TERP','XC ','RCHO',& +'ALK5','OLE2','OLE2','OLE2','OLE2','TERP','TERP','RCHO','OLE2','BALD','ARO2','ARO1','TERP','ARO1','ARO2','TERP',& +'ARO2'/) + +INTEGER, DIMENSION(N_SAPRC99_X) :: NMECH_MAP_SAPRC99_X=(/& ! mechanism species mapped + 1, 2, 2, 2, 2, 2, 2, 2, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 2, 2, 5, 2, 5, 5, 5, 5, 2,& + 2, 2, 2, 2, 2, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,& + 6, 6, 6, 6, 6, 5, 7, 8, 9,10,11,12,13,14,15,16,17, 3, 7,18,19,20, 7, 2,20, 5,21,22, 3, 3,20, 7,& +20, 5, 7,20,21,22,23, 2, 7,22,24, 7,25,26,27, 7, 7,14,21,27,27,27,27, 7, 7, 2,22, 4, 2, 2, 6,20,& + 5, 3, 3, 3, 3, 2, 2,27,26,13,24,23, 2,23,24, 2,24/) + +REAL, DIMENSION(N_SAPRC99_X) :: XCONV_FAC_SAPRC99_X=(/& ! conversion factor + 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,& + 1., 1., 1., 1., 1., 1.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,& +15.,15.,15.,15.,15., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,& + 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,16., 1.,& + 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1./) + +!**************************************************************************************************************** +!**************************************************************************************************************** + +INTEGER, PARAMETER :: N_SOAX_SPC=8 + +CHARACTER(LEN=4), DIMENSION(N_SOAX_SPC) :: CMECH_SPC_SOAX=(/& ! Mechanism species name +'ISP ','TRP ','XYLA','CG5 ','SQT ','TOLA','CG6 ','CG4 '/) + +REAL, DIMENSION(N_SOAX_SPC) :: XMECH_MWT_SOAX=(/& ! Mechanism species molecular weight + 68.,136.,106.,180.,204., 92., 80.,130./) + + +INTEGER, PARAMETER :: N_SOAX=110 + +CHARACTER(LEN=15), DIMENSION(N_SOAX) :: CSPMH_NAM_SOAX=(/& ! speciated species name +'isoprene ','myrcene ','sabinene ','limonene ','carene_3 ','ocimene_t_b ',& +'pinene_b ','pinene_a ','2met_styrene ','cymene_p ','cymene_o ','phellandrene_a ',& +'thujene_a ','terpinene_a ','terpinene_g ','terpinolene ','phellandrene_b ','camphene ',& +'bornene ','fenchene_a ','ocimene_al ','ocimene_c_b ','estragole ','camphor ',& +'fenchone ','piperitone ','thujone_a ','thujone_b ','cineole_1_8 ','borneol ',& +'linalool ','terpineol_4 ','terpineol_a ','linalool_OXD_c ','linalool_OXD_t ','ionone_b ',& +'bornyl_ACT ','farnescene_a ','caryophyllene_b','acoradiene ','aromadendrene ','bergamotene_a ',& +'bergamotene_b ','bisabolene_a ','bisabolene_b ','bourbonene_b ','cadinene_d ','cadinene_g ',& +'cedrene_a ','copaene_a ','cubebene_a ','cubebene_b ','elemene_b ','farnescene_b ',& +'germacrene_B ','germacrene_D ','gurjunene_b ','humulene_a ','humulene_g ','isolongifolene ',& +'longifolene ','longipinene ','muurolene_a ','muurolene_g ','selinene_b ','selinene_d ',& +'nerolidol_c ','nerolidol_t ','cedrol ','benzaldehyde ','decanal ','geranyl_acetone',& +'heptanal ','met_benzoate ','met_heptenone ','neryl_acetone ','nonanal ','nonenal ',& +'octanal ','octanol ','octenol_1e3ol ','oxopentanal ','phenyl_CCO ','pyruvic_acid ',& +'terpinyl_ACT_a ','toluene ','2met_nonatriene','met_salicylate ','indole ','jasmone ',& +'met_jasmonate ','3met_3DCTT ','hexanal ','hexanol_1 ','hexenal_c3 ','hexenal_t2 ',& +'hexenol_c3 ','hexenyl_ACT_c3 ','homosalate ','Ehsalate ','pentanal ','heptanone ',& +'anisole ','verbenene ','benzyl-acetate ','myrtenal ','benzyl-alcohol ','meta-cymenene ',& +'ipsenol ','Napthalene '/) + +INTEGER, DIMENSION(N_SOAX) :: NSPMH_MAP_SOAX=(/& ! speciated species name + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,& + 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,& + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,& + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,& + 66, 67, 68, 69, 70, 85, 87, 89, 90, 93, 94, 95, 96, 97, 98, 99,& +100,101,103,104,105,107,127,128,129,130,131,132,133,134,135,136,& +137,138,139,140,141,142,143,144,145,146,147,148,149,150/) + +CHARACTER(LEN=16), DIMENSION(N_SOAX) :: CMECH_NAM_SOAX=(/& ! mechanism species +'ISP ','TRP ','TRP ','TRP ','TRP ','TRP ','TRP ','TRP ','XYLA','XYLA','XYLA','TRP ','TRP ','TRP ','TRP ','TRP ',& +'TRP ','TRP ','TRP ','TRP ','TRP ','TRP ','TRP ','CG5 ','CG5 ','TRP ','CG5 ','CG5 ','CG5 ','CG5 ','TRP ','TRP ',& +'TRP ','TRP ','TRP ','TRP ','CG5 ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ',& +'SQT ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ',& +'SQT ','SQT ','SQT ','SQT ','CG5 ','TOLA','CG5 ','TRP ','CG6 ','TOLA','CG6 ','CG5 ','CG6 ','CG6 ','CG6 ','CG6 ',& +'CG6 ','CG4 ','TOLA','CG4 ','TRP ','TOLA','TRP ','TOLA','TOLA','TRP ','TRP ','SQT ','CG4 ','CG4 ','CG4 ','CG4 ',& +'CG4 ','CG6 ','SQT ','SQT ','CG4 ','CG6 ','TOLA','TRP ','TOLA','TRP ','TOLA','XYLA','TRP ','XYLA'/) + +INTEGER, DIMENSION(N_SOAX) :: NMECH_MAP_SOAX=(/& ! mechanism species mapped + 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 4, 4, 4, 4, 2, 2,& + 2, 2, 2, 2, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,& + 5, 5, 5, 5, 4, 6, 4, 2, 7, 6, 7, 4, 7, 7, 7, 7, 7, 8, 6, 8, 2, 6, 2, 6, 6, 2, 2, 5, 8, 8, 8, 8,& + 8, 7, 5, 5, 8, 7, 6, 2, 6, 2, 6, 3, 2, 3/) + +REAL, DIMENSION(N_SOAX) :: XCONV_FAC_SOAX=(/& ! conversion factor + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,& + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,0.85,0.85, 1.0,0.85,0.85,0.86,0.86, 1.0, 1.0,& + 1.0, 1.0, 1.0, 1.0,1.09, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,& + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,& + 1.0, 1.0, 1.0, 1.0,1.24, 1.0,0.87, 1.0,0.63, 1.0,0.70,1.08,0.79,0.78,0.71,0.72,& +0.71,0.77, 1.0,0.68, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,0.77,0.79,0.76,0.76,& +0.77,0.79, 1.0, 1.0,0.77,0.70, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0/) + +!**************************************************************************************************************** +!**************************************************************************************************************** + +INTEGER,PARAMETER :: N_SPCA_SPC = 150 ! Number of speciated species + +CHARACTER(LEN=17), DIMENSION(N_SPCA_SPC) :: CSPCA_SPC=(/& ! speciated species name +'isoprene ','myrcene ','sabinene ','limonene ','carene_3 ','ocimene_t_b ',& +'pinene_b ','pinene_a ','A_2met_styrene ','cymene_p ','cymene_o ','phellandrene_a ',& +'thujene_a ','terpinene_a ','terpinene_g ','terpinolene ','phellandrene_b ','camphene ',& +'bornene ','fenchene_a ','ocimene_al ','ocimene_c_b ','tricyclene ','estragole ',& +'camphor ','fenchone ','piperitone ','thujone_a ','thujone_b ','cineole_1_8 ',& +'borneol ','linalool ','terpineol_4 ','terpineol_a ','linalool_OXD_c ','linalool_OXD_t ',& +'ionone_b ','bornyl_ACT ','farnescene_a ','caryophyllene_b ','acoradiene ','aromadendrene ',& +'bergamotene_a ','bergamotene_b ','bisabolene_a ','bisabolene_b ','bourbonene_b ','cadinene_d ',& +'cadinene_g ','cedrene_a ','copaene_a ','cubebene_a ','cubebene_b ','elemene_b ',& +'farnescene_b ','germacrene_B ','germacrene_D ','gurjunene_b ','humulene_a ','humulene_g ',& +'isolongifolene ','longifolene ','longipinene ','muurolene_a ','muurolene_g ','selinene_b ',& +'selinene_d ','nerolidol_c ','nerolidol_t ','cedrol ','MBO_2m3e2ol ','methanol ',& +'acetone ','methane ','ammonia ','nitrous_OXD ','nitric_OXD ','acetaldehyde ',& +'ethanol ','formic_acid ','formaldehyde ','acetic_acid ','MBO_3m2e1ol ','MBO_3m3e1ol ',& +'benzaldehyde ','butanone_2 ','decanal ','dodecene_1 ','geranyl_acetone ','heptanal ',& +'heptane ','hexane ','met_benzoate ','met_heptenone ','neryl_acetone ','nonanal ',& +'nonenal ','octanal ','octanol ','octenol_1e3ol ','oxopentanal ','pentane ',& +'phenyl_CCO ','pyruvic_acid ','terpinyl_ACT_a ','tetradecene_1 ','toluene ','carbon_monoxide ',& +'butene ','ethane ','ethene ','hydrogen_cyanide ','propane ','propene ',& +'carbon_2s ','carbonyl_s ','diallyl_2s ','A_2met_2s ','A_2met_s ','met_chloride ',& +'met_bromide ','met_iodide ','hydrogen_s ','met_mercaptan ','met_propenyl_2s ','PPPP_2s ',& +'A_2met_nonatriene','met_salicylate ','indole ','jasmone ','met_jasmonate ','A_3met_3DCTT ',& +'hexanal ','hexanol_1 ','hexenal_c3 ','hexenal_t2 ','hexenol_c3 ','hexenyl_ACT_c3 ',& +'homosalate ','Ehsalate ','pentanal ','heptanone ','anisole ','verbenene ',& +'benzyl-acetate ','myrtenal ','benzyl-alcohol ','meta-cymenene ','ipsenol ','Napthalene '/) + +REAL, DIMENSION(N_SPCA_SPC) :: XSPCA_MWT=(/& ! Mechanism species molecular weight + 68.12,136.23,136.23,136.23,136.23,136.23,136.23,136.23,132.20,134.22,134.22,136.23,136.23,136.23,136.23,136.23,& +136.23,136.23,136.23,136.23,136.23,136.23,136.23,148.20,152.23,152.23,152.23,152.23,152.23,154.25,154.25,154.25,& +154.25,154.25,170.25,170.25,192.30,196.29,204.35,204.35,204.35,204.35,204.35,204.35,204.35,204.35,204.35,204.35,& +204.35,204.35,204.35,204.35,204.35,204.35,204.35,204.35,204.35,204.35,204.35,204.35,204.35,204.35,204.35,204.35,& +204.35,204.35,204.35,222.37,222.37,222.37, 86.13, 32.04, 58.08, 16.04, 17.03, 44.01, 30.01, 44.05, 46.07, 46.03,& + 30.03, 60.05, 86.13, 86.13,106.12, 72.11,156.27,168.32,194.31,114.19,100.20, 86.18,136.15,126.20,194.31,142.24,& +140.22,128.21,130.23,128.21,100.12, 72.15,120.15, 88.06,196.29,196.37, 92.14, 28.01, 56.11, 30.07, 28.05, 27.03,& + 44.10, 42.08, 76.14, 60.08,146.28, 94.20, 62.14, 50.49, 94.94,141.94, 34.08, 48.11,120.24,148.29,150.26,152.15,& +117.15,164.24,224.30,218.38,100.16,102.17, 98.14, 98.14,100.16,142.20, 131., 131., 133., 94., 85., 10.,& + 85., 32., 85., 10., 32., 129./) + +!**************************************************************************************************************** +!**************************************************************************************************************** + +INTEGER,PARAMETER :: N_SMAP_SPC = 150 ! Number of map species + +CHARACTER(LEN=17), DIMENSION(N_SMAP_SPC) :: CSPCA_NAM=(/& ! speciated species name +'isoprene ','myrcene ','sabinene ','limonene ','carene_3 ','ocimene_t_b ',& +'pinene_b ','pinene_a ','A_2met_styrene ','cymene_p ','cymene_o ','phellandrene_a ',& +'thujene_a ','terpinene_a ','terpinene_g ','terpinolene ','phellandrene_b ','camphene ',& +'bornene ','fenchene_a ','ocimene_al ','ocimene_c_b ','tricyclene ','estragole ',& +'camphor ','fenchone ','piperitone ','thujone_a ','thujone_b ','cineole_1_8 ',& +'borneol ','linalool ','terpineol_4 ','terpineol_a ','linalool_OXD_c ','linalool_OXD_t ',& +'ionone_b ','bornyl_ACT ','farnescene_a ','caryophyllene_b ','acoradiene ','aromadendrene ',& +'bergamotene_a ','bergamotene_b ','bisabolene_a ','bisabolene_b ','bourbonene_b ','cadinene_d ',& +'cadinene_g ','cedrene_a ','copaene_a ','cubebene_a ','cubebene_b ','elemene_b ',& +'farnescene_b ','germacrene_B ','germacrene_D ','gurjunene_b ','humulene_a ','humulene_g ',& +'isolongifolene ','longifolene ','longipinene ','muurolene_a ','muurolene_g ','selinene_b ',& +'selinene_d ','nerolidol_c ','nerolidol_t ','cedrol ','MBO_2m3e2ol ','methanol ',& +'acetone ','methane ','ammonia ','nitrous_OXD ','nitric_OXD ','acetaldehyde ',& +'ethanol ','formic_acid ','formaldehyde ','acetic_acid ','MBO_3m2e1ol ','MBO_3m3e1ol ',& +'benzaldehyde ','butanone_2 ','decanal ','dodecene_1 ','geranyl_acetone ','heptanal ',& +'heptane ','hexane ','met_benzoate ','met_heptenone ','neryl_acetone ','nonanal ',& +'nonenal ','octanal ','octanol ','octenol_1e3ol ','oxopentanal ','pentane ',& +'phenyl_CCO ','pyruvic_acid ','terpinyl_ACT_a ','tetradecene_1 ','toluene ','carbon_monoxide ',& +'butene ','ethane ','ethene ','hydrogen_cyanide ','propane ','propene ',& +'carbon_2s ','carbonyl_s ','diallyl_2s ','A_2met_2s ','A_2met_s ','met_chloride ',& +'met_bromide ','met_iodide ','hydrogen_s ','met_mercaptan ','met_propenyl_2s ','PPPP_2s ',& +'A_2met_nonatriene','met_salicylate ','indole ','jasmone ','met_jasmonate ','3met_3DCTT ',& +'hexanal ','hexanol_1 ','hexenal_c3 ','hexenal_t2 ','hexenol_c3 ','hexenyl_ACT_c3 ',& +'homosalate ','Ehsalate ','pentanal ','heptanone ','anisole ','verbenene ',& +'benzyl-acetate ','myrtenal ','benzyl-alcohol ','meta-cymenene ','ipsenol ','Napthalene '/) + +INTEGER, DIMENSION(N_SMAP_SPC) :: NSPCA_MAP=(/& ! speciated species name + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,& + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,& + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,& + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,& + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,& + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,& + 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,112,& +113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,& +129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,& +145,146,147,148,149,150/) + +CHARACTER(LEN=6), DIMENSION(N_SMAP_SPC) :: CMG20_NAM=(/& ! MEGAN species +'ISOP ','MYRC ','SABI ','LIMO ','3CAR ','OCIM ','BPIN ','APIN ','OMTP ','OMTP ',& +'OMTP ','OMTP ','OMTP ','OMTP ','OMTP ','OMTP ','OMTP ','OMTP ','OMTP ','OMTP ',& +'OMTP ','OMTP ','OMTP ','OMTP ','OMTP ','OMTP ','OMTP ','OMTP ','OMTP ','OMTP ',& +'OMTP ','OMTP ','OMTP ','OMTP ','OMTP ','OMTP ','OMTP ','OMTP ','FARN ','BCAR ',& +'OSQT ','OSQT ','OSQT ','OSQT ','OSQT ','OSQT ','OSQT ','OSQT ','OSQT ','OSQT ',& +'OSQT ','OSQT ','OSQT ','OSQT ','OSQT ','OSQT ','OSQT ','OSQT ','OSQT ','OSQT ',& +'OSQT ','OSQT ','OSQT ','OSQT ','OSQT ','OSQT ','OSQT ','OSQT ','OSQT ','OSQT ',& +'MBO ','MEOH ','ACTO ','OTHER ','NO ','NO ','NO ','BIDIR ','BIDIR ','BIDIR ',& +'BIDIR ','BIDIR ','OTHER ','OTHER ','OTHER ','OTHER ','OTHER ','OTHER ','OTHER ','OTHER ',& +'OTHER ','OTHER ','OTHER ','OTHER ','OTHER ','OTHER ','OTHER ','OTHER ','OTHER ','OTHER ',& +'OTHER ','OTHER ','OTHER ','OTHER ','OTHER ','OTHER ','STRESS','CO ','OTHER ','OTHER ',& +'STRESS','STRESS','OTHER ','OTHER ','OTHER ','OTHER ','OTHER ','OTHER ','OTHER ','OTHER ',& +'OTHER ','OTHER ','OTHER ','OTHER ','OTHER ','OTHER ','STRESS','STRESS','STRESS','STRESS',& +'STRESS','STRESS','STRESS','STRESS','STRESS','STRESS','STRESS','STRESS','OTHER ','OTHER ',& +'OTHER ','OTHER ','OTHER ','OMTP ','OTHER ','OMTP ','OTHER ','OMTP ','OMTP ','OTHER '/) + +INTEGER, DIMENSION(N_SMAP_SPC) :: NMG20_MAP=(/& ! MEGAN species mapped to + 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,& + 9, 9, 9, 9, 9, 9,10,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,& +12,12,12,12,12,12,13,14,15,20,17,17,17,18,18,18,18,18,20,20,20,20,20,20,20,20,20,20,20,20,20,20,& +20,20,20,20,20,20,20,20,20,20,19,16,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,& +19,19,19,19,19,19,19,19,19,19,20,20,20,20,20, 9,20, 9,20, 9, 9,20/) + +END MODULE MODD_MGN2MECH diff --git a/src/MNH/mode_gamma_etc.F90 b/src/LIB/MEGAN/mode_gamma_etc.F90 similarity index 100% rename from src/MNH/mode_gamma_etc.F90 rename to src/LIB/MEGAN/mode_gamma_etc.F90 diff --git a/src/MNH/mode_megan.F90 b/src/LIB/MEGAN/mode_megan.F90 similarity index 100% rename from src/MNH/mode_megan.F90 rename to src/LIB/MEGAN/mode_megan.F90 diff --git a/src/LIB/MEGAN/mode_soilnox.F90 b/src/LIB/MEGAN/mode_soilnox.F90 new file mode 100644 index 0000000000000000000000000000000000000000..226c006ed14dab07e4bf37eb1b082fbad8af78a9 --- /dev/null +++ b/src/LIB/MEGAN/mode_soilnox.F90 @@ -0,0 +1,255 @@ +!======================================================================= +! MODULE SOILNOX_FX +! +! This module contain functions to assist soil NOx calculation. +! +! +! CONTAINS: 1)FERTLZ_ADJ +! 2)VEG_ADJ +! 3)GROWSEASON +! +! Note: +! +! Requirement: +! +! +! Imported from SMOKE-BEIS v3.14 and modified +! by Tan 07/21/11 for MEGAN v2.10 +! +! Function PRECADJ is moved to MET2MGN +! PULSETYPE is moved to MET2MGN +! PRECIPFAC is moved to MET2MGN +! +! History: +! +!======================================================================= + +MODULE MODE_SOILNOX + +USE MODI_JULIAN + +IMPLICIT NONE + +!... Program I/O parameters + +!... External parameters + +CONTAINS + +!======================================================================= +!======================================================================= +FUNCTION FERTLZ_ADJ(KDATE, PLAT) RESULT(PFERTLZ_ADJ) + +!*********************************************************************** +! DESCRIPTION: +! This internal function computes a fertilizer adjustment factor +! for the given date in yyyyddd format. If it is not growing +! season, the adjustment factor is 0; otherwise, it ranges from +! 0.0 to 1.0. +! +! CALL: +! GROWSEASON +! +! HISTORY: +! 07/21/11 : Imported from SMOKE-BEIS v3.14 and modified (Tan) +!*********************************************************************** + +IMPLICIT NONE + +!.... Function arguments +INTEGER, INTENT(IN) :: KDATE +REAL, DIMENSION(:), INTENT(IN) :: PLAT +REAL, DIMENSION(SIZE(PLAT)) :: PFERTLZ_ADJ + +!.... Local variables +INTEGER, DIMENSION(SIZE(PLAT)) :: IDAY, ILEN + +!----------------------------------------------------------------------------- + +CALL GROWSEASON(KDATE, PLAT, IDAY, ILEN) + +IF (ANY(IDAY(:)<0).OR.ANY(IDAY(:)>366)) THEN + WRITE(*,*) "MODE_SOILNOX: FERTLZ_ADJ: Invalid date specified" + STOP +ENDIF + +WHERE ( IDAY(:)==0 ) + PFERTLZ_ADJ(:) = 0. +ELSE WHERE( IDAY(:)>=1 .AND. IDAY(:)<30 ) + ! first month of growing season + PFERTLZ_ADJ(:) = 1. +ELSE WHERE( IDAY(:)>=30 .AND. IDAY(:)<=366 ) + ! later month of growing season + PFERTLZ_ADJ(:) = 1. + (30.-FLOAT(IDAY(:)))/(FLOAT(ILEN(:))) +END WHERE + +END FUNCTION FERTLZ_ADJ +!======================================================================= +!======================================================================= + + +!======================================================================= +!======================================================================= +FUNCTION VEG_ADJ(PLAI) RESULT(PVEG_ADJ) + +!*********************************************************************** +! DESCRIPTION +! This internal function computes a vegetation adjustment factor +! based on LAIv. See Yienger and Levy 1995 +! VEG_ADJ = (EXP(-0.24*LAIv)+EXP(-0.0525*LAIv))*0.5 +! +! CALL +! NONE +! +! HISTORY: +!*********************************************************************** + +IMPLICIT NONE + +!... Function arguments +REAL, DIMENSION(:), INTENT(IN) :: PLAI +! +REAL, DIMENSION(SIZE(PLAI)) :: PVEG_ADJ +! +!----------------------------------------------------------------------------- + +PVEG_ADJ = (EXP(-0.24*PLAI)+EXP(-0.0525*PLAI))*0.5 + +!****************** FORMAT STATEMENTS ****************************** + +END FUNCTION VEG_ADJ +!======================================================================= +!======================================================================= + + +!======================================================================= +!======================================================================= +SUBROUTINE GROWSEASON(KDATE, PLAT, KDAY, KLEN) + +!*********************************************************************** +! DESCRIPTION +! This internal function computes the day of the growing season +! corresponding to the given date in yyyyddd format. +! +! CALL +! JULIAN +! +! HISTORY: +! 07/21/11 : Imported from SMOKE-BEIS v3.14 and modified (Tan) +! Variation of growing season depends on latitude +! (Guenther) +!*********************************************************************** + +IMPLICIT NONE + +!....... Function arguments +INTEGER, INTENT(IN) :: KDATE +REAL, DIMENSION(:), INTENT(IN) :: PLAT +! +INTEGER, DIMENSION(:), INTENT(OUT) :: KDAY +INTEGER, DIMENSION(:), INTENT(OUT) :: KLEN + +!....... Local parameters +INTEGER :: ISEASON_START +INTEGER :: ISEASON_END + +!....... Local variables +INTEGER, DIMENSION(SIZE(PLAT)) :: ISJULIAN_START, ISJULIAN_END +INTEGER :: ISJULIAN_START0, ISJULIAN_START1, ISJULIAN_START2 +INTEGER :: ISJULIAN_END1, ISJULIAN_END2 +INTEGER :: IYEAR, IDAY, IDAY_ADD +! +!----------------------------------------------------------------------------- + +IYEAR = INT(KDATE/1000.) +IDAY = KDATE - IYEAR*1000. + +IF( IDAY.LT.1 .OR. IDAY.GT.366 ) THEN + WRITE(*,*) "MODE_SOILNOX: GROWSEASON: Invalid date specified" + STOP +ENDIF + +ISJULIAN_START1 = G2J(IYEAR, 0101) +ISJULIAN_END1 = G2J(IYEAR, 0531) +ISJULIAN_START2 = G2J(IYEAR, 1101) +ISJULIAN_END2 = G2J(IYEAR, 1231) + +IF ( IDAY.GE.1101 .AND. IDAY.LE.1231 ) THEN + ISJULIAN_START0 = ISJULIAN_START2 + IDAY_ADD = 0 +ELSE IF ( IDAY.GE.0101 .AND. IDAY.LE.0531 ) THEN + ISJULIAN_START0 = ISJULIAN_START1 + IDAY_ADD = 61 +ELSE + ISJULIAN_START0 = IDAY + IDAY_ADD = -1 +ENDIF + +WHERE ( PLAT(:).LT.-60. .OR. PLAT(:).GT.65. ) + + ! antarctic start = 0 end = 0, no growing + KDAY(:) = 0 + KLEN(:) = 0 + +ELSE WHERE ( PLAT(:).LE.23. .AND. PLAT(:).GE.-23. ) + + ! tropical regions, year round + KDAY(:) = IDAY - ISJULIAN_START1 + 1 + KLEN(:) = ISJULIAN_END2 - ISJULIAN_START1 + 1 + +ELSE WHERE ( PLAT(:).LT.-23. ) + +! southern hemisphere + KDAY(:) = IDAY - ISJULIAN_START0 + 1 + IDAY_ADD + KLEN(:) = 30 + 31 + ISJULIAN_END1 - ISJULIAN_START1 + 1 + +ELSE WHERE ( PLAT.GT.23. ) + + ! northern hemisphere temperate + ! start= (lat-23)*4.5 189 + ! end = 365 -((lat-23)*3.3) 226 + + ISJULIAN_START(:) = INT( (PLAT(:)-23.0)*4.5 ) + ISJULIAN_END (:) = ISJULIAN_END2 - INT( (PLAT(:)-23.0)*3.3 ) + + WHERE ( IDAY.GE.ISJULIAN_START(:) .AND. IDAY.LE.ISJULIAN_END(:) ) + KDAY(:) = IDAY - ISJULIAN_START(:) + 1 + ELSE WHERE + KDAY(:) = 0 + END WHERE + KLEN(:) = ISJULIAN_END(:) - ISJULIAN_START(:) + 1 + +END WHERE + +!****************** FORMAT STATEMENTS ****************************** + +END SUBROUTINE GROWSEASON +!======================================================================= +!======================================================================= + + +!======================================================================= +!======================================================================= +FUNCTION G2J(KYYYY, KMMDD) RESULT(KG2J) + +IMPLICIT NONE + +!....... Function arguments +INTEGER, INTENT(IN) :: KYYYY +INTEGER, INTENT(IN) :: KMMDD + +INTEGER :: KG2J + +!....... Local parameters +INTEGER :: IMM +INTEGER :: IDD + +IMM = INT(KMMDD/100.) +IDD = KMMDD - IMM*100 +KG2J = JULIAN(KYYYY, IMM, IDD) + +END FUNCTION G2J + +!======================================================================= +!======================================================================= +END MODULE MODE_SOILNOX diff --git a/src/LIB/MEGAN/soilnox.F90 b/src/LIB/MEGAN/soilnox.F90 new file mode 100644 index 0000000000000000000000000000000000000000..0435a01a2abbfc76b6a444a38a6f7c24aa944d0d --- /dev/null +++ b/src/LIB/MEGAN/soilnox.F90 @@ -0,0 +1,172 @@ +SUBROUTINE SOILNOX(KDATE, KTIME, OSOIL, KSLTYP, PRECADJ, & + PLAT, PTA, PSOILM, PSOILT, PLAIC, PCFNO, PCFNOG ) + +!*********************************************************************** +! DESCRIPTION: +! +! Uses new NO algorithm NO = Normalized*Tadj*Padj*Fadj*Cadj +! to estimate NO emissions +! Information needed to estimate NO emissions +! Julian Day (integer) JDATE +! Surface Temperature (MCIP field) TA (K) +! Soil Moisture (MCIP field) SOILM (M**3/M**3) (LSOIL) +! (ratio of volume of water per volume of soil) +! Soil Temperature (MCIP field) SOILT (K) (LSOIL) +! Soil Type (MCIP field) ISLTYP (LSOIL) +! +! saturation values for soil types (constants) (LSOIL) +! FOR PX Version, the Temperature adjustment factor accounts for wet and dry soils +! and the precipitation adjustment factor accounts for saturated soils +! FOR the non-PX version, the basic algorithm remains with a temperature adjustment factor (dry soil) +! and no adjustment for saturated soils +! +! +! The following arrays are updated after each call to SOILNOX +! PULTYPE type of NO emission pulse +! PULSEDATE julian date for the beginning of an NO pulse +! PULSETIME time for the beginning of an NO pulse +! +! The calculation are based on the following paper by J.J. Yienger and H. Levy II +! J.J. Yienger and H. Levy II, Journal of Geophysical Research, vol 100,11447-11464,1995 +! +! The Temperature Adjustment Factor is based on section 4.2 for wet and dry soils with +! the following modification (PX version): +! Instead of classifying soils as either 'wet' or 'dry', the wet and dry adjustment is +! calculated at each grid cell. A linear interpolation between the wet and dry adjustment +! factor is made using the relative amount of soil moisture in the top layer (1cm) +! as the interpolating factor. The relative amount of soil moisture is determined by +! taking the MCIP soil moisture field and dividing by the saturation value defined for each +! soil type in the PX version of MCIP +! the soil temperature is used in PX version +! +! The Precipation Adjustment factor is based on section 4.1 with the following modifications. +! The rainrate is computed from the MCIP directly using a 24 hr daily total. +! THe types of Pulses as described in YL95 were used to estimate the NO emission +! rate. +! +! Also see the following paper for more information: +! Proceedings of the Air and Waste Management Association/U.S. Environmental Protection +! Agency EMission Inventory Conference, Raleigh October 26-28, 1999 Raleigh NC +! by Tom Pierce and Lucille Bender +! +! REFERENCES +! +! JACQUEMIN B. AND NOILHAN J. (1990), BOUND.-LAYER METEOROL., 52, 93-134. +! J.J. Yienger and H. Levy II, Journal of Geophysical Research, vol 100,11447-11464,1995 +! T. Pierce and L. Bender, Examining the Temporal Variability of Ammonia and Nitric Oxide Emissions from Agricultural Processes +! Proceedings of the Air and Waste Management Association/U.S. Environmental Protection +! Agency EMission Inventory Conference, Raleigh October 26-28, 1999 Raleigh NC +! +! PRECONDITIONS REQUIRED: +! Normalized NO emissions, Surface Temperature, Soil Moisture, Soil type, +! NO emission pulse type, soil moisture from previous time step, julian date +! of NO emission pulse start, time of NO emission pulse start, +! soil type, SOIL TYPES, Land use data +! +! SUBROUTINES AND FUNCTIONS CALLED (directly or indirectly): +! FERTILIZER_ADJ computes fertlizer adjustment factor +! VEG_ADJ computes vegatation adjustment factor +! GROWSEASON computes day of growing season +! +! REVISION HISTORY: +! 10/01 : Prototype by GAP +! 10/03 : modified transition to non growing season for jul-oct of the year +! 08/04 : Converted to SMOKE code style by C. Seppanen +! 07/21/11 : Imported form SMOKE-BEIS v3.14 for MEGAN v2.10 +! +!*********************************************************************** + +USE MODE_SOILNOX + +USE MODD_MEGAN + +IMPLICIT NONE + +!......... ARGUMENTS and their descriptions +INTEGER, INTENT(IN) :: KDATE ! current simulation date (YYYYDDD) +INTEGER, INTENT(IN) :: KTIME ! current simulation time (HHMMSS) +LOGICAL, INTENT(IN) :: OSOIL ! true: using PX version of MCIP +! +INTEGER, DIMENSION(:), INTENT(IN) :: KSLTYP ! soil type +! +REAL, INTENT(IN) :: PRECADJ ! precip adjustment +! +REAL, DIMENSION(:), INTENT(IN) :: PLAT ! Latitude +REAL, DIMENSION(:), INTENT(IN) :: PTA ! air temperature (K) +REAL, DIMENSION(:), INTENT(IN) :: PSOILM ! soil moisture (m3/m3) +REAL, DIMENSION(:), INTENT(IN) :: PSOILT ! soil temperature (K) +REAL, DIMENSION(:), INTENT(IN) :: PLAIC ! soil temperature (K) +REAL, DIMENSION(:), INTENT(INOUT) :: PCFNO ! NO correction factor +REAL, DIMENSION(:), INTENT(INOUT) :: PCFNOG ! NO correction factor for grass + +!....... Local ARRAYS +! Saturation values for 11 soil types from pxpbl.F (MCIP PX version) +! PLEIM-XIU LAND-SURFACE AND PBL MODEL (PX-LSM) +! See JACQUEMIN B. AND NOILHAN J. (1990), BOUND.-LAYER METEOROL., 52, 93-134. + +!......... SCRATCH LOCAL VARIABLES and their descriptions: +REAL, DIMENSION(SIZE(PLAT)) :: ZCF ! NO correction factor +REAL :: ZTAIR ! surface temperature +REAL :: ZTSOI ! soil temperature +REAL :: ZCFNOWET, ZCFNODRY, ZRATIO + +INTEGER :: JJ, JL ! counters +INTEGER :: ISOILCAT ! soil category + +!HARACTER(256) MESG ! message buffer + +!HARACTER(16) :: PROGNAME = 'SOILNOX' ! program name + +!*********************************************************************** + +!..... Loop through cells +DO JJ = 1,SIZE(PTA) + + ZTAIR = MIN(PTA(JJ),303.) ! unit in degree K + + IF ( ZTAIR>268.8690 ) THEN + PCFNOG(JJ) = EXP( 0.04686 * ZTAIR - 14.30579 ) ! grass (from BEIS2) + ELSE + PCFNOG(JJ) = 0.0 + END IF + +!....... CFNO + IF( .NOT.OSOIL ) THEN + ZTSOI = 0.72 * ZTAIR + 82.28 + ELSE + ZTSOI = PSOILT(JJ) + ENDIF + + ZTSOI = MIN(MAX(ZTSOI,273.16),303.16) + ZCFNODRY = (1./3.) * (1./30.) * (ZTSOI-273.16) ! see YL 1995 Equa 9a p. 11452 + IF ( ZTSOI<=283.16 ) THEN ! linear cold case + ZCFNOWET = (ZTSOI-273.16)*EXP(-0.103*30.0)*0.28 ! see YL 1995 Equ 7b + ELSE ! exponential case + ZCFNOWET = EXP(0.103 * (ZTSOI-273.16)) * EXP(-0.103 * 30.0) + END IF + + IF( .NOT.OSOIL ) THEN + + ZCF(JJ) = 0.5 * ZCFNOWET + 0.5 * ZCFNODRY + + ELSE + + ! soil + ISOILCAT = KSLTYP(JJ) + IF( ISOILCAT>0 .AND. ISOILCAT<=NMAXSTYPES ) THEN + ZRATIO = PSOILM(JJ) / XSATURATION(ISOILCAT) + ZCF(JJ) = ZRATIO * ZCFNOWET + (1.-ZRATIO) * ZCFNODRY + ELSE + ZCF(JJ) = 0. + END IF + + END IF ! Endif LSOIL + +ENDDO + +PCFNO(:) = ZCF(:) * FERTLZ_ADJ(KDATE,PLAT) * VEG_ADJ(PLAIC) * PRECADJ + +!****************** FORMAT STATEMENTS ****************************** + +END SUBROUTINE SOILNOX + diff --git a/src/LIB/MEGAN/solarangle.F90 b/src/LIB/MEGAN/solarangle.F90 new file mode 100644 index 0000000000000000000000000000000000000000..60ac5815a77412f157755f1eecc136f637afc73b --- /dev/null +++ b/src/LIB/MEGAN/solarangle.F90 @@ -0,0 +1,56 @@ +!----------------------------------------------------------------------- +! SUBROUTINE: SOLARANGLE +! +! DESCRIPTION: TO CALCULATE THE SOLAR ZENITH ANGLE. THIS WILL GIVE +! SIN(BETA), NOT THE BETA. +! +! CALL: NONE +! +! REQUIRE: NONE +! +! INPUT: +! 1) DAY OF YEAR +! 2) LATITUDE +! 3) HOUR +! +! OUTPUT: CALCBETA (SOLAR ZENITH ANGLE) +! +! CREATED BY TAN 11/15/06 (BASED ON XXXX'S PROGRAM) +! +!----------------------------------------------------------------------- +SUBROUTINE SOLARANGLE(KDAY, PSHOUR, PLAT, PSINBETA) + +USE MODD_MEGAN + +IMPLICIT NONE + +! INPUT +INTEGER, DIMENSION(:), INTENT(IN) :: KDAY ! DOY OR JULIAN DAY +REAL, DIMENSION(:), INTENT(IN) :: PSHOUR ! SOLAR HOUR +REAL, DIMENSION(:), INTENT(IN) :: PLAT ! LATITUDE +! OUTPUT +REAL, DIMENSION(:), INTENT(OUT) :: PSINBETA +! LOCAL +!REAL :: ZBETA ! SOLAR ELEVATION ANGLE +REAL :: ZSINDELTA, ZCOSDELTA, ZA, ZB +! CONSTANTS +INTEGER :: JJ + +! CALCULATION +DO JJ = 1,SIZE(KDAY) + + ZSINDELTA = -SIN(0.40907) * COS( 6.28*(KDAY(JJ)+10.)/365. ) + ZCOSDELTA = (1.-ZSINDELTA**2)**0.5 + + ZA = SIN( PLAT(JJ) / XRPI180 ) * ZSINDELTA + ZB = COS( PLAT(JJ) / XRPI180 ) * ZCOSDELTA + + PSINBETA(JJ) = ZA + ZB * COS( 2 * XPI * (PSHOUR(JJ)-12.)/24. ) ! THIS WILL BE TRANSFERED + ! TO GAMMA_P FUNCTION + !ZBETA = ASIN(PSINBETA(JJ)) * XRPI180 ! THIS IS NOT USED. + +ENDDO + +END SUBROUTINE SOLARANGLE +!----------------------------------------------------------------------- + diff --git a/src/MNH/ice4_fast_rs.f90 b/src/MNH/ice4_fast_rs.f90 index 11dbd67f50ac67a9fc97f9d7f145ba85541a6e4c..d44b1bcc74d9c632b038c8a3937c3c3d4fbc1efa 100644 --- a/src/MNH/ice4_fast_rs.f90 +++ b/src/MNH/ice4_fast_rs.f90 @@ -173,7 +173,7 @@ ELSE *(XESTT-PRS_TEND(:, IFREEZ1))/(XRV*PT(:)) ) PRS_TEND(:, IFREEZ1)=PRS_TEND(:, IFREEZ1)* PRST(:) * ( X0DEPS* PLBDAS(:)**XEX0DEPS + & X1DEPS*PCJ(:)*PLBDAS(:) **(XBS+XEX1DEPS)* & - (1+(XFVELOS/(2*PLBDAS(:)))**XALPHAS)**(-XNUS+XEX1DEPS/XALPHAS))/ & + (1+0.5*(XFVELOS/PLBDAS(:))**XALPHAS)**(-XNUS+XEX1DEPS/XALPHAS))/ & ( PRHODREF(:)*(XLMTT-XCL*(XTT-PT(:))) ) PRS_TEND(:, IFREEZ2)=(PRHODREF(:)*(XLMTT+(XCI-XCL)*(XTT-PT(:))) ) / & ( PRHODREF(:)*(XLMTT-XCL*(XTT-PT(:))) ) @@ -503,7 +503,7 @@ ELSE PRSMLTG(:) = XFSCVMG*MAX( 0.0,( -PRSMLTG(:) * & PRST(:)*PRHODREF(:) * & ( X0DEPS *PLBDAS(:)**XEX0DEPS + & - X1DEPS*PCJ(:)*(1+(XFVELOS/(2*PLBDAS(:))**XALPHAS))**(XNUS+XEX1DEPS/XALPHAS)*((PLBDAS(:))**(XBS+XEX1DEPS))) - & + X1DEPS*PCJ(:)*(1+0.5*(XFVELOS/PLBDAS(:))**XALPHAS)**(XNUS+XEX1DEPS/XALPHAS)*PLBDAS(:)**(XBS+XEX1DEPS)) - & ( PRS_TEND(:, IRCRIMS) + PRS_TEND(:, IRRACCS)) * & ( PRHODREF(:)*XCL*(XTT-PT(:))) ) / & ( PRHODREF(:)*XLMTT ) ) diff --git a/src/MNH/ice4_sedimentation_split.f90 b/src/MNH/ice4_sedimentation_split.f90 index f9369a8783af23ad117f46ab51489a44afad0436..90729a15c2f966083bdb5e81bbd3cf80032e7760 100644 --- a/src/MNH/ice4_sedimentation_split.f90 +++ b/src/MNH/ice4_sedimentation_split.f90 @@ -7,8 +7,7 @@ MODULE MODI_ICE4_SEDIMENTATION_SPLIT INTERFACE SUBROUTINE ICE4_SEDIMENTATION_SPLIT(KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKTB, KKTE, KKT, KKL, & &PTSTEP, KRR, OSEDIC, ODEPOSC, PVDEPOSC, PDZZ, & - &PRHODREF, PPABST, PTHT, PRHODJ, & - & PLBDAS, & + &PRHODREF, PPABST, PTHT, PT, PRHODJ, & &PRCS, PRCT, PRRS, PRRT, PRIS, PRIT, PRSS, PRST, PRGS, PRGT, & &PINPRC, PINDEP, PINPRR, PINPRI, PINPRS, PINPRG, & &PSEA, PTOWN, & @@ -25,8 +24,8 @@ REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PDZZ ! Layer thiknes REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PRHODREF! Reference density REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PPABST ! absolute pressure at t REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PTHT ! Theta at time t +REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PT ! Theta at time t REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PRHODJ ! Dry density * Jacobian -REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PLBDAS ! lambda parameter for snow REAL, DIMENSION(KIT,KJT,KKT), INTENT(INOUT) :: PRCS ! Cloud water m.r. source REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PRCT ! Cloud water m.r. at t REAL, DIMENSION(KIT,KJT,KKT), INTENT(INOUT) :: PRRS ! Rain water m.r. source @@ -54,8 +53,7 @@ END INTERFACE END MODULE MODI_ICE4_SEDIMENTATION_SPLIT SUBROUTINE ICE4_SEDIMENTATION_SPLIT(KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKTB, KKTE, KKT, KKL, & &PTSTEP, KRR, OSEDIC, ODEPOSC, PVDEPOSC, PDZZ, & - &PRHODREF, PPABST, PTHT, PRHODJ, & - & PLBDAS, & + &PRHODREF, PPABST, PTHT, PT, PRHODJ, & &PRCS, PRCT, PRRS, PRRT, PRIS, PRIT, PRSS, PRST, PRGS, PRGT, & &PINPRC, PINDEP, PINPRR, PINPRI, PINPRS, PINPRG, & &PSEA, PTOWN, & @@ -105,8 +103,8 @@ REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PDZZ ! Layer thiknes REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PRHODREF! Reference density REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PPABST ! absolute pressure at t REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PTHT ! Theta at time t +REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PT ! Theta at time t REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PRHODJ ! Dry density * Jacobian -REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PLBDAS ! lambda parameter for snow REAL, DIMENSION(KIT,KJT,KKT), INTENT(INOUT) :: PRCS ! Cloud water m.r. source REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PRCT ! Cloud water m.r. at t REAL, DIMENSION(KIT,KJT,KKT), INTENT(INOUT) :: PRRS ! Rain water m.r. source @@ -242,9 +240,8 @@ ZW(:,:,KKTB:KKTE) =1./(PRHODREF(:,:,KKTB:KKTE)* PDZZ(:,:,KKTB:KKTE)) IF (GSEDIC) THEN CALL INTERNAL_SEDIM_SPLI(KIB,KIE,KIT,KJB,KJE,KJT, KKB, KKTB, KKTE, KKT, KKL, KRR, & &XSPLIT_MAXCFL, & - &PRHODREF, ZW, PDZZ, PPABST, PTHT, PTSTEP, & + &PRHODREF, ZW, PDZZ, PPABST, PTHT, PT, PTSTEP, & &2, & - &PLBDAS, & &ZRCT, PRCS, PINPRC, ZPRCS, & &ZRAY, ZLBC, ZFSEDC, ZCONC3D, PFPR=PFPR) ENDIF @@ -269,9 +266,8 @@ END IF ! CALL INTERNAL_SEDIM_SPLI(KIB,KIE,KIT,KJB,KJE,KJT, KKB, KKTB, KKTE, KKT, KKL, KRR, & &XSPLIT_MAXCFL, & - &PRHODREF, ZW, PDZZ, PPABST, PTHT, PTSTEP, & + &PRHODREF, ZW, PDZZ, PPABST, PTHT, PT, PTSTEP, & &3, & - &PLBDAS, & &ZRRT, PRRS, PINPRR, ZPRRS, & &PFPR=PFPR) ! @@ -279,9 +275,8 @@ END IF ! CALL INTERNAL_SEDIM_SPLI(KIB,KIE,KIT,KJB,KJE,KJT, KKB, KKTB, KKTE, KKT, KKL, KRR, & &XSPLIT_MAXCFL, & - &PRHODREF, ZW, PDZZ, PPABST, PTHT, PTSTEP, & + &PRHODREF, ZW, PDZZ, PPABST, PTHT, PT, PTSTEP, & &4, & - &PLBDAS, & &ZRIT, PRIS, PINPRI, ZPRIS, & PFPR=PFPR) ! @@ -289,9 +284,8 @@ END IF ! CALL INTERNAL_SEDIM_SPLI(KIB,KIE,KIT,KJB,KJE,KJT, KKB, KKTB, KKTE, KKT, KKL, KRR, & &XSPLIT_MAXCFL, & - &PRHODREF, ZW, PDZZ, PPABST, PTHT, PTSTEP, & + &PRHODREF, ZW, PDZZ, PPABST, PTHT, PT, PTSTEP, & &5, & - &PLBDAS, & &ZRST, PRSS, PINPRS, ZPRSS, & PFPR=PFPR) ! @@ -299,9 +293,8 @@ END IF ! CALL INTERNAL_SEDIM_SPLI(KIB,KIE,KIT,KJB,KJE,KJT, KKB, KKTB, KKTE, KKT, KKL, KRR, & &XSPLIT_MAXCFL, & - &PRHODREF, ZW, PDZZ, PPABST, PTHT, PTSTEP, & + &PRHODREF, ZW, PDZZ, PPABST, PTHT, PT, PTSTEP, & &6, & - &PLBDAS, & &ZRGT, PRGS, PINPRG, ZPRGS, & PFPR=PFPR) ! @@ -310,9 +303,8 @@ END IF IF (IRR==7) THEN CALL INTERNAL_SEDIM_SPLI(KIB,KIE,KIT,KJB,KJE,KJT, KKB, KKTB, KKTE, KKT, KKL, KRR, & &XSPLIT_MAXCFL, & - &PRHODREF, ZW, PDZZ, PPABST, PTHT, PTSTEP, & + &PRHODREF, ZW, PDZZ, PPABST, PTHT, PT, PTSTEP, & &7, & - &PLBDAS, & &ZRHT, PRHS, PINPRH, ZPRHS, & PFPR=PFPR) ENDIF @@ -324,18 +316,19 @@ CONTAINS !------------------------------------------------------------------------------- ! ! -SUBROUTINE INTERNAL_SEDIM_SPLI(KIB,KIE,KIT,KJB,KJE,KJT,KKB,KKTB,KKTE,KKT,KKL,KRR, & - &PMAXCFL,PRHODREF,POORHODZ,PDZZ,PPABST,PTHT,PTSTEP, & - &KSPE,PLBDAS,PRXT,PRXS,PINPRX,PPRXS, & +SUBROUTINE INTERNAL_SEDIM_SPLI(KIB,KIE,KIT,KJB,KJE,KJT,KKB,KKTB,KKTE,KKT,KKL,KRR, & + &PMAXCFL,PRHODREF,POORHODZ,PDZZ,PPABST,PTHT,PT,PTSTEP, & + &KSPE,PRXT,PRXS,PINPRX,PPRXS, & &PRAY,PLBC,PFSEDC,PCONC3D,PFPR) ! !* 0. DECLARATIONS ! ------------ ! USE MODD_CST, ONLY: XCPD,XP00,XRD -USE MODD_RAIN_ICE_DESCR, ONLY: XCC,XCEXVT,XDC,XLBEXC,XRTMIN,XALPHAS,XNUS,XBS,XFVELOS +USE MODD_RAIN_ICE_DESCR, ONLY: XCC,XCEXVT,XDC,XLBEXC,XRTMIN,XALPHAS,XNUS,XBS,XFVELOS, & + XLBDAS_MAX,XLBDAS_MIN,XLBEXS,XLBS USE MODD_RAIN_ICE_PARAM, ONLY: XEXCSEDI,XEXSEDG,XEXSEDH,XEXSEDR,XEXSEDS,XFSEDG,XFSEDH,XFSEDI,XFSEDR,XFSEDS - +USE MODD_PARAM_ICE, ONLY: LSNOW_T ! IMPLICIT NONE ! @@ -348,6 +341,7 @@ REAL, DIMENSION(KIT,KJT,KKTB:KKTE), INTENT(IN) :: POORHODZ ! One Over (Rh REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PDZZ ! layer thikness (m) REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PPABST REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PTHT +REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PT REAL, INTENT(IN) :: PTSTEP ! total timestep INTEGER, INTENT(IN) :: KSPE ! 1 for rc, 2 for rr... REAL, DIMENSION(KIT,KJT,KKT), INTENT(INOUT) :: PRXT ! mr of specy X @@ -356,7 +350,6 @@ REAL, DIMENSION(KIT,KJT), INTENT(OUT) :: PINPRX ! instant precip REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PPRXS ! external tendencie REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN), OPTIONAL :: PRAY, PLBC, PFSEDC, PCONC3D REAL, DIMENSION(KIT,KJT,KKT,KRR), INTENT(INOUT), OPTIONAL :: PFPR ! upper-air precipitation fluxes - REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PLBDAS ! lambda parameter for snow ! Modif Wurtz ! !* 0.2 declaration of local variables ! @@ -367,6 +360,7 @@ INTEGER, DIMENSION(KIT*KJT*KKT) :: I1,I2,I3 ! Used to replace the COUNT LOGICAL :: GPRESENT_PFPR REAL :: ZINVTSTEP REAL :: ZZWLBDC, ZRAY, ZZT, ZZWLBDA, ZZCC +REAL :: ZLBDA REAL :: ZFSED, ZEXSED REAL, DIMENSION(KIT, KJT) :: ZMRCHANGE REAL, DIMENSION(KIT, KJT) :: ZMAX_TSTEP ! Maximum CFL in column @@ -454,13 +448,18 @@ DO WHILE (ANY(ZREMAINT>0.)) JJ=I2(JL) JK=I3(JL) IF(PRXT(JI,JJ,JK)> XRTMIN(KSPE)) THEN - - ZWSED(JI, JJ, JK) = XFSEDS * & - & PRXT(JI,JJ,JK)* & - & PRHODREF(JI,JJ,JK)**(1-XCEXVT) * & - & (1 + (XFVELOS/PLBDAS(JI, JJ, JK))**XALPHAS)** (-XNUS+XEXSEDS/XALPHAS) * & - & PLBDAS(JI, JJ, JK) ** (XBS+XEXSEDS) - ! GAMMAGEN_LH_EXTENDED + IF (LSNOW_T .AND. PT(JI,JJ,JK)>263.15) THEN + ZLBDA = MAX(MIN(XLBDAS_MAX, 10**(14.554-0.0423*PT(JI,JJ,JK))),XLBDAS_MIN) + ELSE IF (LSNOW_T) THEN + ZLBDA = MAX(MIN(XLBDAS_MAX, 10**(6.226 -0.0106*PT(JI,JJ,JK))),XLBDAS_MIN) + ELSE + ZLBDA=MAX(MIN(XLBDAS_MAX, XLBS * ( PRHODREF(JI,JJ,JK) * PRXT(JI,JJ,JK) )**XLBEXS),XLBDAS_MIN) + END IF + ZWSED(JI, JJ, JK) = XFSEDS * & + & PRXT(JI,JJ,JK)* & + & PRHODREF(JI,JJ,JK)**(1-XCEXVT) * & + & (1 + (XFVELOS/ZLBDA)**XALPHAS)** (-XNUS+XEXSEDS/XALPHAS) * & + & ZLBDA ** (XBS+XEXSEDS) ENDIF ENDDO diff --git a/src/MNH/ice4_slow.f90 b/src/MNH/ice4_slow.f90 index e08dd1e77adff5823c7c2cb6404cfc1162d39af4..b9325050f16faa13ba945c3624755d55b89672bc 100644 --- a/src/MNH/ice4_slow.f90 +++ b/src/MNH/ice4_slow.f90 @@ -173,11 +173,13 @@ IF(LDSOFT) THEN ENDDO ELSE PRVDEPS(:) = 0. - WHERE(ZMASK(:)==1.) - PRVDEPS(:) = ( PRST(:)*PSSI(:)/PAI(:)) * & - ( X0DEPS*PLBDAS(:)**XEX0DEPS + (X1DEPS*PCJ(:)*(1+(PLBDAS(:)/(2*XFVELOS)**XALPHAS))**(-XNUS+XEX1DEPS) & - *(PLBDAS(:))**(XBS+XEX1DEPS))) - END WHERE + DO JL=1, KSIZE + IF (ZMASK(JL)==1.) THEN + PRVDEPS(JL) = ( PRST(JL)*PSSI(JL)/PAI(JL) ) * & + ( X0DEPS*PLBDAS(JL)**XEX0DEPS + X1DEPS*PCJ(JL) * (1+0.5*(XFVELOS/PLBDAS(JL))**XALPHAS)**(-XNUS+XEX1DEPS/XALPHAS) & + *(PLBDAS(JL))**(XBS+XEX1DEPS) ) + END IF + END DO ENDIF DO JL=1, KSIZE PA_RS(JL) = PA_RS(JL) + PRVDEPS(JL) diff --git a/src/MNH/ice4_tendencies.f90 b/src/MNH/ice4_tendencies.f90 index ec33e100cfc60bec6ad576d781283372e52c165f..2832464bf64ed83229d3779531ef93c206db078d 100644 --- a/src/MNH/ice4_tendencies.f90 +++ b/src/MNH/ice4_tendencies.f90 @@ -411,7 +411,9 @@ ELSE ZLBDAS(:) = MAX(MIN(XLBDAS_MAX, 10**(6.226-0.0106*ZT(:))),XLBDAS_MIN)*XTRANS_MP_GAMMAS END WHERE ELSE - ZLBDAS(:) = MAX(MIN(XLBDAS_MAX,XLBS*(PRHODREF(:)*ZRST(:))**XLBEXS),XLBDAS_MIN) + WHERE (ZRST(:).GE.XRTMIN(5)) + ZLBDAS(:) = MAX(MIN(XLBDAS_MAX,XLBS*(PRHODREF(:)*ZRST(:))**XLBEXS),XLBDAS_MIN) + END WHERE END IF CALL ICE4_RSRIMCG_OLD(KSIZE, ODSOFT, PCOMPUTE==1., & &PRHODREF, & @@ -487,7 +489,9 @@ IF(KSIZE>0) THEN ZLBDAS(:) = MAX(MIN(XLBDAS_MAX, 10**(6.226-0.0106*ZT(:))),XLBDAS_MIN)*XTRANS_MP_GAMMAS END WHERE ELSE - ZLBDAS(:) = MAX(MIN(XLBDAS_MAX,XLBS*(PRHODREF(:)*ZRST(:))**XLBEXS),XLBDAS_MIN) + WHERE (ZRST(:).GE.XRTMIN(5)) + ZLBDAS(:) = MAX(MIN(XLBDAS_MAX,XLBS*(PRHODREF(:)*ZRST(:))**XLBEXS),XLBDAS_MIN) + END WHERE END IF ZLBDAG(:)=0. WHERE(ZRGT(:)>0.) diff --git a/src/MNH/ini_rain_ice.f90 b/src/MNH/ini_rain_ice.f90 index 1096296681e7f5e3eb2fe060598d534feca76d0e..9f984f940bf7f14e574995b1659cbfe3086887ec 100644 --- a/src/MNH/ini_rain_ice.f90 +++ b/src/MNH/ini_rain_ice.f90 @@ -507,7 +507,7 @@ XEXCSEDI =-0.9324*3.0 WRITE (KLUOUT,FMT=*)' PRISTINE ICE SEDIMENTATION for columns XFSEDI =',XFSEDI ! ! -IF (LSNOW_T) THEN +!IF (LSNOW_T) THEN !HOUZE/HAIC !XEXSEDS = -XDS !(2*XBS+XDS) !XFSEDS = XCS*MOMG(XALPHAS,XNUS,XBS+XDS)/(MOMG(XALPHAS,XNUS,XBS)) & @@ -516,11 +516,11 @@ IF (LSNOW_T) THEN XEXSEDS = -XDS-XBS XFSEDS = XCS*MOMG(XALPHAS,XNUS,XBS+XDS)/(MOMG(XALPHAS,XNUS,XBS)) & *(ZRHO00)**XCEXVT -ELSE - XEXSEDS = (XBS+XDS-XCXS)/(XBS-XCXS) - XFSEDS = XCS*XAS*XCCS*MOMG(XALPHAS,XNUS,XBS+XDS)* & - (XAS*XCCS*MOMG(XALPHAS,XNUS,XBS))**(-XEXSEDS)*(ZRHO00)**XCEXVT -END IF +!ELSE +! XEXSEDS = (XBS+XDS-XCXS)/(XBS-XCXS) +! XFSEDS = XCS*XAS*XCCS*MOMG(XALPHAS,XNUS,XBS+XDS)* & +! (XAS*XCCS*MOMG(XALPHAS,XNUS,XBS))**(-XEXSEDS)*(ZRHO00)**XCEXVT +!END IF ! XEXSEDG = (XBG+XDG-XCXG)/(XBG-XCXG) XFSEDG = XCG*XAG*XCCG*MOMG(XALPHAG,XNUG,XBG+XDG)* & diff --git a/src/MNH/lima_cold_slow_processes.f90 b/src/MNH/lima_cold_slow_processes.f90 index a74b94686bd4113686802ef74b2d3efa9d0133c1..29c1aecbe47c04efb136d3175a07def0a5d552e9 100644 --- a/src/MNH/lima_cold_slow_processes.f90 +++ b/src/MNH/lima_cold_slow_processes.f90 @@ -393,7 +393,7 @@ IF( IMICRO >= 1 ) THEN WHERE ( (ZRST(:)>XRTMIN(5)) .AND. (ZRSS(:)>ZRTMIN(5)) ) ZZW(:) = ( ZRST(:)*ZSSI(:)/(ZAI(:)) ) * & ( X0DEPS*ZLBDAS(:)**XEX0DEPS + & - (X1DEPS*ZCJ(:)*(1+(XFVELOS/(2.*ZLBDAS))**XALPHAS)**(-XNUS+XEX1DEPS/XALPHAS) * & + (X1DEPS*ZCJ(:)*(1+0.5*(XFVELOS/ZLBDAS(:))**XALPHAS)**(-XNUS+XEX1DEPS/XALPHAS) * & (ZLBDAS(:))**(XEX1DEPS+XBS))) ZZW(:) = MIN( ZRVS(:),ZZW(:) )*(0.5+SIGN(0.5,ZZW(:))) & diff --git a/src/MNH/lima_conversion_melting_snow.f90 b/src/MNH/lima_conversion_melting_snow.f90 index 307db0255eed1136811b4b159c846dcbfa692c6a..d1aa60aa4bce5b2f8b976da30a763c994472b5f6 100644 --- a/src/MNH/lima_conversion_melting_snow.f90 +++ b/src/MNH/lima_conversion_melting_snow.f90 @@ -107,10 +107,10 @@ WHERE( (PRST(:)>XRTMIN(5)) .AND. (PT(:)>XTT) .AND. LDCOMPUTE(:) ) ! ! compute RSMLT ! - ZW(:) = XFSCVMG*MAX( 0.0,( -ZW(:) * PRHODREF(:) * PRST(:) * & + ZW(:) = XFSCVMG*MAX( 0.0,( -ZW(:) * PRST(:) * & ( X0DEPS*PLBDS(:)**XEX0DEPS + & X1DEPS*PCJ(:)*PLBDS(:)**(XEX1DEPS+XBS)* & - (1+(XFVELOS/(2.*PLBDS(:)))**XALPHAS)**(-XNUS+XEX1DEPS/XALPHAS)) )) + (1+0.5*(XFVELOS/PLBDS(:))**XALPHAS)**(-XNUS+XEX1DEPS/XALPHAS)) )) ! On ne tient pas compte de la collection de pluie et gouttelettes par la neige si T>0 !!!! ! Note that no heat is exchanged because the graupeln produced are still icy!!! P_RS_CMEL(:) = - ZW(:) diff --git a/src/MNH/lima_ice_snow_deposition.f90 b/src/MNH/lima_ice_snow_deposition.f90 deleted file mode 100644 index 4968a192d96274ad12ef8a4e3376e72ac36f1a6c..0000000000000000000000000000000000000000 --- a/src/MNH/lima_ice_snow_deposition.f90 +++ /dev/null @@ -1,233 +0,0 @@ -!MNH_LIC Copyright 2013-2018 CNRS, Meteo-France and Universite Paul Sabatier -!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence -!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt -!MNH_LIC for details. version 1. -! ##################### - MODULE MODI_LIMA_ICE_SNOW_DEPOSITION -! ##################### -! -INTERFACE - SUBROUTINE LIMA_ICE_SNOW_DEPOSITION (PTSTEP, LDCOMPUTE, & - PRHODREF, PSSI, PAI, PCJ, PLSFACT, & - PRIT, PRST, PCIT, PLBDI, PLBDS, & - P_RI_CNVI, P_CI_CNVI, & - P_TH_DEPS, P_RS_DEPS, & - P_RI_CNVS, P_CI_CNVS, & - PA_TH, PA_RV, PA_RI, PA_CI, PA_RS ) -! -REAL, INTENT(IN) :: PTSTEP -LOGICAL, DIMENSION(:),INTENT(IN) :: LDCOMPUTE -! -REAL, DIMENSION(:), INTENT(IN) :: PRHODREF! Reference density -REAL, DIMENSION(:), INTENT(IN) :: PSSI ! abs. pressure at time t -REAL, DIMENSION(:), INTENT(IN) :: PAI ! abs. pressure at time t -REAL, DIMENSION(:), INTENT(IN) :: PCJ ! abs. pressure at time t -REAL, DIMENSION(:), INTENT(IN) :: PLSFACT ! abs. pressure at time t -! -REAL, DIMENSION(:), INTENT(IN) :: PRIT ! Cloud ice m.r. at t -REAL, DIMENSION(:), INTENT(IN) :: PRST ! Snow/aggregate m.r. at t -! -REAL, DIMENSION(:), INTENT(IN) :: PCIT ! Ice crystal C. at t -! -REAL, DIMENSION(:), INTENT(IN) :: PLBDI ! Graupel m.r. at t -REAL, DIMENSION(:), INTENT(IN) :: PLBDS ! Graupel m.r. at t -! -REAL, DIMENSION(:), INTENT(INOUT) :: P_RI_CNVI -REAL, DIMENSION(:), INTENT(INOUT) :: P_CI_CNVI -REAL, DIMENSION(:), INTENT(INOUT) :: P_TH_DEPS -REAL, DIMENSION(:), INTENT(INOUT) :: P_RS_DEPS -REAL, DIMENSION(:), INTENT(INOUT) :: P_RI_CNVS -REAL, DIMENSION(:), INTENT(INOUT) :: P_CI_CNVS -! -REAL, DIMENSION(:), INTENT(INOUT) :: PA_TH -REAL, DIMENSION(:), INTENT(INOUT) :: PA_RV -REAL, DIMENSION(:), INTENT(INOUT) :: PA_RI -REAL, DIMENSION(:), INTENT(INOUT) :: PA_CI -REAL, DIMENSION(:), INTENT(INOUT) :: PA_RS -! -END SUBROUTINE LIMA_ICE_SNOW_DEPOSITION -END INTERFACE -END MODULE MODI_LIMA_ICE_SNOW_DEPOSITION -! -! ########################################################################## -SUBROUTINE LIMA_ICE_SNOW_DEPOSITION (PTSTEP, LDCOMPUTE, & - PRHODREF, PSSI, PAI, PCJ, PLSFACT, & - PRIT, PRST, PCIT, PLBDI, PLBDS, & - P_RI_CNVI, P_CI_CNVI, & - P_TH_DEPS, P_RS_DEPS, & - P_RI_CNVS, P_CI_CNVS, & - PA_TH, PA_RV, PA_RI, PA_CI, PA_RS ) -! ########################################################################## -! -!! PURPOSE -!! ------- -!! The purpose of this routine is to compute the microphysical sources -!! for slow cold processes : -!! - conversion of snow to ice -!! - deposition of vapor on snow -!! - conversion of ice to snow (Harrington 1995) -!! -!! -!! AUTHOR -!! ------ -!! J.-M. Cohard * Laboratoire d'Aerologie* -!! J.-P. Pinty * Laboratoire d'Aerologie* -!! S. Berthet * Laboratoire d'Aerologie* -!! B. ViƩ * CNRM * -!! -!! MODIFICATIONS -!! ------------- -!! Original 15/03/2018 -! J. Wurtz 03/2022: new snow characteristics -!! -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -USE MODD_PARAM_LIMA, ONLY : XRTMIN, XCTMIN, XALPHAI, XALPHAS, XNUI, XNUS -USE MODD_PARAM_LIMA_COLD, ONLY : XCXS, XNS, XBS, & - XLBDAS_MAX, XDSCNVI_LIM, XLBDASCNVI_MAX, & - XC0DEPSI, XC1DEPSI, XR0DEPSI, XR1DEPSI, & - XSCFAC, X1DEPS, X0DEPS, XEX1DEPS, XEX0DEPS, & - XDICNVS_LIM, XLBDAICNVS_LIM, & - XC0DEPIS, XC1DEPIS, XR0DEPIS, XR1DEPIS, & - XCOLEXIS, XAGGS_CLARGE1, XAGGS_CLARGE2, & - XAGGS_RLARGE1, XAGGS_RLARGE2, XFVELOS - -! -IMPLICIT NONE -! -!* 0.1 Declarations of dummy arguments : -! -REAL, INTENT(IN) :: PTSTEP -LOGICAL, DIMENSION(:),INTENT(IN) :: LDCOMPUTE -! -REAL, DIMENSION(:), INTENT(IN) :: PRHODREF! Reference density -REAL, DIMENSION(:), INTENT(IN) :: PSSI ! abs. pressure at time t -REAL, DIMENSION(:), INTENT(IN) :: PAI ! abs. pressure at time t -REAL, DIMENSION(:), INTENT(IN) :: PCJ ! abs. pressure at time t -REAL, DIMENSION(:), INTENT(IN) :: PLSFACT ! abs. pressure at time t -! -REAL, DIMENSION(:), INTENT(IN) :: PRIT ! Cloud ice m.r. at t -REAL, DIMENSION(:), INTENT(IN) :: PRST ! Snow/aggregate m.r. at t -! -REAL, DIMENSION(:), INTENT(IN) :: PCIT ! Ice crystal C. at t -! -REAL, DIMENSION(:), INTENT(IN) :: PLBDI ! Graupel m.r. at t -REAL, DIMENSION(:), INTENT(IN) :: PLBDS ! Graupel m.r. at t -! -REAL, DIMENSION(:), INTENT(INOUT) :: P_RI_CNVI -REAL, DIMENSION(:), INTENT(INOUT) :: P_CI_CNVI -REAL, DIMENSION(:), INTENT(INOUT) :: P_TH_DEPS -REAL, DIMENSION(:), INTENT(INOUT) :: P_RS_DEPS -REAL, DIMENSION(:), INTENT(INOUT) :: P_RI_CNVS -REAL, DIMENSION(:), INTENT(INOUT) :: P_CI_CNVS -! -REAL, DIMENSION(:), INTENT(INOUT) :: PA_TH -REAL, DIMENSION(:), INTENT(INOUT) :: PA_RV -REAL, DIMENSION(:), INTENT(INOUT) :: PA_RI -REAL, DIMENSION(:), INTENT(INOUT) :: PA_CI -REAL, DIMENSION(:), INTENT(INOUT) :: PA_RS -! -!* 0.2 Declarations of local variables : -! -LOGICAL, DIMENSION(SIZE(PRHODREF)) :: GMICRO ! Computations only where necessary -REAL, DIMENSION(SIZE(PRHODREF)) :: ZZW, ZZW2, ZZX ! Work array -! -! -!------------------------------------------------------------------------------- -! -P_RI_CNVI(:) = 0. -P_CI_CNVI(:) = 0. -P_TH_DEPS(:) = 0. -P_RS_DEPS(:) = 0. -P_RI_CNVS(:) = 0. -P_CI_CNVS(:) = 0. -! -! Physical limitations -! -! -! Looking for regions where computations are necessary -! -GMICRO(:) = .FALSE. -GMICRO(:) = LDCOMPUTE(:) .AND. & - (PRIT(:)>XRTMIN(4) .OR. & - PRST(:)>XRTMIN(5)) -! -! -WHERE( GMICRO ) -! -!* 2.1 Conversion of snow to r_i: RSCNVI -! ---------------------------------------- -! -! - ZZW2(:) = 0.0 - ZZW(:) = 0.0 - WHERE ( PLBDS(:)<XLBDASCNVI_MAX .AND. (PRST(:)>XRTMIN(5)) & - .AND. (PSSI(:)<0.0) ) - ZZW(:) = (PLBDS(:)*XDSCNVI_LIM)**(XALPHAS) - ZZX(:) = ( -PSSI(:)/PAI(:) ) * (XNS*PRST(:)*PLBDS(:)**XBS) * (ZZW(:)**XNUS) * EXP(-ZZW(:)) -! - ZZW(:) = ( XR0DEPSI+XR1DEPSI*PCJ(:) )*ZZX(:) -! - ZZW2(:) = ZZW(:)*( XC0DEPSI+XC1DEPSI*PCJ(:) )/( XR0DEPSI+XR1DEPSI*PCJ(:) ) - END WHERE -! - P_RI_CNVI(:) = ZZW(:) - P_CI_CNVI(:) = ZZW2(:) -! - PA_RI(:) = PA_RI(:) + P_RI_CNVI(:) - PA_CI(:) = PA_CI(:) + P_CI_CNVI(:) - PA_RS(:) = PA_RS(:) - P_RI_CNVI(:) -! -! -!* 2.2 Deposition of water vapor on r_s: RVDEPS -! ----------------------------------------------- -! -! - ZZW(:) = 0.0 - WHERE ( (PRST(:)>XRTMIN(5)) ) - ZZW(:) =( PRST(:)*PSSI(:)/PAI(:) ) * & - ( X0DEPS*PLBDS(:)**XEX0DEPS + & - ( X1DEPS*PCJ(:)*(PLBDS(:))**(XBS+XEX1DEPS) * & - (1+(XFVELOS/(2.*PLBDS(:)))**XALPHAS)**(-XNUS+XEX1DEPS/XALPHAS))) - ZZW(:) = ZZW(:)*(0.5+SIGN(0.5,ZZW(:))) - ABS(ZZW(:))*(0.5-SIGN(0.5,ZZW(:))) - END WHERE -! - P_RS_DEPS(:) = ZZW(:) - P_TH_DEPS(:) = P_RS_DEPS(:) * PLSFACT(:) -! - PA_TH(:) = PA_TH(:) + P_TH_DEPS(:) - PA_RV(:) = PA_RV(:) - P_RS_DEPS(:) - PA_RS(:) = PA_RS(:) + P_RS_DEPS(:) -! -! -!* 2.3 Conversion of pristine ice to r_s: RICNVS -! ------------------------------------------------ -! -! - ZZW(:) = 0.0 - ZZW2(:) = 0.0 - WHERE ( (PLBDI(:)<XLBDAICNVS_LIM) .AND. (PCIT(:)>XCTMIN(4)) & - .AND. (PSSI(:)>0.0) ) - ZZW(:) = (PLBDI(:)*XDICNVS_LIM)**(XALPHAI) - ZZX(:) = ( PSSI(:)/PAI(:) )*PCIT(:) * (ZZW(:)**XNUI) *EXP(-ZZW(:)) -! - ZZW(:) = ( XR0DEPIS + XR1DEPIS*PCJ(:) )*ZZX(:) -! - ZZW2(:) = ZZW(:) * (XC0DEPIS+XC1DEPIS*PCJ(:)) / (XR0DEPIS+XR1DEPIS*PCJ(:)) - END WHERE -! -P_RI_CNVS(:) = - ZZW(:) -P_CI_CNVS(:) = - ZZW2(:) -! -PA_RI(:) = PA_RI(:) + P_RI_CNVS(:) -PA_CI(:) = PA_CI(:) + P_CI_CNVS(:) -PA_RS(:) = PA_RS(:) - P_RI_CNVS(:) -! -! -END WHERE -! -! -END SUBROUTINE LIMA_ICE_SNOW_DEPOSITION diff --git a/src/MNH/lima_mixed_fast_processes.f90 b/src/MNH/lima_mixed_fast_processes.f90 index 94b622ef3ed710bb825964bb9aeadab84b7025a8..056386015b61db1bb4f7b0292e01bebeacae45cf 100644 --- a/src/MNH/lima_mixed_fast_processes.f90 +++ b/src/MNH/lima_mixed_fast_processes.f90 @@ -923,8 +923,8 @@ WHERE( (PRST1D(:)>XRTMIN(5)) .AND. (PRSS1D(:)>XRTMIN(5)/PTSTEP) .AND. (PZT(:)>XT ! compute RSMLT ! ZZW(:) = MIN( PRSS1D(:), XFSCVMG*MAX( 0.0,( -ZZW(:) * & - PRHODREF(:) * PRST1D(:)*( X0DEPS* PLBDAS(:)**XEX0DEPS + & - X1DEPS*PCJ(:)*(1+(XFVELOS/(2.*PLBDAS(:)))**XALPHAS) & + PRST1D(:)*( X0DEPS* PLBDAS(:)**XEX0DEPS + & + X1DEPS*PCJ(:)*(1+0.5*(XFVELOS/PLBDAS(:))**XALPHAS) & **(-XNUS+XEX1DEPS/XALPHAS)*(PLBDAS(:))**(XEX1DEPS+XBS))- & ( ZZW1(:,1)+ZZW1(:,4) ) * & ( PRHODREF(:)*XCL*(XTT-PZT(:))) ) / & diff --git a/src/MNH/lima_raindrop_shattering_freezing.f90 b/src/MNH/lima_raindrop_shattering_freezing.f90 index 0bd4f18e5b18bd822b216ede6546b9ace5c917ba..dc7c14066214dfb589ad8428291dbc1c9262706d 100644 --- a/src/MNH/lima_raindrop_shattering_freezing.f90 +++ b/src/MNH/lima_raindrop_shattering_freezing.f90 @@ -8,11 +8,11 @@ ! ############################################# ! INTERFACE - SUBROUTINE LIMA_RAINDROP_SHATTERING_FREEZING (LDCOMPUTE, & - PRHODREF, & - PRRT, PCRT, PRIT, PCIT, & - PLBDR, & - P_RI_RDSF, P_CI_RDSF ) + SUBROUTINE LIMA_RAINDROP_SHATTERING_FREEZING (LDCOMPUTE, & + PRHODREF, & + PRRT, PCRT, PRIT, PCIT, PRGT, & + PLBDR, & + P_RI_RDSF, P_CI_RDSF ) ! LOGICAL, DIMENSION(:),INTENT(IN) :: LDCOMPUTE ! @@ -22,6 +22,7 @@ REAL, DIMENSION(:), INTENT(IN) :: PRRT REAL, DIMENSION(:), INTENT(IN) :: PCRT REAL, DIMENSION(:), INTENT(IN) :: PRIT REAL, DIMENSION(:), INTENT(IN) :: PCIT +REAL, DIMENSION(:), INTENT(IN) :: PRGT REAL, DIMENSION(:), INTENT(IN) :: PLBDR ! REAL, DIMENSION(:), INTENT(OUT) :: P_RI_RDSF @@ -32,11 +33,11 @@ END INTERFACE END MODULE MODI_LIMA_RAINDROP_SHATTERING_FREEZING ! ! ####################################################################### - SUBROUTINE LIMA_RAINDROP_SHATTERING_FREEZING (LDCOMPUTE, & - PRHODREF, & - PRRT, PCRT, PRIT, PCIT, & - PLBDR, & - P_RI_RDSF, P_CI_RDSF ) + SUBROUTINE LIMA_RAINDROP_SHATTERING_FREEZING (LDCOMPUTE, & + PRHODREF, & + PRRT, PCRT, PRIT, PCIT, PRGT, & + PLBDR, & + P_RI_RDSF, P_CI_RDSF ) ! ####################################################################### ! !! PURPOSE @@ -75,6 +76,7 @@ REAL, DIMENSION(:), INTENT(IN) :: PRRT REAL, DIMENSION(:), INTENT(IN) :: PCRT REAL, DIMENSION(:), INTENT(IN) :: PRIT REAL, DIMENSION(:), INTENT(IN) :: PCIT +REAL, DIMENSION(:), INTENT(IN) :: PRGT REAL, DIMENSION(:), INTENT(IN) :: PLBDR ! REAL, DIMENSION(:), INTENT(OUT) :: P_RI_RDSF @@ -97,7 +99,8 @@ P_RI_RDSF(:)=0. P_CI_RDSF(:)=0. ! GRDSF(:) = LRDSF .AND. LDCOMPUTE .AND. (PRIT(:)>XRTMIN(4)) .AND. (PRRT(:)>XRTMIN(3)) & - .AND. (PCIT(:)>XCTMIN(4)) .AND. (PCRT(:)>XCTMIN(3)) + .AND. (PCIT(:)>XCTMIN(4)) .AND. (PCRT(:)>XCTMIN(3)) & + .AND. (PRGT(:)>XRTMIN(6)) IRDSF = COUNT( GRDSF(:) ) ! diff --git a/src/MNH/lima_sedimentation.f90 b/src/MNH/lima_sedimentation.f90 index 8d48b776d8a46279ab4b6fd8268068faf0411f5e..cd90504a16afa3c292a32916c8014c6c856d3918 100644 --- a/src/MNH/lima_sedimentation.f90 +++ b/src/MNH/lima_sedimentation.f90 @@ -195,7 +195,7 @@ DO JN = 1 , NSPLITSED(KID) END WHERE ZLBDA(:) = ZLBDA(:)*XTRANS_MP_GAMMAS ZZW(:) = XFSEDR(KID) * ZRHODREF(:)**(1.-XCEXVT)*ZRS(:)* & - (1 + (XFVELOS/ZLBDA(:))**XALPHAS)**(-XNUS+XEXSEDS/XALPHAS) * ZLBDA(:)**(XBS+XEXSEDS) + (1 + (XFVELOS/ZLBDA(:))**XALPHAS)**(-XNUS-(XD(KID)+XBS)/XALPHAS) * ZLBDA(:)**(-XD(KID)) ELSE IF (KMOMENTS==1) ZLBDA(:) = XLB(KID) * ( ZRHODREF(:) * ZRS(:) )**XLBEX(KID) IF (KMOMENTS==2) ZLBDA(:) = ( XLB(KID)*ZCS(:) / ZRS(:) )**XLBEX(KID) diff --git a/src/MNH/lima_snow_deposition.f90 b/src/MNH/lima_snow_deposition.f90 index fd28d8c6d889fa51b7ae00afe61a9e709772ebb9..5a6ec35cae5f6ad959acebd6acd776277c2d067a 100644 --- a/src/MNH/lima_snow_deposition.f90 +++ b/src/MNH/lima_snow_deposition.f90 @@ -125,10 +125,10 @@ IF (NMOM_I.EQ.1) THEN ! ZZW(:) = 0.0 WHERE ( (PRST(:)>XRTMIN(5)) ) - ZZW(:) = PRHODREF(:) * PRST(:) * PSSI(:) / PAI(:) * & + ZZW(:) = PRST(:) * PSSI(:) / PAI(:) * & ( X0DEPS*PLBDS(:)**XEX0DEPS + & X1DEPS*PLBDS(:)**(XEX1DEPS+XBS)*PCJ(:) * & - (1+(XFVELOS/(2.*PLBDS))**XALPHAS)**(-XNUS+XEX1DEPS/XALPHAS) ) + (1+0.5*(XFVELOS/PLBDS(:))**XALPHAS)**(-XNUS+XEX1DEPS/XALPHAS) ) ZZW(:) = ZZW(:)*(0.5+SIGN(0.5,ZZW(:))) - ABS(ZZW(:))*(0.5-SIGN(0.5,ZZW(:))) END WHERE P_RS_DEPS(:) = ZZW(:) @@ -165,7 +165,7 @@ ELSE ZZW(:) = ( PRST(:)*PSSI(:)/(PAI(:)) ) * & ( X0DEPS*PLBDS(:)**XEX0DEPS + & ( X1DEPS*PCJ(:)*(PLBDS(:))**(XBS+XEX1DEPS) * & - (1+(XFVELOS/(2.*PLBDS))**XALPHAS)**(-XNUS+XEX1DEPS/XALPHAS)) ) + (1+0.5*(XFVELOS/PLBDS(:))**XALPHAS)**(-XNUS+XEX1DEPS/XALPHAS)) ) ZZW(:) = ZZW(:)*(0.5+SIGN(0.5,ZZW(:))) - ABS(ZZW(:))*(0.5-SIGN(0.5,ZZW(:))) END WHERE ! diff --git a/src/MNH/lima_tendencies.f90 b/src/MNH/lima_tendencies.f90 index 70ced659193c877601dcd35f54ec0a7ff76f7508..0d46f5d36f39ed61125aa1e90eb02f9dc3fbe68c 100644 --- a/src/MNH/lima_tendencies.f90 +++ b/src/MNH/lima_tendencies.f90 @@ -882,7 +882,7 @@ IF (LWARM .AND. LRAIN .AND. LCOLD .AND. LSNOW .AND. LRDSF) THEN ! CALL LIMA_RAINDROP_SHATTERING_FREEZING (LDCOMPUTE, & ! depends on PF, IF PRHODREF, & - PRRT/ZPF1D, PCRT/ZPF1D, PRIT/ZIF1D, PCIT/ZIF1D, & + PRRT/ZPF1D, PCRT/ZPF1D, PRIT/ZIF1D, PCIT/ZIF1D, PRGT/ZPF1D, & ZLBDR, & P_RI_RDSF, P_CI_RDSF ) P_RI_RDSF(:) = P_RI_RDSF(:) * ZIF1D(:) diff --git a/src/MNH/rain_ice_red.f90 b/src/MNH/rain_ice_red.f90 index 6f87ff075f52affb633e8300884452fcfc8eb09c..32b08c2d26ec8b7618006ee0bf57bee0e63bce81 100644 --- a/src/MNH/rain_ice_red.f90 +++ b/src/MNH/rain_ice_red.f90 @@ -590,7 +590,9 @@ DO JK = 1, KKT END IF END IF ELSE - ZLBDAS(JI,JJ,JK) = MAX(MIN(XLBDAS_MAX,XLBS*(PRHODREF(JI,JK,JL)*PRST(JI,JK,JL))**XLBEXS),XLBDAS_MIN) + IF (PRST(JI,JJ,JK).GT.XRTMIN(5)) THEN + ZLBDAS(JI,JJ,JK) = MAX(MIN(XLBDAS_MAX,XLBS*(PRHODREF(JI,JJ,JK)*PRST(JI,JJ,JK))**XLBEXS),XLBDAS_MIN) + END IF END IF END DO END DO @@ -648,8 +650,7 @@ IF(.NOT. LSEDIM_AFTER) THEN IF(KRR==7) THEN CALL ICE4_SEDIMENTATION_SPLIT(IIB, IIE, KIT, IJB, IJE, KJT, IKB, IKE, IKTB, IKTE, KKT, KKL, & &PTSTEP, KRR, OSEDIC, LDEPOSC, XVDEPOSC, PDZZ, & - &PRHODREF, PPABST, PTHT, PRHODJ, & - &ZLBDAS, & + &PRHODREF, PPABST, PTHT, ZT, PRHODJ, & &PRCS, PRCT, PRRS, PRRT, PRIS, PRIT, PRSS, PRST, PRGS, PRGT,& &PINPRC, PINDEP, PINPRR, ZINPRI, PINPRS, PINPRG, & &PSEA=PSEA, PTOWN=PTOWN, & @@ -657,8 +658,7 @@ IF(.NOT. LSEDIM_AFTER) THEN ELSE CALL ICE4_SEDIMENTATION_SPLIT(IIB, IIE, KIT, IJB, IJE, KJT, IKB, IKE, IKTB, IKTE, KKT, KKL, & &PTSTEP, KRR, OSEDIC, LDEPOSC, XVDEPOSC, PDZZ, & - &PRHODREF, PPABST, PTHT, PRHODJ, & - &ZLBDAS, & + &PRHODREF, PPABST, PTHT, ZT, PRHODJ, & &PRCS, PRCT, PRRS, PRRT, PRIS, PRIT, PRSS, PRST, PRGS, PRGT,& &PINPRC, PINDEP, PINPRR, ZINPRI, PINPRS, PINPRG, & &PSEA=PSEA, PTOWN=PTOWN, &