diff --git a/src/LIB/MEGAN/.arbre2.txt.swp b/src/LIB/MEGAN/.arbre2.txt.swp deleted file mode 100644 index 53891c1f3841e8264bd204ddb71f260ba22e4442..0000000000000000000000000000000000000000 Binary files a/src/LIB/MEGAN/.arbre2.txt.swp and /dev/null differ diff --git a/src/LIB/MEGAN/emproc.F90 b/src/LIB/MEGAN/emproc.F90 deleted file mode 100644 index 7cb60b64fe78f2edf40e1ed4266b6fce9b213d96..0000000000000000000000000000000000000000 --- a/src/LIB/MEGAN/emproc.F90 +++ /dev/null @@ -1,292 +0,0 @@ - -SUBROUTINE EMPROC(KTIME, KDATE, PPFD24, T24, PDI, PRECADJ, & - PLAT, PLONG, PLAIP, PLAIC, PTEMP, PPFD, & - PWIND, PRES, PQV, KSLTYP, PSOILM, PSOILT, & - PFTF, OSOIL, PCFNO, PCFNOG, PCFSPEC ) - -!*********************************************************************** -! THIS PROGRAM COMPUTES BIOGENIC EMISSION USING INPUT EMISSION -! CAPACITY MAPS AND MCIP OUTPUT VARIABLES. -! THE EMISSION CAPACITY MAP (INPNAME) ARE GRIDDED IN NETCDF-IOAPI FORMAT -! WITH ALL THE DAILY AVERAGE PPFD AND DAILY AVERAGE TEMPERATURE. -! -! NOTE: THE PROJECTION AND INPUT GRIDS OF THE TWO FILES MUST BE -! IDENTICAL. -! -! -! CALL: -! CHECKMEM -! MODULE GAMMA_ETC -! GAMMA_LAI -! GAMMA_P -! GAMMA_TLD -! GAMMA_TLI -! GAMMA_A -! GAMMA_S -! -! HISTORY: -! CREATED BY JACK CHEN 11/04 -! MODIFIED BY TAN 11/21/06 FOR MEGAN V2.0 -! MODIFIED BY XUEMEI WANG 11/04/2007 FOR MEGAN2.1 -! MODIFIED BY JULIA LEE-TAYLOR 03/18/2008 FOR MEGAN2.1 -! MODIFIED BY XUEMEI WANG 09/30/2008 FOR MEGAN2.1 -! MODIFIED BY TAN 07/28/2011 FOR MEGAN2.1 -! MODIFIED BY P. TULET 01/11/2014 FOR COUPLING WITH ISBA (MESONH) -! MODIFIED BY J. PIANEZZEJ 13/02/2019 BUG in FARCE case -! -!*********************************************************************** -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -! -! SCIENTIFIC ALGORITHM -! -! EMISSION = [EF][GAMMA][RHO] -! WHERE [EF] = EMISSION FACTOR (UG/M2H) -! [GAMMA] = EMISSION ACTIVITY FACTOR (NON-DIMENSION) -! [RHO] = PRODUCTION AND LOSS WITHIN PLANT CANOPIES -! (NON-DIMENSIONAL) -! ASSUMPTION: [RHO] = 1 (11/27/06) (SEE PDT_LOT_CP.EXT) -! -! GAMMA = [GAMMA_CE][GAMMA_AGE][GAMMA_SM] -! WHERE [GAMMA_CE] = CANOPY CORRECTION FACTOR -! [GAMMA_AGE] = LEAF AGE CORRECTION FACTOR -! [GAMMA_SM] = SOIL MOISTURE CORRECTION FACTOR -! ASSUMPTION: [GAMMA_SM] = 1 (11/27/06) - -! GAMMA_CE = [GAMMA_LAI][GAMMA_P][GAMMA_T] -! WHERE [GAMMA_LAI] = LEAF AREA INDEX FACTOR -! [GAMMA_P] = PPFD EMISSION ACTIVITY FACTOR -! [GAMMA_T] = TEMPERATURE RESPONSE FACTOR -! -! EMISSION = [EF][GAMMA_LAI][GAMMA_P][GAMMA_T][GAMMA_AGE] -! DERIVATION: -! EMISSION = [EF][GAMMA](1-LDF) + [EF][GAMMA][LDF][GAMMA_P] -! EMISSION = [EF][GAMMA]{ (1-LDF) + [LDF][GAMMA_P] } -! EMISSION = [EF][GAMMA]{ (1-LDF) + [LDF][GAMMA_P] } -! WHERE LDF = LIGHT DEPENDENT FUNCTION (NON-DIMENSION) -! (SEE LD_FCT.EXT) -! -! FINAL EQUATION -! EMISSION = [EF][GAMMA_LAI][GAMMA_AGE]* -! { (1-LDF)[GAMMA_TLI] + [LDF][GAMMA_P][GAMMA_TLD] } !FOR MEGAN2.1 ZER(:) = ZGAM_AGE * ZGAM_SMT * ZRHO * ((1.-ZLDF) * ZGAM_TLI * ZGAM_LHT + ZLDF * ZGAM_TLD) -! WHERE GAMMA_TLI IS LIGHT INDEPENDENT -! GAMMA_TLD IS LIGHT DEPENDENT -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -USE MODD_MEGAN - -USE MODI_INDEX1 -USE MODI_SOILNOX -! -USE MODE_MEGAN -USE MODE_GAMMA_ETC ! MODULE CONTAINING GAMMA FUNCTIONS -! -IMPLICIT NONE - -INTEGER, INTENT(IN) :: KTIME !I TIME OF THE DAY HHMMSS -INTEGER, INTENT(IN) :: KDATE !I DATE YYYYDDD -! -!REAL, INTENT(IN) :: PPFD_D !I DAILY PAR (UMOL/M2.S) -REAL, DIMENSION(:), INTENT(IN) :: T24, PPFD24 !I DAILY TEMPERATURE (K) -REAL, INTENT(IN) :: PDI !I DROUGHT INDEX (0 NORMAL, -2 MODERATE DROUGHT, -3 SEVERE DROUGHT, -4 EXTREME DROUGHT) -REAL, INTENT(IN) :: PRECADJ !I RAIN ADJUSTMENT FACTOR -! -REAL, DIMENSION(:), INTENT(IN) :: PLAT !I LATITUDE OF GRID CELL -REAL, DIMENSION(:), INTENT(IN) :: PLONG !I LONGITUDE OF GRID CELL -REAL, DIMENSION(:), INTENT(IN) :: PLAIP !I PREVIOUS MONTHLY LAI -REAL, DIMENSION(:), INTENT(IN) :: PLAIC !I CURRENT MONTHLY LAI -REAL, DIMENSION(:), INTENT(IN) :: PTEMP !I TEMPERATURE (K) -REAL, DIMENSION(:), INTENT(INOUT) :: PPFD !I CALCULATED PAR (UMOL/M2.S) -REAL, DIMENSION(:), INTENT(IN) :: PWIND !I WIND VELOCITY (M/S) -REAL, DIMENSION(:), INTENT(IN) :: PRES !I ATMOSPHERIC PRESSURE (PA) -REAL, DIMENSION(:), INTENT(IN) :: PQV !I AIR HUMIDITY (KG/KG) -INTEGER,DIMENSION(:),INTENT(IN) :: KSLTYP !I SOIL CATEGORY (FUNCTION OF SILT, CLAY AND SAND)) -REAL, DIMENSION(:), INTENT(IN) :: PSOILM !I SOIL MOISTURE (M3/M3) -REAL, DIMENSION(:), INTENT(IN) :: PSOILT !I SOIL TEMPERATURE (K) -REAL, DIMENSION(:,:),INTENT(IN) :: PFTF ! PFT FACTOR ARRAY (NRTYP 1-16 IN THE FIRST DIM) -LOGICAL, INTENT(IN) :: OSOIL !I LOGICAL FOR ACTIVE NO CORRECTION FACTOR -REAL, DIMENSION(:), INTENT(INOUT) :: PCFNO !O NO CORRECTION FACTOR -REAL, DIMENSION(:), INTENT(INOUT) :: PCFNOG !O NO CORRECTION FACTOR FOR GRASS -REAL, DIMENSION(:,:),INTENT(INOUT) :: PCFSPEC !O OUTPUT EMISSION BUFFER - -! LOCAL VARIABLES AND THEIR DESCRIPTIONS: -REAL, DIMENSION(SIZE(PSOILM)) :: ZGAM_LHT ! LAI CORRECTION FACTOR -REAL, DIMENSION(SIZE(PSOILM)) :: ZGAM_AGE ! LEAF AGE CORRECTION FACTOR -REAL, DIMENSION(SIZE(PSOILM)) :: ZGAM_SMT ! SOIL MOISTURE CORRECTION FACTOR -REAL, DIMENSION(SIZE(PSOILM)) :: ZER ! EMISSION BUFFER -! NUMBER OF LAT, LONG, AND PFT FACTOR VARIABLES -REAL, DIMENSION(SIZE(PSOILM)) :: ZGAM_TLD -REAL, DIMENSION(SIZE(PSOILM)) :: ZGAM_TLI -! -CHARACTER(LEN=100), DIMENSION(N_MGN_SPC+7) :: YVNAME3D -! -REAL, DIMENSION(SIZE(PSOILM)) :: ZADJUST_FACTOR_LD, ZADJUST_FACTOR_LI -REAL, DIMENSION(SIZE(PSOILM)) :: ZGAMMA_TD, ZGAMMA_TI, ZTOTALPFT - -REAL :: ZLDF ! LIGHT DEPENDENT FACTOR -REAL :: ZRHO ! PRODUCTION AND LOSS WITHIN CANOPY -!REAL :: ZPFD_D -! -INTEGER :: I_PFT -INTEGER :: ILAIP_DY, ILAIP_HR, ILAIC_DY, ILAIC_HR -INTEGER :: IMXPFT, IMXLAI - -! LOOP INDICES -INTEGER :: JT, JS, JI, JJ , JK, JN, INP, JL ! COUNTERS -INTEGER :: INMAP ! INDEX -INTEGER :: INVARS3D - -!*********************************************************************** - -!--===================================================================== -!... BEGIN PROGRAM -!--===================================================================== - -!----------------------------------------------------------------------- -!.....1) INITIALIZATION -!----------------------------------------------------------------------- -! - -INVARS3D = N_MGN_SPC + 7 -! -DO JS = 1,N_MGN_SPC - YVNAME3D(JS) = TRIM( CMGN_SPC(JS) ) -! VDESC3D(S) = 'ENVIRONMENTAL ACTIVITY FACTOR FOR '// -! & TRIM( MGN_SPC(S) ) -! UNITS3D(S) = 'NON-DIMENSION ' -! VTYPE3D(S) = M3REAL -ENDDO - -YVNAME3D(N_MGN_SPC+1) = 'D_TEMP' -! UNITS3D(N_MGN_SPC+1) = 'K' -! VTYPE3D(N_MGN_SPC+1) = M3REAL -! VDESC3D(N_MGN_SPC+1) = 'VARIABLE '//'K' - -YVNAME3D(N_MGN_SPC+2) = 'D_PPFD' -! UNITS3D(N_MGN_SPC+2) = 'UMOL/M2.S' -! VTYPE3D(N_MGN_SPC+2) = M3REAL -! VDESC3D(N_MGN_SPC+2) = 'VARIABLE '//'UMOL/M2.S' - -YVNAME3D(N_MGN_SPC+3) = 'LAT' -! UNITS3D(N_MGN_SPC+3) = ' ' -! VTYPE3D(N_MGN_SPC+3) = M3REAL -! VDESC3D(N_MGN_SPC+3) = ' ' - -YVNAME3D(N_MGN_SPC+4) = 'LONG' -! UNITS3D(N_MGN_SPC+4) = ' ' -! VTYPE3D(N_MGN_SPC+4) = M3REAL -! VDESC3D(N_MGN_SPC+4) = ' ' - -YVNAME3D(N_MGN_SPC+5) = 'CFNO' -! UNITS3D(N_MGN_SPC+5) = ' ' -! VTYPE3D(N_MGN_SPC+5) = M3REAL -! VDESC3D(N_MGN_SPC+5) = ' ' - -YVNAME3D(N_MGN_SPC+6) = 'CFNOG' -! UNITS3D(N_MGN_SPC+6) = ' ' -! VTYPE3D(N_MGN_SPC+6) = M3REAL -! VDESC3D(N_MGN_SPC+6) = ' ' - -YVNAME3D(N_MGN_SPC+7) = 'SLTYP' -! UNITS3D(N_MGN_SPC+7) = ' ' -! VTYPE3D(N_MGN_SPC+7) = M3INT -! VDESC3D(N_MGN_SPC+7) = ' ' - -!----------------------------------------------------------------------- -!.....2) PROCESS EMISSION RATES -!----------------------------------------------------------------------- -! -INP = SIZE(PLAT) -! -! ************************************************************************************************ - -! PPFD: SRAD - SHORT WAVE FROM SUN (W/M2) -! ASSUMING 4.766 (UMOL M-2 S-1) PER (W M-2) -! ASSUME 1/2 OF SRAD IS IN 400-700NM BAND -!D_PPFD = D_PPFD * 4.766 * 0.5 -! UPG PT bug: SURFEX give PAR in UMOL M-2 S-1 : comment the lines above -!ZPFD_D = PPFD_D * 4.5 * 0.5 - -!ZPFD_D = PPFD24 - -!PPFD = PPFD * 4.5 -!UPG PT end bug -! ***************************************************************************************** - -! GO OVER ALL THE CHEMICAL SPECIES -DO JS = 1, N_MGN_SPC - - ! INITIALIZE VARIABLES - ZER = 0. - ZGAM_LHT = 1. - ZGAM_AGE = 1. - ZGAM_SMT = 1. - ZGAM_TLD = 1. - ZGAM_TLI = 1. - - PCFNO = 1. - PCFNOG = 1. - - CALL GAMMA_LAI(PLAIC, ZGAM_LHT) - -! IF (JS == 1) print*, "ZGAM_LHT", ZGAM_LHT - - CALL GAMMA_A(KDATE, KTIME, NTSTLEN, YVNAME3D(JS), T24, PLAIP, PLAIC, ZGAM_AGE) - -! IF (JS == 1) print*, "ZGAM_AGE", ZGAM_AGE - - CALL GAMMA_S(ZGAM_SMT) - - ZADJUST_FACTOR_LD(:) = 0.0 - ZADJUST_FACTOR_LI(:) = 0.0 - ZGAMMA_TD(:) = 0.0 - ZGAMMA_TI(:) = 0.0 - ZTOTALPFT(:) = 0.0 - - DO I_PFT = 1,N_MGN_PFT !CANOPY TYPES - ZTOTALPFT(:) = ZTOTALPFT(:) + PFTF(I_PFT,:) * 0.01 !!la division par 100 ZTOTALPFT(:) = ZTOTALPFT(:) + PFTF(I_PFT,:) * 0.01 - ENDDO ! ENDDO I_PFT - - DO I_PFT = 1,N_MGN_PFT !CANOPY TYPES - - CALL GAMME_CE(KDATE, KTIME, XCANOPYCHAR, I_PFT, YVNAME3D(JS), & - PPFD24, PPFD24, T24, T24, PDI, & - PPFD, PLAT, PLONG, PTEMP, PWIND, PQV, PLAIC, & - PRES, ZGAMMA_TD, ZGAMMA_TI) - - ZADJUST_FACTOR_LD(:) = ZADJUST_FACTOR_LD(:) + 0.01 * PFTF(I_PFT,:) * ZGAMMA_TD(:) !!ZADJUST_FACTOR_LD(:) = ZADJUST_FACTOR_LD(:) + 0.01 * PFTF(I_PFT,:) * ZGAMMA_TD(:) - ZADJUST_FACTOR_LI(:) = ZADJUST_FACTOR_LI(:) + 0.01 * PFTF(I_PFT,:) * ZGAMMA_TI(:) !! attention le 0.01 ZADJUST_FACTOR_LI(:) = ZADJUST_FACTOR_LI(:) + 0.01 * PFTF(I_PFT,:) * ZGAMMA_TI(:) - ENDDO ! ENDDO I_PFT - - WHERE (ZTOTALPFT(:).GT.0.) - ZGAM_TLD(:) = ZADJUST_FACTOR_LD(:) / ZTOTALPFT(:) - ZGAM_TLI(:) = ZADJUST_FACTOR_LI(:) / ZTOTALPFT(:) - ELSEWHERE - ZGAM_TLD(:) = 1. - ZGAM_TLI(:) = 1. - END WHERE - - !IF (JS == 1) print*, "ZGAM_TLD(:)", ZGAM_TLD(:) - - INMAP = INDEX1(YVNAME3D(JS), CMGN_SPC) - ZLDF = XLDF_FCT(INMAP) - INMAP = INDEX1(YVNAME3D(JS), CMGN_SPC) - ZRHO = XMGN_MWT(INMAP) - - -!... CALCULATE EMISSION - ZER(:) = ZGAM_AGE * ZGAM_SMT * ZRHO * ((1.-ZLDF) * ZGAM_TLI * ZGAM_LHT + ZLDF * ZGAM_TLD) - WHERE( ZER(:).GT.0. ) - PCFSPEC(JS,:) = ZER(:) - ELSEWHERE - PCFSPEC(JS,:) = 0.0 - END WHERE - -ENDDO - -!... ESTIATE CFNO AND CFNOG -CALL SOILNOX(KDATE, KTIME, OSOIL, KSLTYP, PRECADJ, & - PLAT, PTEMP, PSOILM, PSOILT, PLAIC, PCFNO, PCFNOG ) - -!--===================================================================== -END SUBROUTINE EMPROC - diff --git a/src/LIB/MEGAN/index1.F90 b/src/LIB/MEGAN/index1.F90 deleted file mode 100644 index 68e48b7173a81e3fb1e289d1b9e6eaf23b5fc5fd..0000000000000000000000000000000000000000 --- a/src/LIB/MEGAN/index1.F90 +++ /dev/null @@ -1,104 +0,0 @@ -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 deleted file mode 100644 index 8e1bd59bcd401b3f016542476abe0c873d6963a1..0000000000000000000000000000000000000000 --- a/src/LIB/MEGAN/init_mgn2mech.F90 +++ /dev/null @@ -1,208 +0,0 @@ -!! ############################### -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 deleted file mode 100644 index 73442ba48e36a1a549e9dcc8da7c5f3e61046937..0000000000000000000000000000000000000000 --- a/src/LIB/MEGAN/julian.F90 +++ /dev/null @@ -1,92 +0,0 @@ -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/LIB/MEGAN/mgn2mech.F90 b/src/LIB/MEGAN/mgn2mech.F90 deleted file mode 100644 index f6c19ec072edb64c51c7edee483edd230aa6d4aa..0000000000000000000000000000000000000000 --- a/src/LIB/MEGAN/mgn2mech.F90 +++ /dev/null @@ -1,323 +0,0 @@ -SUBROUTINE MGN2MECH(KDATE, PLAT, PEF, PPFT, PCFNO, PCFNOG, PCFSPEC, & - KSPMH_MAP, KMECH_MAP, PCONV_FAC, OCONVERSION, PFLUX) - -!*********************************************************************** -! THIS PROGRAM DOES CHEMICAL SPECIATION AND MECHANISM CONVERSION. -! THE OUTPUT FROM MEGAN.F IS CONVERTED FROM 20 TO 150 SPECIES WHICH -! ARE THEN LUMPED ACCORDING TO THE MECHANISM ASSIGNED IN THE RUN SCRIPT. -! THE PROGRAM LOOPS THROUGH ALL TIMESTEPS OF THE INPUT FILE. -! -! PROCEDURE -! 1) FILE SET UP AND ASSIGN I/O PARAMETERS -! 2) CONVERSION FROM MGN 20 TO SPECIATED 150 -! 3) CONVERSION FROM SPECIATED SPECIES TO MECHANISM SPECIES -! 4) CONVERT TO TONNE/HOUR IF NEEDED -! -! THE INPUT FILE GIVES VARIABLES IN UNITS OF G-SPECIES/SEC. -! ALL OUTPUTS ARE IN MOLE/SEC OR TONNE/HR DEPENDING ON ASSIGNMENT. -! -! -! INPUT: -! 1) MEGAN OUTPUT (NETCDF-IOAPI) -! -! OUTPUT: -! 1) MEGAN SPECIATION OR MECHANISM SPECIES (NETCDF-IOAPI) -! -! REQUIREMENT: -! REQUIRES LIBNETCDF.A AND LIBIOAPI.A TO COMPILE -! -! SETENV MGERFILE <DEFANGED_INPUT MEGAN OUTPUT FOR EMISSION ACTIVITY FACTORS> -! SETENV OUTPFILE <OUTPUT SPECIATED EMISSION> -! -! CALLS: CHECKMEM -! -! 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. -!*********************************************************************** - -USE MODD_MGN2MECH -USE MODD_MEGAN - -USE MODE_SOILNOX - -USE MODI_INDEX1 - -IMPLICIT NONE - -INTEGER, INTENT(IN) :: KDATE ! DATE YYYYDDD -REAL, DIMENSION(:), INTENT(IN) :: PLAT !I LATITUDE OF GRID CELL -REAL, DIMENSION(:,:),INTENT(IN) :: PPFT !I PFT FACTOR ARRAY (NRTYP 1-16 IN THE FIRST DIM) -REAL, DIMENSION(:,:),INTENT(IN) :: PEF !I PFT FACTOR ARRAY (NRTYP 1-16 IN THE FIRST DIM) -REAL, DIMENSION(:), INTENT(IN) :: PCFNO !I NO CORRECTION FACTOR -REAL, DIMENSION(:), INTENT(IN) :: PCFNOG !I NO CORRECTION FACTOR FOR GRASS -REAL, DIMENSION(:,:), INTENT(IN) :: PCFSPEC -LOGICAL, INTENT(IN) :: OCONVERSION -INTEGER, DIMENSION(:), INTENT(IN) :: KSPMH_MAP -INTEGER, DIMENSION(:), INTENT(IN) :: KMECH_MAP -REAL, DIMENSION(:), INTENT(IN) :: PCONV_FAC -REAL, DIMENSION(:,:),INTENT(INOUT) :: PFLUX !IO EMISSION FLUX IN MOL/M2/S - -!*********************************************************************** -! THIS PROGRAM DOES CHEMICAL SPECIATION AND MECHANISM CONVERSION. -!... PROGRAM I/O FILES -! PROGRAM NAME -! INPUT MEGAN ER FILE -! CHARACTER*16 :: MGNERS = 'MGNERS' ! INPUT MEGAN ER FILE LOGICAL NAME -! NETCDF FILE -! CHARACTER*16 :: EFMAPS = 'EFMAPS' ! EFMAP INPUT FILE NAME -! CHARACTER*16 :: PFTS16 = 'PFTS16' ! INPUT PFT FILE LOGICAL -! OUTPUT FILE -! CHARACTER*16 :: MGNOUT = 'MGNOUT' ! OUTPUT FILE LOGICAL NAME -! PARAMETERS FOR FILE UNITS -! INTEGER :: LOGDEV ! LOGFILE UNIT NUMBER - -!... PROGRAM I/O PARAMETERS -!... EXTERNAL PARAMETERS - -REAL, DIMENSION(N_SPCA_SPC,SIZE(PFLUX,2)) :: ZTMPER ! TEMP EMISSION BUFFER -REAL, DIMENSION(SIZE(PFLUX,1),SIZE(PFLUX,2)) :: ZOUTER ! OUTPUT EMISSION BUFFER -REAL, DIMENSION(SIZE(PLAT)) :: ZTMP1, ZTMP2, ZTMP3, ZTMP4 -REAL :: ZTMO1, ZTMO2, ZTMO3 -REAL :: Z2CRATIO - -!... INTERNAL PARAMETERS -! INTERNAL PARAMTERS (STATUS AND BUFFER) -INTEGER, DIMENSION(SIZE(PLAT)) :: ILEN, IDAY -INTEGER :: JS, JJ, JI, JM, JN ! COUNTERS -INTEGER :: JMPMG, JMPSP, JMPMC ! COUNTERS -INTEGER :: INO -INTEGER :: INP, IN_SCON_SPC - -!*********************************************************************** - -!======================================================================= -!... BEGIN PROGRAM -!======================================================================= - -INP = SIZE(PLAT) -IN_SCON_SPC = SIZE(KSPMH_MAP) - -! CHANGE THE UNIT ACCORDING TO TONPHR FLAG -! IF ( TONPHR ) THEN -! UNITS3D(1:NVARS3D) = 'TONS/HR' -! ELSE -! UNITS3D(1:NVARS3D) = 'MG/M*M/H' -! ENDIF -! -! DO S = 1, NVARS3D -! PRINT*,'OUTPUT VARIABLE:',VNAME3D(S),UNITS3D(S) -! ENDDO - -! CALL NAMEVAL ( MGNERS , MESG ) ! GET INPUT FILE NAME AND PATH -! FDESC3D( 2 ) = 'INPUT MEGAN FILE: '//TRIM(MESG) - -!... ALLOCATE MEMORY - -!.....2) CONVERSION FROM MGN 20 TO SPECIATED 150 -!----------------------------------------------------------------------- -ZTMPER = 0. -ZOUTER = 0. - -INO = INDEX1('NO',CMGN_SPC) - -!... LOOP THROUGH TIME -DO JS = 1, N_SMAP_SPC - - JMPMG = NMG20_MAP(JS) - JMPSP = NSPCA_MAP(JS) -! PRINT*,'CONVERT '//MGN_SPC(NMPMG)//' TO '//SPCA_SPC(NMPSP) - - IF ( JMPMG.NE.INO ) THEN - - !... NOT NO - IF ( XEF_ALL(1,JMPMG).LT.0. ) THEN - - !... USE EFMAPS - ZTMP1(:) = 0. - ZTMP2(:) = 0. - DO JM = 1,N_MGN_PFT - ZTMP1 = ZTMP1 + PPFT(JM,:) - ZTMP2 = ZTMP2 + XEFFS_ALL(JM,JMPSP) * PPFT(JM,:) - ENDDO - WHERE( ZTMP1(:).EQ.0. ) - ZTMPER(JMPSP,:) = 0. - ELSEWHERE - ZTMPER(JMPSP,:) = PCFSPEC(JMPMG,:) * PEF(JMPMG,:) * ZTMP2(:)/ZTMP1(:) - ENDWHERE - - ELSE - - !... USE PFT-EF - ZTMP3(:) = 0.0 - ZTMP4(:) = 0.0 - DO JM = 1,N_MGN_PFT - !ZTMP3 = ZTMP3 + XEF_ALL(JM,JMPMG) * XEFFS_ALL(JM,JMPSP) * PPFT(JM,:)/100. - ZTMP4(:) = ZTMP4(:) + PPFT(JM,:) - ZTMP3(:) = ZTMP3(:) + XEF_ALL(JM,JMPMG) * XEFFS_ALL(JM,JMPSP) * PPFT(JM,:) ! bug S. Oumami - ENDDO - WHERE( ZTMP4(:).EQ.0. ) - ZTMPER(JMPSP,:) = 0. - ELSEWHERE - ZTMPER(JMPSP,:) = PCFSPEC(JMPMG,:) * ZTMP3(:) / ZTMP4(:) - ENDWHERE - - - ENDIF - - ELSE IF ( JMPMG.EQ.INO ) THEN - -!!-----------------NO STUFF----------------------- - - CALL GROWSEASON(KDATE, PLAT, IDAY, ILEN) - - DO JJ = 1,SIZE(PPFT,2) - - ! CHECK FOR GROWING SEASON - IF ( IDAY(JJ).EQ.0 ) THEN - - ! NON GROWING SEASON - ! CFNOG FOR EVERYWHERE - ! OVERRIDE CROP WITH GRASS WARM = 14 - IF ( XEF_ALL(1,INO).LT.0. ) THEN - - ! WITH EFMAPS - ZTMO1 = 0. - ZTMO2 = 0. - DO JM = 1,14 - ZTMO1 = ZTMO1 + PPFT(JM,JJ) - ZTMO2 = ZTMO2 + XEFFS_ALL(JM,JMPSP) * PPFT(JM,JJ) - ENDDO - DO JM = 15,N_MGN_PFT - ZTMO1 = ZTMO1 + PPFT(JM,JJ) - Z2CRATIO = XEF_ALL(14,INO)/XEF_ALL(JM,INO) - ZTMO2 = ZTMO2 + XEFFS_ALL(JM,JMPSP) * PPFT(JM,JJ) * Z2CRATIO - ENDDO - IF ( ZTMO1.EQ.0. ) THEN - ZTMPER(JMPSP,JJ) = 0. - ELSE - !ZTMPER(JMPSP,JJ) = & - ! PCFSPEC(INO,JJ) * PEF(INO,JJ) * PCFNOG(JJ) * ZTMO2/ZTMO1 - ZTMPER(JMPSP,JJ) = & - PCFSPEC(INO,JJ) * PEF(INO,JJ) * PCFNOG(JJ) * ZTMO2/ZTMO1 * XN2NO - ENDIF - - ELSE - - ! WITHOUT EFMAPS - ZTMO3 = 0.0 - DO JM = 1,14 - ZTMO3 = ZTMO3 + XEF_ALL(JM,INO) * XEFFS_ALL(JM,JMPSP) * PPFT(JM,JJ)/100. - ENDDO - DO JM = 15,N_MGN_PFT - ZTMO3 = ZTMO3 + XEF_ALL(14,INO) * XEFFS_ALL(JM,JMPSP) * PPFT(JM,JJ)/100. - ENDDO - !ZTMPER(JMPSP,JJ) = PCFSPEC(INO,JJ) * PCFNOG(JJ) * ZTMO3 - ZTMPER(JMPSP,JJ) = PCFSPEC(INO,JJ) * PCFNOG(JJ) * ZTMO3 * XN2NO - - ENDIF - - ELSE IF ( IDAY(JJ).GT.0 .AND. IDAY(JJ).LE.366 ) THEN - - ! GROWING SEASON - ! CFNOG FOR EVERYWHERE EXCEPT CROPS - ! CFNO FOR CROP AND CORN - IF ( XEF_ALL(1,INO).LT.0. ) THEN - - ! WITH EFMAPS - ZTMO1 = 0. - ZTMO2 = 0. - DO JM = 1,14 - ZTMO1 = ZTMO1 + PPFT(JM,JJ) - ZTMO2 = ZTMO2 + XEFFS_ALL(JM,JMPSP) * PPFT(JM,JJ) * PCFNOG(JJ) - ENDDO - DO JM = 15,N_MGN_PFT - ZTMO1 = ZTMO1 + PPFT(JM,JJ) - ZTMO2 = ZTMO2 + XEFFS_ALL(JM,JMPSP) * PPFT(JM,JJ) * PCFNO(JJ) - ENDDO - IF ( ZTMO1.EQ.0. ) THEN - ZTMPER(JMPSP,JJ) = 0. - ELSE - !ZTMPER(JMPSP,JJ) = PCFSPEC(INO,JJ) * PEF(INO,JJ) * ZTMO2/ZTMO1 - ZTMPER(JMPSP,JJ) = PCFSPEC(INO,JJ) * PEF(INO,JJ) * ZTMO2/ZTMO1 * XN2NO - ENDIF - - ELSE - - ! WITHOUT EFMAPS - ZTMO3 = 0.0 - DO JM = 1,14 - ZTMO3 = ZTMO3 + & - XEF_ALL(JM,INO) * XEFFS_ALL(JM,JMPSP) * PPFT(JM,JJ)/100. * PCFNOG(JJ) - ENDDO - DO JM = 15,N_MGN_PFT - ZTMO3 = ZTMO3 + & - XEF_ALL(JM,INO) * XEFFS_ALL(JM,JMPSP) * PPFT(JM,JJ)/100. * PCFNO(JJ) - ENDDO - !ZTMPER(JMPSP,JJ) = PCFSPEC(INO,JJ) * ZTMO3 - ZTMPER(JMPSP,JJ) = PCFSPEC(INO,JJ) * ZTMO3 * XN2NO - ENDIF - - ELSE - - WRITE(*,*) "MGN2MECH: BAD IDAY" - STOP - - ENDIF - - ENDDO !DO R = 1,NROWS - -!-----------------END OF NO---------------------- - ENDIF !IF ( NMPMG .NE. INO ) THEN - -ENDDO ! END SPECIES LOOP - -!----------------------------------------------------------------------- -!.....3) CONVERSION FROM SPECIATED SPECIES TO MECHANISM SPECIES -!----------------------------------------------------------------------- -! ! CONVERT FROM UG/M^2/HR TO MOL/M^2/S USING THEIR MW - -DO JS = 1, N_SPCA_SPC - ZTMPER(JS,:) = ZTMPER(JS,:) / XSPCA_MWT(JS) * XUG2G / XHR2SEC -ENDDO -! - ! LUMPING TO MECHANISM SPECIES -! -IF ( OCONVERSION ) THEN - - DO JS = 1, IN_SCON_SPC - - JMPSP = KSPMH_MAP(JS) ! MAPPING VALUE FOR SPCA - JMPMC = KMECH_MAP(JS) ! MAPPING VALUE FOR MECHANISM - ZOUTER(JMPMC,:) = ZOUTER(JMPMC,:) + ( ZTMPER(JMPSP,:) * PCONV_FAC(JS) ) -! ! UNITS OF THESE SPECIES ARE IN MOLE/S ------> MOLE/M²/S - - ENDDO ! END SPECIES LOOP - -ELSE - ! ! GET ALL 150 SPECIES INTO THE OUTPUT ARRAY - ZOUTER(:,:) = ZTMPER(:,:) - ! ! UNITS OF THESE SPECIES ARE IN MOLE/M2/S - -ENDIF -PFLUX(:,:) = ZOUTER(:,:) - -END SUBROUTINE MGN2MECH diff --git a/src/LIB/MEGAN/modd_megan.F90 b/src/LIB/MEGAN/modd_megan.F90 deleted file mode 100644 index df8fdb870141aadd492e194c474fd89de5d0af20..0000000000000000000000000000000000000000 --- a/src/LIB/MEGAN/modd_megan.F90 +++ /dev/null @@ -1,145 +0,0 @@ -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 deleted file mode 100644 index f64f45eb52ccb15ce98405c9fbcd260a8dac3b13..0000000000000000000000000000000000000000 --- a/src/LIB/MEGAN/modd_mgn2mech.F90 +++ /dev/null @@ -1,1275 +0,0 @@ -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/LIB/MEGAN/mode_gamma_etc.F90 b/src/LIB/MEGAN/mode_gamma_etc.F90 deleted file mode 100644 index 04a1b209106bbb8b2f8f99a5a2b731cc65fe9041..0000000000000000000000000000000000000000 --- a/src/LIB/MEGAN/mode_gamma_etc.F90 +++ /dev/null @@ -1,554 +0,0 @@ -!======================================================================= -! MODULE GAMMA -! -! THIS MODULE CONTAIN FUNCTIONS TO CALCULATE -! GAMMA_P, GAMMA_T, GAMMA_L, GAMMA_A FOR BVOCS. -! -! CONTAINS: 1)GAMMA_LAI -! 2)GAMMA_P -! 3)GAMMA_TLD -! 4)GAMMA_TLI -! 5)GAMMA_A -! 6)GAMMA_S -! 7)GAMMA_CO2 -! 8)GAMMA_LAIBIDIR -! -! NOTE: -! -! REQUIREMENT: -! -! CALLS: SOLARANGLE -! -! CREATED BY TAN 11/21/06 FOR MEGAN V2.0 -! -! HISTORY: -! 08/01/07 GUENTHER A. - MOVE TO MEGANV2.02 WITH MODIFICATION TO -! CORRECT CALCULATION OF GAMMA_P -! -!======================================================================= - -MODULE MODE_GAMMA_ETC -! -USE MODD_MEGAN -! -!USE MODI_SOLARANGLE -USE MODI_INDEX1 -! -IMPLICIT NONE - -!... PROGRAM I/O PARAMETERS - -!... EXTERNAL PARAMETERS - -CONTAINS -!*********************************************************************** - -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -! -! SCIENTIFIC ALGORITHM -! -! EMISSION = [EF][GAMMA][RHO] -! WHERE [EF] = EMISSION FACTOR (UG/M2H) -! [GAMMA] = EMISSION ACTIVITY FACTOR (NON-DIMENSION) -! [RHO] = PRODUCTION AND LOSS WITHIN PLANT CANOPIES -! (NON-DIMENSINO) -! ASSUMPTION: [RHO] = 1 (11/27/06) (SEE PDT_LOT_CP.EXT) -! -! GAMMA = [GAMMA_CE][GAMMA_AGE][GAMMA_SM] -! WHERE [GAMMA_CE] = CANOPY CORRECTION FACTOR -! [GAMMA_AGE] = LEAF AGE CORRECTION FACTOR -! [GAMMA_SM] = SOIL MOISTURE CORRECTION FACTOR -! ASSUMPTION: [GAMMA_SM] = 1 (11/27/06) -! -! GAMMA_CE = [GAMMA_LAI][GAMMA_P][GAMMA_T] -! WHERE [GAMMA_LAI] = LEAF AREA INDEX FACTOR -! [GAMMA_P] = PPFD EMISSION ACTIVITY FACTOR -! [GAMMA_T] = TEMPERATURE RESPONSE FACTOR -! -! EMISSION = [EF][GAMMA_LAI][GAMMA_P][GAMMA_T][GAMMA_AGE][GAMMA_SM] -! DERIVATION: -! EMISSION = [EF][GAMMA_ETC](1-LDF) + [EF][GAMMA_ETC][LDF][GAMMA_P] -! EMISSION = [EF][GAMMA_ETC]{ (1-LDF) + [LDF][GAMMA_P] } -! EMISSION = [EF][GAMMA_ECT]{ (1-LDF) + [LDF][GAMMA_P] } -! WHERE LDF = LIGHT DEPENDENT FUNCTION (NON-DIMENSION) -! -! FOR ISOPRENE -! ASSUMPTION: LDF = 1 FOR ISOPRENE (11/27/06) -! -! FINAL EQUATION -! EMISSION = [EF][GAMMA_LAI][GAMMA_P][GAMMA_T][GAMMA_AGE][GAMMA_SM] -! -! FOR NON-ISOPRENE -! FINAL EQUATION -! EMISSION = [EF][GAMMA_LAI][GAMMA_T][GAMMA_AGE][GAMMA_SM]* -! { (1-LDF) + [LDF][GAMMA_P] } -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -!======================================================================= -!... BEGIN MODULE -!======================================================================= - - -!----------------------------------------------------------------------- -!.....1) CALCULATE GAM_L (GAMMA_LAI) -!----------------------------------------------------------------------- -! 0.49[LAI] -! GAMMA_LAI = ---------------- (NON-DIMENSION) -! (1+0.2LAI^2)^0.5 -! -! SUBROUTINE GAMMA_LAI RETURNS THE GAMMA_LAI VALUES -!----------------------------------------------------------------------- -SUBROUTINE GAMMA_LAI(PLAI, PGAM_L) - -IMPLICIT NONE -! INPUT -REAL,DIMENSION(:),INTENT(IN) :: PLAI -! OUTPUT -REAL,DIMENSION(:),INTENT(OUT) :: PGAM_L - -PGAM_L(:) = (0.49*PLAI(:)) / ( (1.+0.2*(PLAI(:)**2))**0.5 ) - -END SUBROUTINE GAMMA_LAI -!----------------------------------------------------------------------- - -!----------------------------------------------------------------------- -!.....5) CALCULATE GAM_A (GAMMA_AGE) -!----------------------------------------------------------------------- -! -! GAMMA_AGE = FNEW*ANEW + FGRO*AGRO + FMAT*AMAT + FOLD*AOLD -! WHERE FNEW = NEW FOLIAGE FRACTION -! FGRO = GROWING FOLIAGE FRACTION -! FMAT = MATURE FOLIAGE FRACTION -! FOLD = OLD FOLIAGE FRACTION -! ANEW = RELATIVE EMISSION ACTIVITY FOR NEW FOLIAGE -! AGRO = RELATIVE EMISSION ACTIVITY FOR GROWING FOLIAGE -! AMAT = RELATIVE EMISSION ACTIVITY FOR MATURE FOLIAGE -! AOLD = RELATIVE EMISSION ACTIVITY FOR OLD FOLIAGE -! -! -! FOR FOLIAGE FRACTION -! CASE 1) LAIC = LAIP -! FNEW = 0.0 , FGRO = 0.1 , FMAT = 0.8 , FOLD = 0.1 -! -! CASE 2) LAIP > LAIC -! FNEW = 0.0 , FGRO = 0.0 -! FMAT = 1-FOLD -! FOLD = (LAIP-LAIC)/LAIP -! -! CASE 3) LAIP < LAIC -! FNEW = 1-(LAIP/LAIC) T <= TI -! = (TI/T) * ( 1-(LAIP/LAIC) ) T > TI -! -! FMAT = LAIP/LAIC T <= TM -! = (LAIP/LAIC) + -! ( (T-TM)/T ) * ( 1-(LAIP/LAIC) ) T > TM -! -! FGRO = 1 - FNEW - FMAT -! FOLD = 0.0 -! -! WHERE -! TI = 5 + (0.7*(300-TT)) TT <= 303 -! = 2.9 TT > 303 -! TM = 2.3*TI -! -! T = LENGTH OF THE TIME STEP (DAYS) -! TI = NUMBER OF DAYS BETWEEN BUDBREAK AND THE INDUCTION OF -! EMISSION -! TM = NUMBER OF DAYS BETWEEN BUDBREAK AND THE INITIATION OF -! PEAK EMISSIONS RATES -! TT = AVERAGE TEMPERATURE (K) NEAR TOP OF THE CANOPY DURING -! CURRENT TIME PERIOD (DAILY AVE TEMP FOR THIS CASE) -! -! -! FOR RELATIVE EMISSION ACTIVITY -! CASE 1) CONSTANT -! ANEW = 1.0 , AGRO = 1.0 , AMAT = 1.0 , AOLD = 1.0 -! -! CASE 2) MONOTERPENES -! ANEW = 2.0 , AGRO = 1.8 , AMAT = 0.95 , AOLD = 1.0 -! -! CASE 3) SESQUITERPENES -! ANEW = 0.4 , AGRO = 0.6 , AMAT = 1.075, AOLD = 1.0 -! -! CASE 4) METHANOL -! ANEW = 3.0 , AGRO = 2.6 , AMAT = 0.85 , AOLD = 1.0 -! -! CASE 5) ISOPRENE -! ANEW = 0.05 , AGRO = 0.6 , AMAT = 1.125, AOLD = 1.0 -! -! SUBROUTINE GAMMA_A RETURNS GAMMA_A -!----------------------------------------------------------------------- -SUBROUTINE GAMMA_A(KDATE, KTIME, KTSTLEN, HSPC_NAME, PTEMP_D, PLAIARP, PLAIARC, PGAM_A) - -IMPLICIT NONE - -! INPUT -INTEGER, INTENT(IN) :: KDATE, KTIME, KTSTLEN -CHARACTER(LEN=16), INTENT(IN) :: HSPC_NAME -REAL, DIMENSION(:), INTENT(IN) :: PTEMP_D -REAL, DIMENSION(:), INTENT(IN) :: PLAIARP, PLAIARC -! OUTPUT -REAL,DIMENSION(:),INTENT(OUT) :: PGAM_A - -! LOCAL PARAMETERS -REAL :: ZFNEW, ZFGRO, ZFMAT, ZFOLD -REAL :: ZTI, ZTM ! NUMBER OF DAYS BETWEEN BUDBREAK - ! AND INDUCTION OF EMISSION, - ! INITIATION OF PEAK EMISSIONS RATES -INTEGER :: IAINDX ! RELATIVE EMISSION ACITIVITY INDEX -INTEGER :: ISPCNUM -INTEGER :: JJ - -!... CHOOSE RELATIVE EMISSION ACTIVITY -!--------CODE BY XUEMEI WANG 11/04/2007---------------- -! -ISPCNUM = INDEX1(HSPC_NAME, CMGN_SPC) -IAINDX = NREA_INDEX(ISPCNUM) -! -!--------------------------------------------------- -! LOCAL PARAMETER ARRAYS -DO JJ = 1,SIZE(PLAIARP) - IF ( PTEMP_D(JJ).LE.303. ) THEN - ZTI = 5.0 + 0.7*(300.-PTEMP_D(JJ)) - ELSE - ZTI = 2.9 - ENDIF - ZTM = 2.3 * ZTI -! - - -!... CALCULATE FOLIAGE FRACTION - -! PRINT*,'LAIP,LAIC, TT=',MINVAL(LAIP), MAXVAL(LAIP), -! S MINVAL(LAIC), MAXVAL(LAIC), MINVAL(TT), MAXVAL(TT) - -! WHERE (LAIP .LT. LAIC) - -! CALCULATE TI AND TM - IF ( PLAIARP(JJ).EQ.PLAIARC(JJ) ) THEN - - ZFNEW = 0.0 - ZFGRO = 0.1 - ZFMAT = 0.8 - ZFOLD = 0.1 - - ELSEIF ( PLAIARP(JJ).GT.PLAIARC(JJ) ) THEN - - ZFNEW = 0.0 - ZFGRO = 0.0 - ZFOLD = ( PLAIARP(JJ)-PLAIARC(JJ) ) / PLAIARP(JJ) - ZFMAT = 1. - ZFOLD - - ELSE - - ZFMAT = PLAIARP(JJ)/PLAIARC(JJ) - ! CALCULATE FNEW AND FMAT, THEN FGRO AND FOLD - ! FNEW - IF ( ZTI.GE.KTSTLEN ) THEN - ZFNEW = 1.0 - ZFMAT - ELSE - ZFNEW = (ZTI/KTSTLEN) * ( 1. - ZFMAT ) - ENDIF -! FMAT - IF ( ZTM.LT.KTSTLEN ) THEN - ZFMAT = ZFMAT + ( (KTSTLEN-ZTM)/KTSTLEN ) * ( 1.-ZFMAT ) - ENDIF - - ZFGRO = 1.0 - ZFNEW - ZFMAT - ZFOLD = 0.0 - - ENDIF - - !... CALCULATE GAMMA_A - PGAM_A(JJ) = ZFNEW * XANEW(IAINDX) + ZFGRO * XAGRO(IAINDX) + & - ZFMAT * XAMAT(IAINDX) + ZFOLD * XAOLD(IAINDX) - -ENDDO - -END SUBROUTINE GAMMA_A - -!----------------------------------------------------------------------- -!.....6) CALCULATE GAM_SMT (GAMMA_SM) -!----------------------------------------------------------------------- -! -! GAMMA_SM = 1.0 (NON-DIMENSION) -! -! -! SUBROUTINE GAMMA_S RETURNS THE GAMMA_SM VALUES -!----------------------------------------------------------------------- -SUBROUTINE GAMMA_S( PGAM_S ) - -IMPLICIT NONE - -REAL,DIMENSION(:) :: PGAM_S - -PGAM_S = 1.0 - -END SUBROUTINE GAMMA_S - -!----------------------------------------------------------------------- -!.....2) CALCULATE GAM_P (GAMMA_P) -!----------------------------------------------------------------------- -! GAMMA_P = 0.0 A<=0, A>=180, SIN(A) <= 0.0 -! -! GAMMA_P = SIN(A)[ 2.46*(1+0.0005(PDAILY-400))*PHI - 0.9*PHI^2 ] -! 0<A<180, SIN(A) > 0.0 -! WHERE PHI = ABOVE CANOPY PPFD TRANSMISSION (NON-DIMENSION) -! PDAILY = DAILY AVERAGE ABOVE CANOPY PPFD (UMOL/M2S) -! A = SOLAR ANGLE (DEGREE) -! -! NOTE: AAA = 2.46*BBB*PHI - 0.9*PHI^2 -! BBB = (1+0.0005(PDAILY-400)) -! GAMMA_P = SIN(A)*AAA -! -! PAC -! PHI = ----------- -! SIN(A)*PTOA -! WHERE PAC = ABOVE CANOPY PPFD (UMOL/M2S) -! PTOA = PPFD AT THE TOP OF ATMOSPHERE (UMOL/M2S) -! -! PAC = SRAD * 4.766 MMMOL/M2-S * 0.5 -! -! PTOA = 3000 + 99*COS[2*3.14-( DOY-10)/365 )] -! WHERE DOY = DAY OF YEAR -! -! SUBROUTINE GAMMA_P RETURNS THE GAMMA_P VALUES -!----------------------------------------------------------------------- -!SUBROUTINE GAMMA_P( KDATE, KTIME, PLAT, PLONG, PPFD, PPFD_D, PGAM_P ) -! -!IMPLICIT NONE -! -!! INPUT -!INTEGER,INTENT(IN) :: KDATE, KTIME -! -!REAL,DIMENSION(:),INTENT(IN) :: PLAT, PLONG -!! PHOTOSYNTHETIC PHOTON FLUX DENSITY: INSTANTANEOUS, DAILY -!REAL,DIMENSION(:),INTENT(IN) :: PPFD, PPFD_D -!! OUTPUT -!REAL,DIMENSION(:),INTENT(OUT) :: PGAM_P ! GAMMA_P -! -!! LOCAL PARAMETERS -!REAL, DIMENSION(SIZE(PLAT)) :: ZHOUR, ZSINBETA ! HOUR IS SOLAR HOUR -!INTEGER, DIMENSION(SIZE(PLAT)) :: IDAY ! DAY IS DOY (JDATE) -! -!REAL :: ZPTOA, ZPHI -!REAL :: ZAAA, ZBBB -!REAL :: ZBETA ! SOLAR ZENITH ANGLE -!INTEGER :: JJ -! -!!... BEGIN ESTIMATING GAMMA_P -! -!!... CONVERT DATE AND TIME FORMAT TO LOCAL TIME -!! DAY IS JULIAN DAY -!IDAY(:) = MOD(KDATE,1000) -! -!! CONVERT FROM XXXXXX FORMAT TO XX.XX (SOLAR HOUR) -!! HOUR = 0 -> 23.XX -!! SOLAR HOUR -!ZHOUR(:) = KTIME/10000. + PLONG(:)/15. -! -!WHERE ( ZHOUR(:).LT.0. ) -! ZHOUR(:) = ZHOUR(:) + 24.0 -! IDAY(:) = IDAY(:) - 1. -!ENDWHERE -! -!! GET SOLAR ELEVATION ANGLE -!CALL SOLARANGLE(IDAY, ZHOUR, PLAT, ZSINBETA) -! -!DO JJ = 1,SIZE(ZSINBETA) -! -! IF ( ZSINBETA(JJ).LE.0. ) THEN -! -! PGAM_P(JJ) = 0. -! -! ELSE IF ( ZSINBETA(JJ).GT.0. ) THEN -! -! ZPTOA = 3000.0 + 99.0 *COS(2. * 3.14 * (IDAY(JJ)-10.)/365.) -! -! ZPHI = PPFD(JJ) / (ZSINBETA(JJ) * ZPTOA) -! -! ZBBB = 1. + 0.0005 * (PPFD_D(JJ)-400. ) -! ZAAA = ( 2.46 * ZBBB * ZPHI ) - ( 0.9 * ZPHI**2 ) -! -! PGAM_P(JJ) = ZSINBETA(JJ) * ZAAA -! -! ZBETA = ASIN(ZSINBETA(JJ)) * XRPI180 ! DEGREE -! -! ! SCREENING THE UNFORCED ERRORS -! ! IF SOLAR ELEVATION ANGLE IS LESS THAN 1 THEN -! ! GAMMA_P CAN NOT BE GREATER THAN 0.1. -! IF ( ZBETA.LT.1.0 .AND. PGAM_P(JJ).GT.0.1 ) THEN -! PGAM_P(JJ) = 0.0 -! ENDIF -! -! ELSE -! -! WRITE(*,*) "ERROR: SOLAR ANGLE IS INVALID - FATAL ERROR GAMMA_P, STOP" -! STOP -! -! ENDIF -! ! END LOOP FOR NROWS -!ENDDO ! END LOOP FOR NCOLS -! -!END SUBROUTINE GAMMA_P -!!----------------------------------------------------------------------- -! -! -!!----------------------------------------------------------------------- -!!.....3) CALCULATE GAM_T (GAMMA_T) FOR ISOPRENE -!!----------------------------------------------------------------------- -!! EOPT*CT2*EXP(CT1*X) -!! GAMMA_T = ------------------------ -!! [CT2-CT1*(1-EXP(CT2*X))] -!! WHERE X = [ (1/TOPT)-(1/THR) ] / 0.00831 -!! EOPT = 1.75*EXP(0.08(TDAILY-297) -!! CT1 = 80 -!! CT2 = 200 -!! THR = HOURLY AVERAGE AIR TEMPERATURE (K) -!! TDAILY = DAILY AVERAGE AIR TEMPERATURE (K) -!! TOPT = 313 + 0.6(TDAILY-297) -!! -!! NOTE: AAA = EOPT*CT2*EXP(CT1*X) -!! BBB = [CT2-CT1*(1-EXP(CT2*X))] -!! GAMMA_T = AAA/BBB -!! -!! SUBROUTINE GAMMA_TLD RETURNS THE GAMMA_T VALUE FOR ISOPRENE -!!----------------------------------------------------------------------- -!SUBROUTINE GAMMA_TLD( PTEMP, PTEMP_D, PGAM_T, HSPC_NAME ) -! -!IMPLICIT NONE -! -!! INPUT -!REAL,DIMENSION(:),INTENT(IN) :: PTEMP, PTEMP_D ! DAILY, HOURLY SURFACE TEMPERATURE -!! OUTPUT -!REAL,DIMENSION(:),INTENT(OUT) :: PGAM_T ! GAMMA_T -!CHARACTER(LEN=16),INTENT(IN) :: HSPC_NAME -!! -!! LOCAL PARAMETERS -!REAL :: ZEOPT, ZTOPT, ZX, ZAAA, ZBBB -!INTEGER :: ISPCNUM, JJ -! -!ISPCNUM = INDEX1(HSPC_NAME, CMGN_SPC) -! -!DO JJ = 1,SIZE(PTEMP) -! -! ZEOPT = XCLEO(ISPCNUM) * EXP(0.08*(PTEMP_D(JJ)-297.)) -! ZTOPT = 313.0 + ( 0.6*(PTEMP_D(JJ)-297.) ) -! ZX = ( (1/ZTOPT)-(1/PTEMP(JJ)) ) / 0.00831 -! -! ZAAA = ZEOPT * XCT2 * EXP(XCTM1(ISPCNUM)*ZX) -! ZBBB = ( XCT2- XCTM1(ISPCNUM)*( 1.-EXP(XCT2*ZX) ) ) -! PGAM_T(JJ) = ZAAA/ZBBB -! -!ENDDO -! -!END SUBROUTINE GAMMA_TLD -!!----------------------------------------------------------------------- -! -! -!!----------------------------------------------------------------------- -!!.....4) CALCULATE GAM_T (GAMMA_T) FOR NON-ISOPRENE -!!----------------------------------------------------------------------- -!! -!! GAMMA_T = EXP[TDP_FCT*(T-TS)] -!! WHERE TDP_FCT = TEMPERATURE DEPENDENT PARAMETER ('BETA') -!! TS = STANDARD TEMPERATURE (NORMALLY 303K, 30C) -!! -!! SUBROUTINE GAMMA_TLI RETURNS THE GAMMA_T VALUE FOR NON-ISOPRENE -!!----------------------------------------------------------------------- -!SUBROUTINE GAMMA_TLI(HSPCNAM, PTEMP, PGAM_T) -! -!IMPLICIT NONE -! -!CHARACTER(LEN=16), INTENT(IN) :: HSPCNAM -!REAL,DIMENSION(:), INTENT(IN):: PTEMP -!REAL, DIMENSION(:), INTENT(OUT) :: PGAM_T -!! -!INTEGER :: ISPCNUM ! SPECIES NUMBER -! -!!--END OF DECLARATIONS-- -! -!ISPCNUM = INDEX1(HSPCNAM, CMGN_SPC) -!! -!PGAM_T = EXP( XTDF_PRM(ISPCNUM) * (PTEMP-XTS) ) -! -!END SUBROUTINE GAMMA_TLI -!!----------------------------------------------------------------------- -! -!!======================================================================= -!!----------------------------------------------------------------------- -!!.....7) CALCULATE GAM_CO2(GAMMA_CO2) -!!----------------------------------------------------------------------- -!! -!! GAMMA_CO2 = 1.0 (NON-DIMENSION) -!! WHEN CO2 =400PPM -!! -!! SUBROUTINE GAM_CO2 RETURNS THE GAMMA_CO2 VALUES -!! XUEMEI WANG-2009-06-22 -!!----------------------------------------------------------------------- -!SUBROUTINE GAMMA_CO2(PCO2, PGAM_CO2) -! -!IMPLICIT NONE -! -!REAL, DIMENSION(:), INTENT(IN) :: PCO2 -!REAL, DIMENSION(:), INTENT(OUT) :: PGAM_CO2 -! -!REAL :: ZCI -!INTEGER :: JJ -! -!DO JJ = 1,SIZE(PCO2) -! -! IF ( PCO2(JJ).EQ.400. ) THEN -! PGAM_CO2(JJ) = 1.0 -! ELSE -! ZCI = 0.7* PCO2(JJ) -! PGAM_CO2(JJ) = XISMAX - ((XISMAX*ZCI**XH) /(XCSTAR**XH+ZCI**XH)) -! ENDIF -! -!ENDDO -! -!END SUBROUTINE GAMMA_CO2 -! -!!======================================================================= -!!======================================================================= -!!----------------------------------------------------------------------- -!!.....8) CALCULATE GAMMA_LAIBIDIR(GAM_LAIBIDIR,LAI) -!!----------------------------------------------------------------------- -!!FROM ALEX GUENTHER 2010-01-26 -!!IF LAI < 2 THEN -!!GAMMALAIBIDIR= 0.5 * LAI -!!ELSEIF LAI <= 6 THEN -!!GAMMALAIBIDIR= 1 - 0.0625 * (LAI - 2) -!!ELSE -!!GAMMALAIBIDIR= 0.75 -!!END IF -!! -!! SUBROUTINE GAMMA_LAIBIDIR RETURNS THE GAM_LAIBIDIR VALUES -!! XUEMEI WANG-2010-01-28 -!! -!!----------------------------------------------------------------------- -!SUBROUTINE GAMMA_LAIBIDIR(PLAI, PGAM_LAIBIDIR) -! -!IMPLICIT NONE -! -!REAL,DIMENSION(:),INTENT(IN) :: PLAI -!REAL,DIMENSION(:),INTENT(OUT) :: PGAM_LAIBIDIR -! -!INTEGER :: JJ -!! -!DO JJ = 1,SIZE(PLAI) -! -! IF ( PLAI(JJ)<2. ) THEN -! PGAM_LAIBIDIR(JJ) = 0.5 * PLAI(JJ) -! ELSEIF ( PLAI(JJ).GE.2. .AND. PLAI(JJ).LE.6. ) THEN -! PGAM_LAIBIDIR(JJ) = 1. - 0.0625 * ( PLAI(JJ)-2. ) -! ELSE -! PGAM_LAIBIDIR(JJ) = 0.75 -! ENDIF -! -!ENDDO -! -!END SUBROUTINE GAMMA_LAIBIDIR -!!======================================================================= -! -END MODULE MODE_GAMMA_ETC diff --git a/src/LIB/MEGAN/mode_megan.F90 b/src/LIB/MEGAN/mode_megan.F90 deleted file mode 100644 index 584fda604460f5e9520796307a6719c89100c482..0000000000000000000000000000000000000000 --- a/src/LIB/MEGAN/mode_megan.F90 +++ /dev/null @@ -1,1235 +0,0 @@ -MODULE MODE_MEGAN -! -USE MODD_MEGAN -! -USE MODI_SOLARANGLE -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! -IMPLICIT NONE -! -!XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -! -! INPUT AND OUTPUT FILES MUST BE SELECTED BEFORE STARTING THE PROGRAM -! -!XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -!! -! INPUT VARIBLES -! -! DAY JULIAN DAY -! LAT LATITUDE -! HOUR HOUR OF THE DAY -! TC TEMPERATURE [C] -! PPFD INCOMING PHOTOSYNTHETIC ACTIVE RADIATION [UMOL/M2/S1] -! WIND WIND SPEED [M S-1] -! HUMIDITY RELATIVE HUMIDITY [%] -! CANTYPYE DEFINES SET OF CANOPY CHARACTERISTICS -! LAI LEAF AREA INDEX [M2 PER M2 GROUND AREA] -! DI ??? -! PRES PRESSURE [PA] -! -! USED VARIABLES: -! -! PPFDFRAC FRACTION OF TOTAL SOLAR RADIATION THAT IS PPFD -! SOLAR SOLAR RADIATION [W/M2] -! MAXSOLAR MAXIMUM OF SOLAR RADIATION -! BETA SIN OF SOLAR ANGLE ABOVE HORIZON -! SINBETA SOLAR ANGLE ABOVE HORIZON -! TAIRK0 ABOVE CANOPY AIR TEMPERATURE [K] -! TAIRK ARRAY OF CANOPY AIR TEMPERATURE [K] -! WS0 ABOVE CANOPY WIND SPEED [M/S] -! WS ARRAY OF CANOPY WIND SPEED [M/S] -! HUMIDAIRPA0 ABOVE CANOPY AMBIENT HUMIDITY [PA] -! HUMIDAIRPA ARRAY OF CANOPY AMBIENT HUMIDITY IN [PA] -! STOMATADI INDEX FOR WATER STATUS OF LEAVES. USED TO MODIFY STOMATAL CONDUCTANCE -! TRANSMIS TRANSMISSION OF PPFD THAT IS DIFFUSE -! DIFFFRAC FRACTION OF PPFD THAT IS DIFFUSE -! PPFDFRAC FRACTION OF SOLAR RAD THAT IS PPFD -! TRATE STABILITY OF BOUNDARY ??? -! SH SENSIBLE HEAT FLUX ??? -! VPGAUSWT ARRAY OF GAUSSIAN WEIGHTING FACTORS -! VPGAUSDIS ARRAY OF GAUSSIAN WEIGHTING FACTORS -! VPSLWWT ARRAY OF GAUSSIAN WEIGHTING FACTORS -! SUNFRAC ARRAY OF THE FRACTION OF SUN LEAVES. I = 1 IS THE TOP CANOPY LAYER, 2 IS THE NEXT LAYER, ETC. -! SUNPPFD ARRAY OF INCOMING (NOT ABSORBED) PPFD ON A SUN LEAF [UMOL/M2/S] -! SHADEPPFD ARRAY OF INCOMING (NOT ABSORBED) PPFD ON A SHADE LEAF [UMOL/M2/S] -! SUNQV ARRAY OF VISIBLE RADIATION (IN AND OUT) FLUXES ON SUN LEAVES -! SHADEQV ARRAY OF ABSORBED VISIBLE RADIATION (IN AND OUT) FLUXES ON SHADE LEAVES -! SUNQN ARRAY OF ABSORBED NEAR IR RADIATION (IN AND OUT) FLUXES ON SUN LEAVES -! SHADEQN ARRAY OF ABSORBED NEAR IR RADIATION (IN AND OUT) FLUXES ON SHADE LEAVES -! SUNLEAFTK ARRAY OF LEAF TEMPERATURE FOR SUN LEAVES [K] -! SUNLEAFSH ARRAY OF SENSIBLE HEAT FLUX FOR SUN LEAVES [W/M2] -! SUNLEAFLH ARRAY OF LATENT HEAT FLUX FOR SUN LEAVES [W/M2] -! SUNLEAFIR ARRAY OF INFRARED FLUX FOR SUN LEAVES [W/M2] -! SHADELEAFTK ARRAY OF LEAF TEMPERATURE FOR SHADE LEAVES [K] -! SHADELEAFSH ARRAY OF SENSIBLE HEAT FLUX FOR SHADE LEAVES [W/M2] -! SHADELEAFLH ARRAY OF LATENT HEAT FLUX FOR SHADE LEAVES [W/M2] -! SHADELEAFIR ARRAY OF INFRARED FLUX FOR SHADE LEAVES [W/M2] -! QBABSV, QBABSN ABSORBED DIRECT BEAM LIGHT FOR VISIBLE AND NEAR INFRA RED -! QDABSV, QDABSN ARRAY OF ABSORBED DIFFUSE LIGHT FOR VISIBLE AND NEAR INFRA RED -! QSABSV, QSABSN ARRAY OF ABSORBED SCATTERED LIGHT FOR VISIBLE AND NEAR INFRA RED -! QBEAMV, QBEAMN ABOVE CANOPY BEAM (DIRECT) LIGHT FOR VISIBLE AND NEAR INFRA RED -! QDIFFV, QDIFFN ABOVE CANOPY DIFFUSE LIGHT FOR VISIBLE AND NEAR INFRA RED -! EA1PLAYER ARRAY OF EMISSION ACTIVITY OF LIGHT PER LAYER -! EA1TLAYER ARRAY OF EMISSION ACTIVITY OF TEMPERATURE PER LAYER -! EA1LAYER ARRAY OF COMPANIED EMISSION ACTIVITY -! EA1PCANOPY TOTAL EMISSION ACTIVITY OF LIGHT -! EATILAYER ARRAY OF EMISSION ACTIVITY OF TEMPERATURE INDENDENT PER LAYER -! EA1TCANOPY TOTAL EMISSION ACTIVITY OF TEMPERATURE DEPEDENT FACTOR -! PEA1CANOPY TOTAL COMPANIED EMISSION ACTIVITY -! PEATICANOPY TOTAL EMISSION ACTIVITY OF TEMPERATURE INDEPEDENT FACTOR -! CALCBETA FUNCTION: CALCULATION OF SOLAR ZENITH ANGLE -! WATERVAPPRES FUNCTION: CONVERT WATER MIXING RATIO (KG/KG) TO WATER VAPOR PRESSURE -! STABILITY FUNCTION: TEMPERATURE LAPSE RATE -! EA1T99 FUNCTION: TEMPERATURE DEPENDENCE ACTIVITY FACTOR FOR EMISSION TYPE 1 -! EA1P99 FUNCTION: LIGHT DEPENDENCE ACTIVITY FACTOR FOR EMISSION -! EALTI FUNCTION: TEMPERATURE INDEPENDENCE ACTIVITY FACTOR FOR EMISSION -! DISTOMATA FUNCTION: -! CALCECCENTRICITY FUNCTION: -! -!XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -! -CONTAINS -! -SUBROUTINE GAMME_CE(KDATE, KTIME, PCANOPYCHAR, KCANTYPE, HSPCNAME, & - PPFD24, PPFD240, PT24, PT240, PDI, & - PPFD0, PLAT, PLONG, PTC, PWIND, PHUMIDITY, & - PLAI, PRES, PEA1CANOPY, PEATICANOPY) !! -! -IMPLICIT NONE -! INPUT -INTEGER,INTENT(IN) :: KDATE, KTIME, KCANTYPE -REAL,DIMENSION(:,:),INTENT(IN) :: PCANOPYCHAR -CHARACTER(LEN=16), INTENT(IN) :: HSPCNAME -! -REAL, DIMENSION(:), INTENT(IN) :: PT24, PT240, PPFD24, PPFD240 -REAL, INTENT(IN) :: PDI -! -REAL, DIMENSION(:), INTENT(IN) :: PPFD0 -REAL, DIMENSION(:), INTENT(IN) :: PLONG, PLAT -REAL, DIMENSION(:), INTENT(IN) :: PTC, PRES, PWIND, PHUMIDITY, PLAI -! ARRAY OF CANOPY CHARACTERISTICS FOR KRTYP OF CANOPY TYPE -! OUTPUT -REAL, DIMENSION(:), INTENT(OUT) :: PEA1CANOPY, PEATICANOPY -! -! LOCAL VARIABLES -REAL, DIMENSION(NLAYERS) :: ZVPGAUSWT, ZVPGAUSDIS2, ZVPGAUSDIS -! -REAL, DIMENSION(SIZE(PLONG),NLAYERS) :: ZEA1LAYER, ZEATILAYER, ZVPSLWWT -REAL, DIMENSION(SIZE(PLONG),NLAYERS) :: ZSUNFRAC, ZSUNQV, ZSHADEQV, ZSUNQN, ZSHADEQN, & - ZSUNPPFD, ZSHADEPPFD, ZSUNLEAFTK, ZSHADELEAFTK, & - ZSUNLEAFSH, ZSHADELEAFSH, Z_PPFD, Z_ALPHAP -! -REAL, DIMENSION(SIZE(PLONG)) :: ZHOUR, ZSINBETA, ZSOLAR, & - ZMAXSOLAR, ZQDIFFV, ZQBEAMV, ZQDIFFN, ZQBEAMN, & - ZHUMIDAIRPA0, ZTRATE -! -REAL :: ZSTOMATADI -INTEGER, DIMENSION(SIZE(PLONG)) :: IDAY -INTEGER :: JI, JJ -! -!---------------------------HEADER OVER-------------------------------- -! -IDAY(:) = MOD(KDATE,1000) -! CONVERT FROM XXXXXX FORMAT TO XX.XX (SOLAR HOUR) -! HOUR = 0 -> 23.XX -! SOLAR HOUR -ZHOUR(:) = KTIME/10000. + PLONG(:)/15. -! -WHERE ( ZHOUR(:).LT.0. ) - ZHOUR(:) = ZHOUR(:) + 24. - IDAY (:) = IDAY (:) - 1 -ELSEWHERE ( ZHOUR.GT.24. ) - ZHOUR(:) = ZHOUR(:) - 24. - IDAY (:) = IDAY (:) + 1 -END WHERE -! -CALL SOLARANGLE(IDAY, ZHOUR, PLAT, ZSINBETA) - -! -ZSOLAR (:) = PPFD0(:)/2.25 -ZMAXSOLAR(:) = ZSINBETA(:) * XSOLARCONSTANT * CALCECCENTRICITY(IDAY(:)) -CALL SOLARFRACTIONS(ZSOLAR, ZMAXSOLAR, ZQDIFFV, ZQBEAMV, ZQDIFFN, ZQBEAMN) -! -CALL GAUSSIANINTEGRATION(ZVPGAUSWT, ZVPGAUSDIS, ZVPGAUSDIS2) -! -CALL CANOPYRAD(KCANTYPE, PCANOPYCHAR, ZVPGAUSDIS, & - PLAI, ZSINBETA, ZQBEAMV, ZQDIFFV, ZQBEAMN, ZQDIFFN, & - ZSUNFRAC, ZSUNQV, ZSHADEQV, ZSUNQN, ZSHADEQN, & - ZSUNPPFD, ZSHADEPPFD) -! -ZTRATE (:) = STABILITY(PCANOPYCHAR, KCANTYPE, ZSOLAR) -! -ZSTOMATADI = DISTOMATA(PDI) -! -ZHUMIDAIRPA0(:) = WATERVAPPRES(XWATERAIRRATIO, PHUMIDITY, PRES) -! -CALL CANOPYEB(KCANTYPE, PCANOPYCHAR, ZVPGAUSDIS, ZSTOMATADI, & - PTC, PWIND, ZTRATE, ZHUMIDAIRPA0, & - ZSUNQV, ZSHADEQV, ZSUNQN, ZSHADEQN, ZSUNPPFD, ZSHADEPPFD, & - ZSUNLEAFTK, ZSHADELEAFTK, ZSUNLEAFSH, ZSHADELEAFSH) - -!ZEA1TCANOPY(:) = 0. -!ZEA1PCANOPY(:) = 0. -PEA1CANOPY (:) = 0. -PEATICANOPY(:) = 0. - -DO JI = 1,SIZE(ZEA1LAYER,2) - - - !ZEA1TLAYER(:,JI) = EA1T99(ZSUNLEAFTK (:,JI), PT24, PT240, HSPCNAME) * ZSUNFRAC(:,JI) + & - ! EA1T99(ZSHADELEAFTK(:,JI), PT24, PT240, HSPCNAME) *(1.-ZSUNFRAC(:,JI)) - -! PSTD = 200 FOR SUN LEAVES -! PSTD = 50 FOR SHADE LEAVES - !ZEA1PLAYER(:,JI) = EA1P99(ZSUNPPFD(:,JI), PPFD24*0.5, PPFD240*0.5, XPSTD_SUN) * ZSUNFRAC(:,JI) + & - ! EA1P99(ZSHADEPPFD(:,JI), PPFD24*0.16, PPFD240*0.16, XPSTD_SHADE) * (1.-ZSUNFRAC(:,JI)) - - ZEA1LAYER(:,JI) = EA1T99(HSPCNAME , PT24 , PT240 , ZSUNLEAFTK (:,JI)) * & - EA1P99(XPSTD_SUN , PPFD24*0.5 , PPFD240*0.5 , ZSUNPPFD (:,JI)) * ZSUNFRAC(:,JI) + & - EA1T99(HSPCNAME , PT24 , PT240 , ZSHADELEAFTK(:,JI)) * & - EA1P99(XPSTD_SHADE, PPFD24*0.16, PPFD240*0.16, ZSHADEPPFD (:,JI) ) * (1.-ZSUNFRAC(:,JI)) - - ZEATILAYER(:,JI) = EALTI99(HSPCNAME, ZSUNLEAFTK (:,JI)) * ZSUNFRAC(:,JI) + & - EALTI99(HSPCNAME, ZSHADELEAFTK(:,JI)) * (1-ZSUNFRAC(:,JI)) - - Z_PPFD(:,JI) = ZSUNPPFD(:,JI) * ZSUNFRAC(:,JI) + ZSHADEPPFD(:,JI) * (1.-ZSUNFRAC(:,JI)) - - Z_ALPHAP(:,JI) = EA1P99(XPSTD_SUN , PPFD24*0.5 , PPFD240*0.5 , ZSUNPPFD (:,JI)) * ZSUNFRAC(:,JI) + & - EA1P99(XPSTD_SHADE, PPFD24*0.16, PPFD240*0.16, ZSHADEPPFD (:,JI) ) * (1.-ZSUNFRAC(:,JI)) !! - ! IF (KCANTYPE == 15) THEN - ! PRINT*, JI, ZSUNPPFD(:,JI) - !ENDIF - -ENDDO - -CALL WEIGHTSLW(ZVPGAUSDIS, PLAI, ZVPSLWWT) -! -DO JJ = 1,SIZE(PEA1CANOPY) -! ZEA1PCANOPY(JJ) = SUM(ZEA1PLAYER(JJ,:) * ZVPSLWWT(JJ,:) * ZVPGAUSWT(:) ) -! ZEA1TCANOPY(JJ) = SUM(ZEA1TLAYER(JJ,:) * ZVPSLWWT(JJ,:) * ZVPGAUSWT(:) ) - PEA1CANOPY (JJ) = SUM(ZEA1LAYER (JJ,:) * ZVPSLWWT(JJ,:) * ZVPGAUSWT(:) ) - PEATICANOPY(JJ) = SUM(ZEATILAYER(JJ,:) * ZVPSLWWT(JJ,:) * ZVPGAUSWT(:) ) -! THIS QUANTITY IS APPARENTLY NOT PASSED OUT OF THE SUBROUTINE -! ZSH(JJ) = SUM( ( ZSUNLEAFSH (JJ,:) * ZSUNFRAC(:,JJ) + & -! ZSHADELEAFSH(JJ,:) * (1 - ZSUNFRAC(:,JJ))) * PLAI(:) * ZVPGAUSWT(:) ) -ENDDO - - -PEA1CANOPY(:) = PEA1CANOPY(:) * XCCE * PLAI(:) - - -END SUBROUTINE GAMME_CE - -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO -! -! SUBROUTINE GAUSSIANINTEGRATION -! -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO - -SUBROUTINE GAUSSIANINTEGRATION(PWEIGHTGAUSS, PDISTGAUSS, PDISTGAUSS2) -! -IMPLICIT NONE -! -REAL,DIMENSION(:),INTENT(OUT) :: PWEIGHTGAUSS, PDISTGAUSS, PDISTGAUSS2 -! -! LOCAL VARIABLES -INTEGER :: JI -!-------------------------------------------------------------------- -! -IF ( NLAYERS.EQ.1 ) THEN - PWEIGHTGAUSS(1) = 1 - PDISTGAUSS (1) = 0.5 - PDISTGAUSS2 (1) = 1 -ELSEIF ( NLAYERS.EQ.3 ) THEN - PWEIGHTGAUSS(1) = 0.277778 - PWEIGHTGAUSS(2) = 0.444444 - PWEIGHTGAUSS(3) = 0.277778 - PDISTGAUSS(1) = 0.112702 - PDISTGAUSS(2) = 0.5 - PDISTGAUSS(3) = 0.887298 - PDISTGAUSS2(1) = 0.277778 - PDISTGAUSS2(2) = 0.722222 - PDISTGAUSS2(3) = 1 -ELSEIF ( NLAYERS.EQ.5 ) THEN - PWEIGHTGAUSS(1) = 0.1184635 - PWEIGHTGAUSS(2) = 0.2393144 - PWEIGHTGAUSS(3) = 0.284444444 - PWEIGHTGAUSS(4) = 0.2393144 - PWEIGHTGAUSS(5) = 0.1184635 - PDISTGAUSS(1) = 0.0469101 - PDISTGAUSS(2) = 0.2307534 - PDISTGAUSS(3) = 0.5 - PDISTGAUSS(4) = 0.7692465 - PDISTGAUSS(5) = 0.9530899 - PDISTGAUSS2(1) = 0.1184635 - PDISTGAUSS2(2) = 0.3577778 - PDISTGAUSS2(3) = 0.6422222 - PDISTGAUSS2(4) = 0.881536 - PDISTGAUSS2(5) = 1.0 -ELSE - DO JI = 1,NLAYERS - PWEIGHTGAUSS(JI) = 1. / NLAYERS - PDISTGAUSS (JI) = (JI - 0.5) / NLAYERS - PDISTGAUSS2 (JI) = JI / NLAYERS - ENDDO -ENDIF - -END SUBROUTINE GAUSSIANINTEGRATION - -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO -! -! SUBROUTINE WEIGHTSLW -! -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO - -SUBROUTINE WEIGHTSLW(PDISTGAUSS, PLAI, PSLW) - -IMPLICIT NONE - -REAL, DIMENSION(:), INTENT(IN) :: PLAI -REAL, DIMENSION(:), INTENT(IN) :: PDISTGAUSS - -REAL, DIMENSION(:,:), INTENT(OUT) :: PSLW - -! LOCAL VARIABLES -INTEGER :: JI -!-------------------------------------------------- - -DO JI = 1,NLAYERS - PSLW(:,JI) = 0.63 + 0.37 * EXP(-((PLAI(:) * PDISTGAUSS(JI)) - 1.)) -ENDDO - -END SUBROUTINE WEIGHTSLW - -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO -! -! SUBROUTINE SOLARFRACTIONS -! TRANSMISSION, FRACTION OF PPFD THAT IS DIFFUSE, -! FRACTION OF SOLAR RAD THAT IS PPFD -! -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO - -SUBROUTINE SOLARFRACTIONS(PSOLAR, PMAXSOLAR, PQDIFFV, PQBEAMV, PQDIFFN, PQBEAMN) -! -IMPLICIT NONE -! -! INTEGER,INTENT(IN) :: TIMEPERIOD -REAL, DIMENSION(:), INTENT(IN) :: PSOLAR, PMAXSOLAR -! -REAL, DIMENSION(:), INTENT(OUT) :: PQDIFFV, PQBEAMV, PQDIFFN, PQBEAMN -! -! INTERNAL VARIABLES -REAL :: ZFRACDIFF, ZPPFDFRAC, ZPPFDDIFFRAC, ZQV, ZQN -REAL :: ZTRANSMIS -INTEGER :: JJ -!----------------------------------------------------- -! IF (TIMEPERIOD .EQ. 1) THEN ! DAILY TRANSMISSION -! TRANSMIN = 0.26 -! TRANSSLOPE= 1.655 -! ELSE ! HOURLY TRANSMISSION -! TRANSMIN = 0.26 -! TRANSSLOPE = 1.655 -! ENDIF -DO JJ = 1,SIZE(PSOLAR) - - IF (PMAXSOLAR(JJ)<=0) THEN - ZTRANSMIS = 0.5 - ELSEIF (PMAXSOLAR(JJ)<PSOLAR(JJ)) THEN - ZTRANSMIS = 1.0 - ELSE - ZTRANSMIS = PSOLAR(JJ) / PMAXSOLAR(JJ) - ENDIF - -! ESTIMATE DIFFUSE FRACTION BASED ON DAILY TRANSMISSION (RODERICK 1999, GOUDRIANN AND VAN LAAR 1994- P.33) - -! IF (TRANSMIS > 0.81) THEN -! FRACDIFF = 0.05 -! ELSEIF (TRANSMIS > TRANSMIN) THEN -! FRACDIFF = 0.96-TRANSSLOPE * (TRANSMIS - TRANSMIN) -! ELSE -! FRACDIFF = 0.96 -! ENDIF - -! THE FRACTION OF TOTAL SOLAR RADIATION THAT IS PPFD (43% TO 55%) -! G. AND L. 84 -! PPFDFRAC = 0.43 + FRACDIFF * 0.12 - -!FRACDIFF IS BASED ON LIZASO 2005 -!MODIFIED BY XUEMEI 2010-01-26 ACCORDING TO ALEX'S DOCUMENT - ZFRACDIFF = 0.156 + 0.86/(1 + EXP(11.1*(ZTRANSMIS -0.53))) - -!PPFDFRAC IS BASED ON G.L. 84 -!MODIFIED BY XUEMEI 2010-01-26 ACCORDING TO ALEX'S DOCUMENT - ZPPFDFRAC = 0.55 -ZTRANSMIS*0.12 - -!PPFDDIFFRAC IS BASED ON DATA IN JACOVIDES 2007 -!MODIFIED BY XUEMEI 2010-01-26 ACCORDING TO ALEX'S DOCUMENT - ZPPFDDIFFRAC = ZFRACDIFF * (1.06 + ZTRANSMIS*0.4) - -! CALCULTE QDIFFV,QBEAMV, QDIFFN, QBEAMN IN THE SUBROUTINE -! MODIFIED BY XUEMEI 2010-01-26 ACCORDING TO ALEX'S DOCUMENT - IF (ZPPFDDIFFRAC > 1.0) ZPPFDDIFFRAC = 1.0 - - ZQV = ZPPFDFRAC * PSOLAR(JJ) - PQDIFFV(JJ) = ZQV * ZPPFDDIFFRAC - PQBEAMV(JJ) = ZQV - PQDIFFV(JJ) - ZQN = PSOLAR(JJ) - ZQV - PQDIFFN(JJ) = ZQN * ZFRACDIFF - PQBEAMN(JJ) = ZQN - PQDIFFN(JJ) - -ENDDO - -END SUBROUTINE SOLARFRACTIONS - -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO -! -! SUBROUTINE CANOPYRAD -! -! CANOPY LIGHT ENVIRONMENT MODEL -! CODE DEVELOPED BY ALEX GUENTHER, BASED ON SPITTERS ET AL. (1986), -! GOUDRIAN AND LAAR (1994), LEUNING (1997) -! INITIAL CODE 8-99, MODIFIED 7-2000 AND 12-2001 -! -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO -SUBROUTINE CANOPYRAD(KCANTYPE, PCANOPYCHAR, PDISTGAUSS, & - PLAI, PSINBETA, PQBEAMV, PQDIFFV, PQBEAMN, PQDIFFN, & - PSUNFRAC, PSUNQV, PSHADEQV, PSUNQN, PSHADEQN, & - PSUNPPFD, PSHADEPPFD, & - PQDABSV, PQDABSN, PQSABSV, PQSABSN, PQBABSV, PQBABSN) - -IMPLICIT NONE - -! INPUT -INTEGER, INTENT(IN) :: KCANTYPE -REAL, DIMENSION(:,:), INTENT(IN) :: PCANOPYCHAR -REAL, DIMENSION(:), INTENT(IN) :: PDISTGAUSS -! -REAL, DIMENSION(:), INTENT(IN) :: PLAI, PSINBETA, PQBEAMV, PQDIFFV, PQBEAMN, PQDIFFN -! OUTPUT -REAL, DIMENSION(:,:), INTENT(OUT) :: PSUNFRAC, PSUNQV, PSHADEQV, & - PSUNQN, PSHADEQN, PSHADEPPFD, PSUNPPFD -REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PQDABSV, PQDABSN, PQSABSV, PQSABSN -REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PQBABSV, PQBABSN - -! INTERNAL VARIABLES -REAL, DIMENSION(SIZE(PQBEAMV)) :: ZKB, ZLAIDEPTH, ZQDABSVL, ZQSABSVL, ZQDABSNL, ZQSABSNL, & - ZREFLBV, ZREFLBN, ZKBPV, ZKBPN, ZKDPV, ZKDPN -REAL, DIMENSION(SIZE(PQBEAMV)) :: ZQBABSV, ZQBABSN -REAL :: ZSCATV, ZSCATN, ZREFLDV, ZREFLDN, ZKD, ZCLUSTER -! -INTEGER :: JI, JJ -! -!--------------------------------------------------------------------- - - -! SCATTERING COEFFICIENTS (SCATV,SCATN), DIFFUSE AND BEAM REFLECTION -! COEFFICIENTS (REF..) FOR VISIBLE OR NEAR IR -ZSCATV = PCANOPYCHAR(5,KCANTYPE) -ZSCATN = PCANOPYCHAR(6,KCANTYPE) -ZREFLDV = PCANOPYCHAR(7,KCANTYPE) -ZREFLDN = PCANOPYCHAR(8,KCANTYPE) -ZCLUSTER = PCANOPYCHAR(9,KCANTYPE) -! -! EXTINCTION COEFFICIENTS FOR BLACK LEAVES FOR BEAM (KB) OR DIFFUSE (KD) -ZKB(:) = ZCLUSTER * 0.5 / MAX(0.00002,PSINBETA(:)) -! (0.5 ASSUMES A SPHERICAL LEAF ANGLE DISTRIBUTION (0.5 = COS (60 DEG)) -ZKD = 0.8 * ZCLUSTER -! (0.8 ASSUMES A SPHERICAL LEAF ANGLE DISTRIBUTION) - -CALL CALCEXTCOEFF(ZSCATV,ZKD,PQBEAMV,ZKB,ZREFLBV,ZKBPV,ZKDPV,ZQBABSV) -CALL CALCEXTCOEFF(ZSCATN,ZKD,PQBEAMN,ZKB,ZREFLBN,ZKBPN,ZKDPN,ZQBABSN) - -PSUNFRAC(:,:) = 0. -DO JI = 1,NLAYERS - -! PLAI DEPTH AT THIS LAYER - ZLAIDEPTH(:) = PLAI(:) * PDISTGAUSS(JI) -!FRACTION OF LEAVES THAT ARE SUNLIT - PSUNFRAC(:,JI) = EXP(-ZKB(:) * ZLAIDEPTH(:)) - - - CALL CALCRADCOMPONENTS(ZSCATV, ZREFLDV, PQDIFFV, PQBEAMV, ZKDPV, ZKBPV, ZKB, & - ZREFLBV, ZLAIDEPTH, ZQDABSVL, ZQSABSVL) - - CALL CALCRADCOMPONENTS(ZSCATN, ZREFLDN, PQDIFFN, PQBEAMN, ZKDPN, ZKBPN, ZKB, & - ZREFLBN, ZLAIDEPTH, ZQDABSNL, ZQSABSNL) - - - PSHADEPPFD(:,JI) = (ZQDABSVL(:) + ZQSABSVL(:)) * XCONVERTSHADEPPFD / (1. - ZSCATV) - PSUNPPFD (:,JI) = PSHADEPPFD(:,JI) + (ZQBABSV(:) * XCONVERTSUNPPFD / (1. - ZSCATV)) - PSHADEQV (:,JI) = ZQDABSVL(:) + ZQSABSVL(:) - PSUNQV (:,JI) = PSHADEQV(:,JI) + ZQBABSV(:) - PSHADEQN (:,JI) = ZQDABSNL(:) + ZQSABSNL(:) - PSUNQN (:,JI) = PSHADEQN(:,JI) + ZQBABSN(:) - IF (PRESENT(PQDABSV)) PQDABSV (:,JI) = ZQDABSVL(:) - IF (PRESENT(PQSABSV)) PQSABSV (:,JI) = ZQSABSVL(:) - IF (PRESENT(PQDABSN)) PQDABSN (:,JI) = ZQDABSNL(:) - IF (PRESENT(PQSABSN)) PQSABSN (:,JI) = ZQSABSNL(:) -! - -ENDDO - - -DO JJ = 1,SIZE(PQBEAMV) - - IF ( (PQBEAMV(JJ)+PQDIFFV(JJ))<=0.001 .OR. PSINBETA(JJ)<=0.00002 .OR. PLAI(JJ)<=0.001 ) THEN - ! NIGHT TIME - ZQBABSV(JJ) = 0. - ZQBABSN(JJ) = 0. - - PSUNFRAC (JJ,:) = 0.2 - PSUNQN (JJ,:) = 0. - PSHADEQN (JJ,:) = 0. - PSUNQV (JJ,:) = 0. - PSHADEQV (JJ,:) = 0. - PSUNPPFD (JJ,:) = 0. - PSHADEPPFD(JJ,:) = 0. - IF (PRESENT(PQDABSV)) PQDABSV(JJ,:) = 0. - IF (PRESENT(PQSABSV)) PQSABSV(JJ,:) = 0. - IF (PRESENT(PQDABSN)) PQDABSN(JJ,:) = 0. - IF (PRESENT(PQSABSN)) PQSABSN(JJ,:) = 0. - - ENDIF - -END DO - -IF (PRESENT(PQBABSV)) PQBABSV(:) = ZQBABSV(:) -IF (PRESENT(PQBABSN)) PQBABSN(:) = ZQBABSN(:) - -END SUBROUTINE CANOPYRAD - -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO -! -! SUBROUTINE CALCEXTCOEFF -! -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO - -SUBROUTINE CALCEXTCOEFF(PSCAT, PKD, PQBEAM, PKB, PREFLB, PKBP, PKDP, PQBEAMABSORB) -! -IMPLICIT NONE -! -REAL, INTENT(IN) :: PSCAT, PKD -REAL, DIMENSION(:), INTENT(IN) :: PQBEAM, PKB -REAL, DIMENSION(:), INTENT(OUT) :: PREFLB, PKBP, PKDP, PQBEAMABSORB - -! LOCAL VARIABLES -REAL :: ZP -INTEGER :: JJ -!------------------------------------------------------------------- - -ZP = (1.-PSCAT)**0.5 - -DO JJ = 1,SIZE(PKB) - - PREFLB(JJ) = 1. - EXP((-2. * ((1.-ZP)/(1.+ZP)) * PKB(JJ)) / (1. + PKB(JJ))) - - ! EXTINCTION COEFFICIENTS - PKBP(JJ) = PKB(JJ) * ZP - PKDP(JJ) = PKD * ZP - ! ABSORBED BEAM RADIATION - PQBEAMABSORB(JJ) = PKB(JJ) * PQBEAM(JJ) * (1 - PSCAT) - -ENDDO - -END SUBROUTINE CALCEXTCOEFF - -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO -! -! SUBROUTINE CALCRADCOMPONENTS -! -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO - -SUBROUTINE CALCRADCOMPONENTS(PSCAT, PREFLD, PQDIFF, PQBEAM, PKDP, PKBP, PKB, & - PREFLB, PLAIDEPTH, PQDABS, PQSABS) - -IMPLICIT NONE - -REAL, INTENT(IN) :: PSCAT, PREFLD -REAL, DIMENSION(:), INTENT(IN) :: PQDIFF, PQBEAM, PKDP, PKBP, PKB, PREFLB, PLAIDEPTH -REAL, DIMENSION(:), INTENT(OUT) :: PQDABS, PQSABS -!------------------------------------------------------------------- - -PQDABS(:) = PQDIFF(:) * PKDP(:) * (1. - PREFLD) * EXP(-PKDP(:) * PLAIDEPTH(:)) - -PQSABS(:) = PQBEAM(:) * ((PKBP(:) * (1. - PREFLB(:)) * EXP(-PKBP(:) * PLAIDEPTH(:))) & - - (PKB(:) * (1. - PSCAT) * EXP(-PKB (:) * PLAIDEPTH(:)))) - -END SUBROUTINE CALCRADCOMPONENTS - -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO -! -! SUBROUTINE CANOPYEB -! -! CANOPY ENERGY BALANCE MODEL FOR ESTIMATING LEAF TEMPERATURE -! CODE DEVELOPED BY ALEX GUENTHER, BASED ON GOUDRIAN AND LAAR (1994), -! LEUNING (1997) -! INITIAL CODE 8-99, MODIFIED 7-2000 AND 12-2001 -! -! NOTE: I DENOTES AN ARRAY CONTAINING A VERTICAL PROFILE THROUGH THE -! CANOPY WITH 0 -! (ABOVE CANOPY CONDITIONS) PLUS 1 TO NUMBER OF CANOPY LAYERS -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO - -SUBROUTINE CANOPYEB(KCANTYPE, PCANOPYCHAR, PDISTGAUSS, PSTOMATADI, & - PTAIRK0, PWS0, PTRATE, PHUMIDAIRPA0, & - PSUNQV, PSHADEQV, PSUNQN, PSHADEQN, PSUNPPFD, PSHADEPPFD, & - PSUNLEAFTK, PSHADELEAFTK, PSUNLEAFSH, PSHADELEAFSH, & - PTAIRK, PHUMIDAIRPA, PWS, & - PSUNLEAFLH, PSUNLEAFIR, PSHADELEAFLH, PSHADELEAFIR) - -IMPLICIT NONE - -! INPUTS -INTEGER, INTENT(IN) :: KCANTYPE -REAL, DIMENSION(:,:), INTENT(IN) :: PCANOPYCHAR -REAL, DIMENSION(:), INTENT(IN) :: PDISTGAUSS -REAL, INTENT(IN) :: PSTOMATADI -! -REAL, DIMENSION(:), INTENT(IN) :: PTRATE, PTAIRK0, PWS0, PHUMIDAIRPA0 -REAL, DIMENSION(:,:), INTENT(IN) :: PSUNQV, PSHADEQV, & - PSUNQN, PSHADEQN, PSUNPPFD, PSHADEPPFD - -! OUTPUTS -REAL, DIMENSION(:,:), INTENT(OUT) :: PSUNLEAFTK, PSHADELEAFTK, PSUNLEAFSH, PSHADELEAFSH -! -REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PTAIRK, PHUMIDAIRPA, PWS, & - PSUNLEAFLH, PSHADELEAFLH,& - PSUNLEAFIR, PSHADELEAFIR -! LOCAL VARIABLES -REAL :: ZLDEPTH, ZWSH -REAL, DIMENSION(SIZE(PTRATE)) :: ZTAIRK, ZHUMIDAIRPA, ZWS, & - ZSUNLEAFLH, ZSHADELEAFLH, ZSUNLEAFIR, ZSHADELEAFIR -! -REAL, DIMENSION(SIZE(PTRATE)) :: ZDELTAH, ZIRIN, ZIROUT -REAL :: ZCDEPTH, ZLWIDTH, ZLLENGTH, ZCHEIGHT, ZEPS, ZTRANSPIRETYPE -INTEGER :: JI -! -!----------------------------------------------------------------------- - -ZCDEPTH = PCANOPYCHAR(1, KCANTYPE) -!ZLWIDTH = PCANOPYCHAR(2, KCANTYPE) -ZLLENGTH = PCANOPYCHAR(3, KCANTYPE) -ZCHEIGHT = PCANOPYCHAR(4, KCANTYPE) -ZEPS = PCANOPYCHAR(10,KCANTYPE) -ZTRANSPIRETYPE = PCANOPYCHAR(11,KCANTYPE) - -WHERE ( PTAIRK0(:) >288. ) -! PA M-1 (PHUMIDITY PROFILE FOR T < 288) - ZDELTAH(:) = PCANOPYCHAR(14,KCANTYPE) / ZCHEIGHT -ELSEWHERE ( PTAIRK0(:)>278. ) - ZDELTAH(:) = ( PCANOPYCHAR(14,KCANTYPE) - ( (288.-PTAIRK0(:))/10.) * & - ( PCANOPYCHAR(14,KCANTYPE) - PCANOPYCHAR(15,KCANTYPE)) ) / ZCHEIGHT -ELSEWHERE -! PA M-1 (PHUMIDITY PROFILE FOR T <278) - ZDELTAH(:) = PCANOPYCHAR(15,KCANTYPE) / ZCHEIGHT -END WHERE - -DO JI = 1,SIZE(PDISTGAUSS) - - ZLDEPTH = ZCDEPTH * PDISTGAUSS(JI) - ZWSH = ( ZCHEIGHT - ZLDEPTH ) - ( PCANOPYCHAR(16,KCANTYPE) * ZCHEIGHT ) - - ZTAIRK (:) = PTAIRK0 (:) + (PTRATE (:) * ZLDEPTH) ! CHECK THIS - ZHUMIDAIRPA(:) = PHUMIDAIRPA0(:) + (ZDELTAH(:) * ZLDEPTH) - IF ( ZWSH.GT.1E-3 ) THEN - ZWS(:) = ( PWS0(:) * LOG(ZWSH) / LOG(ZCHEIGHT-PCANOPYCHAR(16,KCANTYPE)*ZCHEIGHT) ) - ELSE - ZWS(:) = 0.05 - END IF - - ZIRIN(:) = UNEXPOSEDLEAFIRIN(ZEPS, ZTAIRK) - - ZSUNLEAFIR(:) = 0.5 * EXPOSEDLEAFIRIN(PHUMIDAIRPA0,PTAIRK0) + 1.5*ZIRIN(:) - -! SUN - CALL LEAFEB(ZEPS, ZTRANSPIRETYPE, ZLLENGTH, PSTOMATADI, & - PSUNPPFD(:,JI), PSUNQV(:,JI)+PSUNQN(:,JI), & - ZSUNLEAFIR, ZTAIRK, ZHUMIDAIRPA, ZWS, & - PSUNLEAFTK(:,JI), PSUNLEAFSH(:,JI), ZSUNLEAFLH, & - ZIROUT ) -! - IF (PRESENT(PSUNLEAFIR)) PSUNLEAFIR(:,JI) = ZSUNLEAFIR(:) - ZIROUT(:) - -! SHADE - ZSHADELEAFIR(:) = 2. * ZIRIN(:) - - CALL LEAFEB(ZEPS, ZTRANSPIRETYPE, ZLLENGTH, PSTOMATADI, & - PSHADEPPFD(:,JI), PSHADEQV(:,JI)+PSHADEQN(:,JI), & - ZSHADELEAFIR, ZTAIRK, ZHUMIDAIRPA, ZWS, & - PSHADELEAFTK(:,JI), PSHADELEAFSH(:,JI), ZSHADELEAFLH, & - ZIROUT ) -! - IF (PRESENT(PSHADELEAFIR)) PSHADELEAFIR(:,JI) = ZSHADELEAFIR(:) - ZIROUT(:) - - IF (PRESENT(PTAIRK)) PTAIRK (:,JI) = ZTAIRK (:) - IF (PRESENT(PHUMIDAIRPA)) PHUMIDAIRPA (:,JI) = ZHUMIDAIRPA (:) - IF (PRESENT(PWS)) PWS (:,JI) = ZWS (:) - IF (PRESENT(PSUNLEAFLH)) PSUNLEAFLH (:,JI) = ZSUNLEAFLH (:) - IF (PRESENT(PSHADELEAFLH)) PSHADELEAFLH(:,JI) = ZSHADELEAFLH(:) - -ENDDO -! -END SUBROUTINE CANOPYEB - -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO -! -! SUBROUTINE LEAFEB -! -! LEAF ENERGY BALANCE -! -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO - -SUBROUTINE LEAFEB(PEPS, PTRANSPIRETYPE, PLLENGTH, PSTOMATADI, & - PPFD, PQ, PIRIN, PTAIRK, PHUMIDAIRPA, PWS, & - PTLEAF, PSH, PLH, PIROUT) - -IMPLICIT NONE - -REAL, INTENT(IN) :: PEPS, PTRANSPIRETYPE, PLLENGTH, PSTOMATADI -REAL, DIMENSION(:), INTENT(IN) :: PPFD, PQ, PIRIN, PTAIRK, PHUMIDAIRPA, PWS -REAL, DIMENSION(:), INTENT(OUT) :: PTLEAF, PSH, PLH, PIROUT - -! LOCAL VARIABLES -REAL, DIMENSION(SIZE(PPFD)) :: ZHUMIDAIRKGM3, ZGHFORCED, ZSTOMRES, ZIROUTAIRT, ZLATHV, & - ZLHAIRT, ZTDELT, ZBALANCE, ZGH1, ZSH1, ZLH1, ZE1, ZIROUT1, ZGH, & - ZTAIRK, ZVAPDEFICIT -INTEGER :: JI -!---------------------------------------------------- - -! AIR VAPOR DENSITY KG M-3 -ZHUMIDAIRKGM3(:) = CONVERTHUMIDITYPA2KGM3(PHUMIDAIRPA, PTAIRK) - -! LATENT HEAT OF VAPORIZATION (J KG-1) -ZLATHV(:) = LHV(PTAIRK) -! -! HEAT CONVECTION COEFFICIENT (W M-2 K-1) FOR FORCED CONVECTION. -! NOBEL PAGE 366 -ZGHFORCED(:) = 0.0259 / (0.004 * ((PLLENGTH / PWS(:))**0.5)) -! -! STOMATAL RESISTENCE S M-1 -ZSTOMRES (:) = RESSC(PSTOMATADI, PPFD) -! -! LATENT HEAT FLUX -ZVAPDEFICIT(:) = SVDTK(PTAIRK(:)) - ZHUMIDAIRKGM3(:) -ZLHAIRT(:) = LEAFLE(PTRANSPIRETYPE, ZVAPDEFICIT, ZLATHV, ZGHFORCED, ZSTOMRES) -! -ZIROUTAIRT(:) = LEAFIROUT(PEPS, PTAIRK) -ZE1(:) = (PQ(:) + PIRIN(:) - ZIROUTAIRT(:) - ZLHAIRT(:)) -WHERE ( ZE1(:).EQ.0. ) ZE1(:) = -1. -! -ZTDELT (:) = 1. -ZBALANCE(:) = 10. -DO JI = 1, 10 - ! - WHERE ( ABS(ZBALANCE(:))>2. ) - ! - ZTAIRK (:) = PTAIRK(:) + ZTDELT(:) - ! - ! LATENT HEAT OF VAPORIZATION (J KG-1) - ZLATHV(:) = LHV(ZTAIRK) - ! BOUNDARY LAYER CONDUCTANCE - ZGH1 (:) = LEAFBLC(PLLENGTH, ZGHFORCED, ZTDELT) - ! - ZVAPDEFICIT(:) = SVDTK(ZTAIRK(:)) - ZHUMIDAIRKGM3(:) - PLH (:) = LEAFLE(PTRANSPIRETYPE, ZVAPDEFICIT, ZLATHV, ZGH1, ZSTOMRES) - ! - PIROUT (:) = LEAFIROUT(PEPS, PTAIRK+ZTDELT) - ZIROUT1(:) = PIROUT(:) - ZIROUTAIRT(:) - ! - ! CONVECTIVE HEAT FLUX - ZSH1(:) = LEAFH(ZTDELT, ZGH1) - ZLH1(:) = PLH(:) - ZLHAIRT(:) - ! - ZTDELT (:) = ZE1(:) / ((ZSH1(:) + ZLH1(:) + ZIROUT1(:)) / ZTDELT(:)) - ZBALANCE(:) = PQ(:) + PIRIN(:) - PIROUT(:) - ZSH1(:) - PLH(:) - END WHERE - ! - IF (ALL(ZBALANCE(:)<=2.)) EXIT - ! -ENDDO -! -ZTDELT(:) = MAX(-10.,MIN(ZTDELT(:),10.)) -! -PTLEAF(:) = PTAIRK(:) + ZTDELT(:) -! -ZGH(:) = LEAFBLC(PLLENGTH, ZGHFORCED, ZTDELT) -PSH(:) = LEAFH (ZTDELT, ZGH) -! -ZVAPDEFICIT(:) = SVDTK(PTLEAF(:)) - ZHUMIDAIRKGM3(:) -PLH(:) = LEAFLE (PTRANSPIRETYPE, ZVAPDEFICIT, ZLATHV, ZGH, ZSTOMRES) -PIROUT(:) = LEAFIROUT(PEPS, PTLEAF) -! -END SUBROUTINE LEAFEB - -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO -! -! FUNCTION DISTOMATA -! -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO - -FUNCTION DISTOMATA(PDI) RESULT(PDISTOMATA) - -IMPLICIT NONE - -REAL, INTENT(IN) :: PDI -REAL :: PDISTOMATA -INTEGER :: JJ -! > -.5 INCIPIENT, MILD OR NO DROUGHT; < -4 EXTREME DROUGHT -!-------------------------------------------------------------------- - -IF ( PDI>XDIHIGH ) THEN - PDISTOMATA = 1. ! NO DROUGHT -ELSEIF ( PDI>XDILOW ) THEN - ! INTERPOLATE - PDISTOMATA = 1. - (0.9 * ((PDI - XDIHIGH) / (XDILOW - XDIHIGH))) -ELSE - PDISTOMATA = 0. ! MAXIMUM DROUGHT, MAXIMUM STOMATAL RESISTANCE -ENDIF - -END FUNCTION DISTOMATA - -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO -! -! FUNCTION CALCECCENTRICITY -! -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO - -FUNCTION CALCECCENTRICITY(KDAY) RESULT(PCALCECCENTRICITY) - -IMPLICIT NONE - -INTEGER, DIMENSION(:), INTENT(IN) :: KDAY -! -REAL, DIMENSION(SIZE(KDAY)) :: PCALCECCENTRICITY -! -!-------------------------------------------------------------------- - -PCALCECCENTRICITY(:) = 1. + 0.033 * COS(2*3.14*(KDAY(:)-10)/365) - -END FUNCTION CALCECCENTRICITY - -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO -! -! FUNCTION UNEXPOSEDLEAFIRIN -! -! CALCULATE IR INTO LEAF THAT IS NOT EXPOSED TO THE SKY -! -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO - -FUNCTION UNEXPOSEDLEAFIRIN(PEPS, PTK) RESULT(PUNEXPOSEDLEAFIRIN) - -IMPLICIT NONE - -REAL, INTENT(IN) :: PEPS -REAL, DIMENSION(:), INTENT(IN) :: PTK -REAL, DIMENSION(SIZE(PTK)) :: PUNEXPOSEDLEAFIRIN -!-------------------------------------------------------------------- - -PUNEXPOSEDLEAFIRIN(:) = PEPS * XSB * (PTK(:)**4.) - -END FUNCTION UNEXPOSEDLEAFIRIN - -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO -! -! FUNCTION EXPOSEDLEAFIRIN -! -! CALCULATE IR INTO LEAF THAT IS EXPOSED TO THE SKY -! -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO - -FUNCTION EXPOSEDLEAFIRIN(PHUMIDPA, PTK) RESULT(PEXPOSEDLEAFIRIN) - -IMPLICIT NONE - -REAL, DIMENSION(:), INTENT(IN) :: PTK, PHUMIDPA -REAL, DIMENSION(SIZE(PTK)) :: PEXPOSEDLEAFIRIN -REAL :: ZEMISSATM -INTEGER :: JJ -!-------------------------------------------------------------------- - -! APPARENT ATMOSPHERIC EMISSIVITY FOR CLEAR SKIES: -! FUNCTION OF WATER VAPOR PRESSURE (PA) -! AND AMBIENT TEMPERATURE (K) BASED ON BRUTSAERT(1975) -! REFERENCED IN LEUNING (1997) - -DO JJ = 1,SIZE(PTK) - ZEMISSATM = 0.642 * (PHUMIDPA(JJ) / PTK(JJ))**(1./7.) - PEXPOSEDLEAFIRIN(JJ) = ZEMISSATM * XSB * (PTK(JJ)**4.) -ENDDO - -END FUNCTION EXPOSEDLEAFIRIN - -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO -! -! FUNCTION WATERVAPPRES -! -! CONVERT WATER MIXING RATIO (KG/KG) TO WATER VAPOR PRESSURE -! (PA OR KPA DEPENDING ON UNITS OF INPUT ) -! MIXING RATIO (KG/KG), TEMP (C), PRESSURE (KPA) -! -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO - -FUNCTION WATERVAPPRES(PWATERAIRRATIO, PDENS, PRES) RESULT(PWATERVAPPRES) - -IMPLICIT NONE - -REAL, INTENT(IN) :: PWATERAIRRATIO -REAL, DIMENSION(:), INTENT(IN) :: PDENS, PRES -REAL, DIMENSION(SIZE(PDENS)) :: PWATERVAPPRES -!-------------------------------------------------------------------- - -PWATERVAPPRES(:) = (PDENS(:) / (PDENS(:) + PWATERAIRRATIO)) * PRES(:) - -END FUNCTION WATERVAPPRES - -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO -! -! FUNCTION STABILITY -! -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO - -FUNCTION STABILITY(PCANOPYCHAR, KCANTYPE, PSOLAR) RESULT(PSTABILITY) - -IMPLICIT NONE -! -REAL, DIMENSION(:,:), INTENT(IN) :: PCANOPYCHAR -INTEGER, INTENT(IN) :: KCANTYPE -REAL, DIMENSION(:), INTENT(IN) :: PSOLAR -REAL, DIMENSION(SIZE(PSOLAR)) :: PSTABILITY -REAL :: ZTRATEBOUNDARY -INTEGER :: JJ -!-------------------------------------------------------------------- - -ZTRATEBOUNDARY = 500 - -DO JJ = 1,SIZE(PSOLAR) - IF ( PSOLAR(JJ)>ZTRATEBOUNDARY ) THEN - ! DAYTIME TEMPERATURE LAPSE RATE - PSTABILITY(JJ) = PCANOPYCHAR(12,KCANTYPE) - ELSEIF ( PSOLAR(JJ)>0. ) THEN - PSTABILITY(JJ) = PCANOPYCHAR(12,KCANTYPE) - & - ( (ZTRATEBOUNDARY - PSOLAR(JJ)) / ZTRATEBOUNDARY ) * & - (PCANOPYCHAR(12,KCANTYPE) - PCANOPYCHAR(13,KCANTYPE)) - ELSE - ! NIGHTIME TEMPERATURE LAPSE RATE - PSTABILITY = PCANOPYCHAR(13,KCANTYPE) - ENDIF -ENDDO - -END FUNCTION STABILITY - -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO -! -! FUNCTION CONVERTHUMIDITYPA2KGM3 -! -! SATURATION VAPOR DENSITY (KG/M3) -! -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO - -FUNCTION CONVERTHUMIDITYPA2KGM3(PA, PTK) RESULT(PCONVERTHUMIDITYPA2KGM3) - -IMPLICIT NONE - -REAL, DIMENSION(:), INTENT(IN) :: PA, PTK -REAL, DIMENSION(SIZE(PA)) :: PCONVERTHUMIDITYPA2KGM3 -!-------------------------------------------------------------------- - -PCONVERTHUMIDITYPA2KGM3(:) = 0.002165 * PA(:) / PTK(:) - -END FUNCTION CONVERTHUMIDITYPA2KGM3 - -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO -! -! FUNCTION RESSC -! -! LEAF STOMATAL COND. RESISTANCE S M-1 -! -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO - -FUNCTION RESSC(PSTOMATADI, PAR) RESULT(PRESSC) - -IMPLICIT NONE - -REAL, INTENT(IN) :: PSTOMATADI -REAL, DIMENSION(:), INTENT(IN) :: PAR -REAL, DIMENSION(SIZE(PAR)) :: PRESSC -REAL, DIMENSION(SIZE(PAR)) :: ZSCADJ -INTEGER :: JJ -!-------------------------------------------------------------------- - -ZSCADJ(:) = PSTOMATADI * & - ( (0.0027*1.066*PAR(:)) / ((1 + 0.0027*0.0027*PAR(:)**2.)**0.5) ) -! -WHERE (ZSCADJ(:)<0.1) - PRESSC(:) = 2000. -ELSE WHERE - PRESSC(:) = 200./ZSCADJ(:) -END WHERE - -END FUNCTION RESSC - -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO -! -! FUNCTION LEAFIROUT -! -! IR THERMAL RADIATION ENERGY OUTPUT BY LEAF -! -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO - -FUNCTION LEAFIROUT(PEPS, PTLEAF) RESULT(PLEAFIROUT) - -IMPLICIT NONE - -REAL, INTENT(IN) :: PEPS -REAL, DIMENSION(:), INTENT(IN) :: PTLEAF -REAL, DIMENSION(SIZE(PTLEAF)) :: PLEAFIROUT -!-------------------------------------------------------------------- - -! PRINT*,'EPS, SB, TLEAF =', EPS, SB, TLEAF -PLEAFIROUT(:) = PEPS * XSB * (2 * (PTLEAF(:)**4.)) - -END FUNCTION LEAFIROUT - -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO -! -! FUNCTION LHV -! -! LATENT HEAT OF VAPORIZATION(J KG-1) FROM STULL P641 -! -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO - -FUNCTION LHV(PTK) RESULT(PLHV) - -IMPLICIT NONE - -REAL, DIMENSION(:), INTENT(IN) :: PTK -REAL, DIMENSION(SIZE(PTK)) :: PLHV -!-------------------------------------------------------------------- - -PLHV(:) = 2501000. - (2370. * (PTK(:) - 273.)) - -END FUNCTION LHV - -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO -! -! FUNCTION LEAFLE -! -! LATENT ENERGY TERM IN ENERGY BALANCE -! -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO - -FUNCTION LEAFLE(PTRANSPIRETYPE, PVAPDEFICIT, PLATHV, PGH, PSTOMRES) RESULT(PLEAFLE) - -IMPLICIT NONE - -REAL, INTENT(IN) :: PTRANSPIRETYPE -REAL, DIMENSION(:), INTENT(IN) :: PVAPDEFICIT, PLATHV, PGH, PSTOMRES -REAL, DIMENSION(SIZE(PLATHV)) :: PLEAFLE -REAL, DIMENSION(SIZE(PLATHV)) :: ZLEAFRES -!INTEGER :: JJ -!-------------------------------------------------------------------- - -ZLEAFRES(:) = (1. / (1.075 * (PGH(:) / 1231.))) + PSTOMRES(:) - -! LATENT HEAT OF VAP (J KG-1) * VAP DEFICIT(KG M-3) / -! LEAF RESISTENCE (S M-1) -PLEAFLE(:) = PTRANSPIRETYPE * (1./ZLEAFRES(:)) * PLATHV(:) * PVAPDEFICIT(:) -! -PLEAFLE(:) = MAX(PLEAFLE(:),0.) -! -END FUNCTION LEAFLE - -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO -! -! FUNCTION LEAFBLC -! -! BOUNDARY LAYER CONDUCTANCE -! -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO - -FUNCTION LEAFBLC(PLLENGTH, PGHFORCED, PTDELTA) RESULT(PLEAFBLC) - -IMPLICIT NONE - -REAL, INTENT(IN) :: PLLENGTH -REAL, DIMENSION(:), INTENT(IN) :: PGHFORCED, PTDELTA -REAL, DIMENSION(SIZE(PTDELTA)) :: PLEAFBLC -REAL, DIMENSION(SIZE(PTDELTA)) :: ZGHFREE -REAL :: ZLLENGTH3 -INTEGER :: JJ -!-------------------------------------------------------------------- - -! THIS IS BASED ON LEUNING 1995 P.1198 EXCEPT USING MOLECULAR -! CONDUCTIVITY (.00253 W M-1 K-1 STULL P 640) INSTEAD OF MOLECULAR -! DIFFUSIVITY SO THAT YOU END UP WITH A HEAT CONVECTION COEFFICIENT -! (W M-2 K-1) INSTEAD OF A CONDUCTANCE FOR FREE CONVECTION -! -ZLLENGTH3 = PLLENGTH**3 -! -WHERE (PTDELTA(:)>=0.) - ZGHFREE (:) = 0.5 * 0.00253 * ((160000000. * PTDELTA(:) / (ZLLENGTH3))**0.25) / PLLENGTH - PLEAFBLC(:) = PGHFORCED(:) + ZGHFREE(:) -ELSE WHERE - PLEAFBLC(:) = PGHFORCED(:) -END WHERE -! -END FUNCTION LEAFBLC - -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO -! -! FUNCTION LEAFH -! -! CONVECTIVE ENERGY TERM IN ENERGY BALANCE (W M-2 HEAT FLUX FROM -! BOTH SIDES OF LEAF) -! -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO - -FUNCTION LEAFH(PTDELTA, PGH) RESULT(PLEAFH) - -IMPLICIT NONE - -REAL, DIMENSION(:), INTENT(IN) :: PTDELTA, PGH -REAL, DIMENSION(SIZE(PGH)) :: PLEAFH -!-------------------------------------------------------------------- - -! 2 SIDES X CONDUCTANCE X TEMPERATURE GRADIENT -PLEAFH(:) = 2. * PGH(:) * PTDELTA(:) - -END FUNCTION LEAFH - -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO -! -! FUNCTION SVDTK -! -! SATURATION VAPOR DENSITY (KG/M3) -! -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO - -FUNCTION SVDTK(PTK) RESULT(PSVDTK) - -IMPLICIT NONE - -REAL, DIMENSION(:), INTENT(IN) :: PTK -REAL, DIMENSION(SIZE(PTK)) :: PSVDTK -REAL, DIMENSION(SIZE(PTK)) :: ZSVP -INTEGER :: JJ -!-------------------------------------------------------------------- - -! SATURATION VAPOR PRESSURE (MILLIBARS) -ZSVP (:) = 10.**((-2937.4 / PTK(:)) - (4.9283 * LOG10(PTK(:))) + 23.5518) -PSVDTK(:) = 0.2165 * ZSVP(:) / PTK(:) - -END FUNCTION SVDTK - -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO -! -! FUNCTION EA1T99 -! -! TEMPERATURE DEPENDENCE ACTIVITY FACTOR FOR EMISSION TYPE 1 -! (E.G. ISOPRENE, MBO) -! -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO - -FUNCTION EA1T99(HSPC_NAME, PT24, PT240, PT1) RESULT(PEA1T99) - -USE MODI_INDEX1 - -IMPLICIT NONE - -CHARACTER(LEN=16),INTENT(IN) :: HSPC_NAME -REAL, DIMENSION(:), INTENT(IN) :: PT1, PT24, PT240 -REAL, DIMENSION(SIZE(PT1)) :: PEA1T99 -REAL :: ZTOPT, ZX, ZEOPT -INTEGER :: ISPCNUM -INTEGER :: JJ -!-------------------------------------------------------------------- - -ISPCNUM = INDEX1(HSPC_NAME, CMGN_SPC) -! -DO JJ = 1,SIZE(PT1) - IF ( PT1(JJ)<260. ) THEN - PEA1T99(JJ) = 0. - ELSE - ! ENERGY OF ACTIVATION AND DEACTIVATION - ! TEMPERATURE AT WHICH MAXIMUM EMISSION OCCURS - ZTOPT = 312.5 + 0.6 * (PT240(JJ) - 297) - ZX = ((1 / ZTOPT) - (1 / PT1(JJ))) / 0.00831 - - ! MAXIMUM EMISSION (RELATIVE TO EMISSION AT 30 C) - ZEOPT = XCLEO(ISPCNUM) * EXP(0.05 * (PT24(JJ) - 297)) * EXP(0.05*(PT240(JJ)-297)) - - PEA1T99(JJ) = ZEOPT * XCTM2 * EXP(XCTM1(ISPCNUM)*ZX) / & - (XCTM2 - XCTM1(ISPCNUM) * (1.-EXP(XCTM2*ZX))) - ENDIF - -ENDDO - -END FUNCTION EA1T99 - -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO -! -! FUNCTION EA1PP -! -! PSTD = 200 FOR SUN LEAVES AND 50 FOR SHADE LEAVES -! -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO - -FUNCTION EA1P99(PSTD, PPFD24, PPFD240, PPFD1) RESULT(PEA1P99) - -IMPLICIT NONE - -REAL, INTENT(IN) :: PSTD -REAL, DIMENSION(:), INTENT(IN) :: PPFD1, PPFD24, PPFD240 -REAL, DIMENSION(SIZE(PPFD1)) :: PEA1P99 -REAL :: ZALPHA, ZC1 -INTEGER :: JJ -!-------------------------------------------------------------------- - -DO JJ = 1,SIZE(PPFD1) - - IF ( PPFD240(JJ)<0.01 ) THEN - PEA1P99(JJ) = 0. - ELSE - ZALPHA = 0.004 - 0.0005 * LOG(PPFD240(JJ)) - ZC1 = 0.0468 * EXP(0.0005 * (PPFD24(JJ) - PSTD)) * (PPFD240(JJ)**0.6) - PEA1P99(JJ) = (ZALPHA * ZC1 * PPFD1(JJ)) / ((1 + ZALPHA**2. * PPFD1(JJ)**2.)**0.5) - ENDIF - -ENDDO - -END FUNCTION EA1P99 - -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO -! -! FUNCTION EALTI99 -! -! CALCULATE LIGHT INDEPENT ALGORITHMS -! CODED BY XUEMEI WANG 05 NOV. 2007 -!-- GAMMA_TLI = EXP[BETA*(T-TS)] -! WHERE BETA = TEMPERATURE DEPENDENT PARAMETER -! TS = STANDARD TEMPERATURE (NORMALLY 303K, 30C) -! -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO - -FUNCTION EALTI99(HSPCNAM, PTEMP) RESULT(PEALTI99) - -USE MODI_INDEX1 - -IMPLICIT NONE - -CHARACTER(LEN=16), INTENT(IN) :: HSPCNAM -REAL, DIMENSION(:), INTENT(IN) :: PTEMP -REAL, DIMENSION(SIZE(PTEMP)) :: PEALTI99 -! -INTEGER :: ISPCNUM ! SPECIES NUMBER -!-------------------------------------------------------------------- -ISPCNUM = INDEX1(HSPCNAM, CMGN_SPC) -PEALTI99(:) = EXP( XTDF_PRM(ISPCNUM)*(PTEMP(:)-XTS) ) - -END FUNCTION EALTI99 -! -!OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO -! -END MODULE MODE_MEGAN diff --git a/src/LIB/MEGAN/mode_soilnox.F90 b/src/LIB/MEGAN/mode_soilnox.F90 deleted file mode 100644 index 226c006ed14dab07e4bf37eb1b082fbad8af78a9..0000000000000000000000000000000000000000 --- a/src/LIB/MEGAN/mode_soilnox.F90 +++ /dev/null @@ -1,255 +0,0 @@ -!======================================================================= -! 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 deleted file mode 100644 index 0435a01a2abbfc76b6a444a38a6f7c24aa944d0d..0000000000000000000000000000000000000000 --- a/src/LIB/MEGAN/soilnox.F90 +++ /dev/null @@ -1,172 +0,0 @@ -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 deleted file mode 100644 index 60ac5815a77412f157755f1eecc136f637afc73b..0000000000000000000000000000000000000000 --- a/src/LIB/MEGAN/solarangle.F90 +++ /dev/null @@ -1,56 +0,0 @@ -!----------------------------------------------------------------------- -! 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/LIB/megan.tar.gz b/src/LIB/megan.tar.gz deleted file mode 100644 index c9f186360fd3c305db25d9c72af24cca87988203..0000000000000000000000000000000000000000 --- a/src/LIB/megan.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0d9386c64cbbdf2ffe32f1c52e51e2606869e136a95a65e21f8081961f8e48d3 -size 42865 diff --git a/src/configure b/src/configure index 1b807d8b8baf74b59e35cef94237a09a06bd0ee1..348092bcedb6e841ea16a41b21f4488f56c579ad 100755 --- a/src/configure +++ b/src/configure @@ -551,12 +551,6 @@ if [ "x${VER_OASIS}" == "xOASISAUTO" ] ; then ( cd $LOCAL/src/LIB ; [ ! -d oasis3-${VERSION_OASIS} ] && tar xvfz oasis3-${VERSION_OASIS}.tar.gz ; [ ! -d toy_${VERSION_TOY} ] && tar xvfz toy_${VERSION_TOY}.tar.gz ) fi # -# Install MEGAN if MNH_MEGAN=1 -# -if [ "x${MNH_MEGAN}" == "x1" ] ; then -( cd $LOCAL/src/LIB ; [ ! -d MEGAN ] && tar xvfz megan.tar.gz ) -fi -# # Install GRIBAPI or ecCodes # if [ "x${MNH_GRIBAPI}" == "xyes" ] ; then