From 5c33cec5d029b1256b030bf83ae424ba79e75384 Mon Sep 17 00:00:00 2001
From: Quentin Rodier <quentin.rodier@meteo.fr>
Date: Wed, 17 Aug 2022 17:05:59 +0200
Subject: [PATCH] Quentin 17/08/2022: add old MEGAN files contained in the old
 megan.tar.gz (begin of history)

---
 src/LIB/MEGAN/.arbre2.txt.swp    |  Bin 0 -> 12288 bytes
 src/LIB/MEGAN/emproc.F90         |  284 +++++++
 src/LIB/MEGAN/index1.F90         |  104 +++
 src/LIB/MEGAN/init_mgn2mech.F90  |  208 +++++
 src/LIB/MEGAN/julian.F90         |   92 +++
 src/LIB/MEGAN/mgn2mech.F90       |  315 ++++++++
 src/LIB/MEGAN/modd_megan.F90     |  145 ++++
 src/LIB/MEGAN/modd_mgn2mech.F90  | 1275 ++++++++++++++++++++++++++++++
 src/LIB/MEGAN/mode_gamma_etc.F90 |  553 +++++++++++++
 src/LIB/MEGAN/mode_megan.F90     | 1220 ++++++++++++++++++++++++++++
 src/LIB/MEGAN/mode_soilnox.F90   |  255 ++++++
 src/LIB/MEGAN/soilnox.F90        |  172 ++++
 src/LIB/MEGAN/solarangle.F90     |   56 ++
 13 files changed, 4679 insertions(+)
 create mode 100644 src/LIB/MEGAN/.arbre2.txt.swp
 create mode 100644 src/LIB/MEGAN/emproc.F90
 create mode 100644 src/LIB/MEGAN/index1.F90
 create mode 100644 src/LIB/MEGAN/init_mgn2mech.F90
 create mode 100644 src/LIB/MEGAN/julian.F90
 create mode 100644 src/LIB/MEGAN/mgn2mech.F90
 create mode 100644 src/LIB/MEGAN/modd_megan.F90
 create mode 100644 src/LIB/MEGAN/modd_mgn2mech.F90
 create mode 100644 src/LIB/MEGAN/mode_gamma_etc.F90
 create mode 100644 src/LIB/MEGAN/mode_megan.F90
 create mode 100644 src/LIB/MEGAN/mode_soilnox.F90
 create mode 100644 src/LIB/MEGAN/soilnox.F90
 create mode 100644 src/LIB/MEGAN/solarangle.F90

diff --git a/src/LIB/MEGAN/.arbre2.txt.swp b/src/LIB/MEGAN/.arbre2.txt.swp
new file mode 100644
index 0000000000000000000000000000000000000000..53891c1f3841e8264bd204ddb71f260ba22e4442
GIT binary patch
literal 12288
zcmeI1O=}ZT6oyZ`uS#9&;;M)nP0|R(1`z^{C6Y|RkRWct&EzJI&KEOxV1!b4qPuSV
z4+h0Qk(Ix}t-8~tYtP)7eAQ69Ro;O&H#g_JXU=)<WDzo`^qOsPuT&wvE)h*`ojg6E
z*PEjwqLGY(B+UY6Uv3&F(P;PVB#s{E1<ReDRn8nLE$b-pUzFp>F1H&8b*p%l(I8UQ
zl1}wsYa#&zK;XOtw&-qk$9&aqT)!qRZ+FjYL>>r$00@8p2!H?xfB*=9z<)qMha2>Y
z=h!S}*)G<NQ){us0s<fa0w4eaAOHd&00JNY0w4eaAn*?okVB%ITSRYJ+5i8u-~YcZ
z5`AHPWPM;ItX<a63q(Iy-&yZiJ=Rs$71lSd@s;(N^@)|$e8a*80w4eaAOHd&00JNY
z0w4eaAh1Nh@g3dw#(vdP_A_z+&I7UXNokbsRcIwX+vFkTg;8La9`03)x!4*P#ew7c
zL7D|?LWZGorxOv%NSrd|c}|*FBrh1MzNg00&z*^OTqj<!ntR#O55kv4X5MG!981rW
zeWguPHL=D$?{<;8u+N(@U9Y&8<`GJZIf&WtGi!fTjM6^bZ`1@))7o!5*;zBqti)|$
zhMxCR><xtCP=+d{&S9(mxNaS^8tZEPF}!icfh!~Fk6lHNx~*p2TD2;3Am;AN<7E%R
z^Tc(ePuY14=Z{G4)^gw~nWVyXrjuA??^GO4-`grK(ig{P2Y#%juQ|j#x~)csk^BZd
C%LSVN

literal 0
HcmV?d00001

diff --git a/src/LIB/MEGAN/emproc.F90 b/src/LIB/MEGAN/emproc.F90
new file mode 100644
index 000000000..508a9265c
--- /dev/null
+++ b/src/LIB/MEGAN/emproc.F90
@@ -0,0 +1,284 @@
+
+SUBROUTINE EMPROC(KTIME, KDATE, PPFD_D, PTEMP_D, 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
+!         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, INTENT(IN) :: PTEMP_D  !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    ! 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 = PPFD_D
+
+!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)
+
+  CALL GAMMA_A(KDATE, KTIME, NTSTLEN, YVNAME3D(JS), PTEMP_D, PLAIP, PLAIC, 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
+  ENDDO   ! ENDDO I_PFT
+
+  DO I_PFT = 1,N_MGN_PFT  !CANOPY TYPES
+
+    CALL GAMME_CE(KDATE, KTIME, XCANOPYCHAR, I_PFT, YVNAME3D(JS), &
+                  ZPFD_D, ZPFD_D, PTEMP_D, PTEMP_D, 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_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
+
+  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
+  ENDWHERE
+
+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
new file mode 100644
index 000000000..68e48b717
--- /dev/null
+++ b/src/LIB/MEGAN/index1.F90
@@ -0,0 +1,104 @@
+FUNCTION INDEX1 (HNAME, HLIST) RESULT(KINDEX1)
+
+!***********************************************************************
+! Version "$Id: index1.f 45 2014-09-12 20:05:29Z coats $"
+! EDSS/Models-3 I/O API.
+! Copyright (C) 1992-2002 MCNC and Carlie J. Coats, Jr., and
+! (C) 2003-2010 Baron Advanced Meteorological Systems, LLC.
+! Distributed under the GNU LESSER GENERAL PUBLIC LICENSE version 2.1
+! See file "LGPL.txt" for conditions of use.
+!.........................................................................
+!  INDEX1    subroutine body starts at line 53
+!  INDEXINT1 subroutine body starts at line 99
+!
+!  FUNCTION:
+!
+!       Search for character-string or integer key NAME or IKEY in list NLIST
+!       and return the subscript (1...N) at which it is found, or return 0
+!       when not found in NLIST
+!
+!  PRECONDITIONS REQUIRED:
+!       none
+!
+!  SUBROUTINES AND FUNCTIONS CALLED:
+!       none
+!
+!  REVISION HISTORY:
+!    INDEX1:
+!       5/1988   Modified for ROMNET
+!       9/1994   Modified for Models-3 by CJC
+!    INDEXINT1:
+!       Prototype 11/2004 by CJC:  MODULE M3UTILIO for I/O API v3
+!       Modified   3/2006 by CJC:  moved INDEXINT1() to file "index1.f"
+!
+!       Modified  03/2010 by CJC: F9x changes for I/O API v3.1
+!***********************************************************************
+
+IMPLICIT NONE
+
+!.......   Arguments and their descriptions:
+
+CHARACTER(LEN=*), INTENT(IN) :: HNAME      !  Character string being searched for
+CHARACTER(LEN=*), DIMENSION(:), INTENT(IN) :: HLIST  !  array to be searched
+INTEGER :: KINDEX1
+
+!.......   Local variable:
+
+INTEGER :: JI   !  loop counter
+
+!.....................................................................
+!.......   begin body of INDEX1()
+
+KINDEX1 = 0
+!
+DO JI = 1, SIZE(HLIST)
+  IF ( HNAME.EQ.HLIST(JI) ) THEN    ! Found NAME in NLIST
+    KINDEX1 = JI
+    EXIT
+  ENDIF
+END DO
+
+END FUNCTION INDEX1
+
+! --=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+
+!FUNCTION INDEXINT1(KEY, KEYLIST ) RESULT(KINDEXINT1)
+!
+!!-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+!!  Look up integer key IKEY in unsorted list <NLIST,KEYLIST>
+!!  of integer keys.  Return the subscript at which IKEY
+!!  occurs, or 0 in case of failure
+!!
+!!  PRECONDITIONS REQUIRED:
+!!      none
+!!
+!!  REVISION  HISTORY:
+!!      Prototype  11/2004 by CJC
+!!-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+!
+!IMPLICIT NONE
+!
+!!!........  Arguments:
+! 
+!INTEGER, INTENT(IN) :: KEY
+!INTEGER, DIMENSION(:), INTENT(IN) :: KEYLIST
+!
+!INTEGER :: KINDEXINT1
+!
+!!!........  Local Variables:
+!
+!INTEGER :: JI
+!
+!!!........  begin body ........................................
+!
+!KINDEXINT1 = 0
+!
+!DO JI = 1, SIZE(KEYLIST)
+!  IF ( KEY .EQ. KEYLIST(JI) ) THEN
+!    KINDEXINT1 = JI
+!    EXIT
+!  END IF
+!END DO
+!
+!END FUNCTION INDEXINT1
diff --git a/src/LIB/MEGAN/init_mgn2mech.F90 b/src/LIB/MEGAN/init_mgn2mech.F90
new file mode 100644
index 000000000..8e1bd59bc
--- /dev/null
+++ b/src/LIB/MEGAN/init_mgn2mech.F90
@@ -0,0 +1,208 @@
+!!   ###############################
+SUBROUTINE INIT_MGN2MECH(HMECHANISM, OCONVERSION, HVNAME3D, HMECH_SPC, &
+                         KSPMH_MAP, KMECH_MAP, PCONV_FAC, PMECH_MWT,   &
+                         KVARS3D, K_SCON_SPC)
+!!
+!!***  *BVOCEM*
+!! 
+!!    PURPOSE
+!!    -------
+!!    CALCULATE THE BIOGENIC EMISSION FLUXES UPON THE MEGAN CODE
+!!    HTTP://LAR.WSU.EDU/MEGAN/
+!!
+!!    METHOD
+!!    ------
+!!
+!!
+!!    AUTHOR
+!!    ------
+!   ORIGINALLY CREATED BY JACK CHEN 11/04 FOR MEGAN V.0
+!   FOR MEGAN V2.0 CREATED BY TAN 12/01/06
+!   FOR MEGAN V2.1 CREATED BY XUEMEI WANG 11/04/07
+!   FOR MEGAN V2.1 TO USE 150 SPECIES CREATED BY XUEMEI WANG 09/30/09
+!
+!  HISTORY:
+!  08/14/07 TAN    - MOVE TO MEGANV2.02 WITH NO UPDATE
+!  08/29/07 MODIFIED BY A. GUENTHER TO CORRECT ERROR IN ASSIGNING
+!           EMISSION FACTOR. THIS VERSION IS CALLED MEGANV2.03
+!  10/29/07 MODIFIED BY A. GUENTHER TO CORRECT OMISSION OF DIURNAL VARIATION
+!           FACTOR. THIS VERSION IS CALLED MEGANV2.04
+!  11/04/07 MODIFIED BY XUEMEI WANG TO GIVE TWO OPTIONS FOR MAP OR LOOKUP TABLE FOR
+!           THE EMISSION FACTORS. ALSO GIVES OPTIONS FOR DIFFERENT CHEMICAL MECHANISMS
+!           IN THE CODE: USER MODIFIES THE EXTERNAL SCRIPT TO ASSIGN MECHANISM.
+!           THIS VERSION IS CALLED MEGANV2.1.0
+!  06/04/08 MODIFIED BY J. LEE-TAYLOR TO ACCEPT VEGETATION-DEPENDENT SPECIATION FACTORS
+!           IN TABLE FORMAT (RESHAPE TABLES) RATHER THAN FROM DATA STATEMENTS.
+!  09/30/08  MODIFIED BY XUEMEI WANG TO GIVE OPTIONS FOR INPUT FILE AND TEST DIFFERENT MECHANISMS
+!  09/27/11  TAN&XUEMEI MEGANV2.10 INCLUDES SOIL NOX ADJUSTMENT AND A LOT OF UPDATES
+!  20/12/14  P. TULET - ON-LINE COUPLING IN THE ISBA/SURFEX SCHEME. ALL INIT VARIABLES HAS BEEN
+!            MOVED IN INIT_MEGANN.F90.
+!!    
+!!    MODIFICATIONS
+!!    -------------
+!!    ORIGINAL: 25/10/14
+!!
+!!
+!!    EXTERNAL
+!!    --------
+!!
+!!    IMPLICIT ARGUMENTS
+!!    ------------------
+!
+!------------------------------------------------------------------------------
+!
+!*       0.   DECLARATIONS
+!        -----------------
+!
+USE MODD_MGN2MECH
+!
+IMPLICIT NONE
+
+CHARACTER(LEN=16), INTENT(IN) :: HMECHANISM !I MECHANISM NAME
+LOGICAL, INTENT(IN) :: OCONVERSION !I 
+!
+CHARACTER(LEN=16),DIMENSION(:), POINTER :: HMECH_SPC!I MECHANISM NAME
+CHARACTER(LEN=16),DIMENSION(:), POINTER :: HVNAME3D !I MECHANISM NAME
+INTEGER,DIMENSION(:), POINTER :: KSPMH_MAP
+INTEGER,DIMENSION(:), POINTER :: KMECH_MAP
+REAL,DIMENSION(:), POINTER :: PCONV_FAC
+REAL,DIMENSION(:), POINTER :: PMECH_MWT
+INTEGER, INTENT(INOUT) :: KVARS3D
+INTEGER, INTENT(INOUT) :: K_SCON_SPC
+
+!...  INCLUDES:
+!
+!*   0.1 DECLARATION OF LOCAL VARIABLES
+!
+! SET ATTRIBUTE AND VARIABLES FOR OUTPUT
+SELECT CASE ( TRIM(HMECHANISM) )
+  CASE ('CB05')
+    K_SCON_SPC = N_CB05
+    KVARS3D = N_CB05_SPC
+  CASE ('CB6')
+    K_SCON_SPC = N_CB6
+    KVARS3D = N_CB6_SPC
+  CASE ('SAPRCII')
+    K_SCON_SPC = N_SAPRCII
+    KVARS3D = N_SAPRCII_SPC
+  CASE ('RADM2')
+    K_SCON_SPC = N_RADM2
+    KVARS3D = N_RADM2_SPC
+  CASE ('RACM')
+    K_SCON_SPC = N_RACM
+    KVARS3D = N_RACM_SPC
+  CASE ('CBMZ')
+    K_SCON_SPC = N_CBMZ
+    KVARS3D = N_CBMZ_SPC    
+  CASE ('SAPRC99')
+    K_SCON_SPC = N_SAPRC99
+    KVARS3D = N_SAPRC99_SPC
+  CASE ('SAPRC99Q')
+    K_SCON_SPC = N_SAPRC99_Q
+    KVARS3D = N_SAPRC99_Q_SPC    
+  CASE ('SAPRC99X')
+    K_SCON_SPC = N_SAPRC99_X
+    KVARS3D = N_SAPRC99_X_SPC
+  CASE ('SOAX')
+    K_SCON_SPC = N_SOAX
+    KVARS3D = N_SOAX_SPC
+  CASE DEFAULT
+    CALL ABOR1_SFX("ERROR: MECHANISM CONVERSION, INVALID MECHANISM: "//TRIM(HMECHANISM))
+ENDSELECT
+
+!  PRINT*,'SHAPE(SPMH_MAP) =',SHAPE(SPMH_MAP)
+IF (ASSOCIATED(KSPMH_MAP)) DEALLOCATE(KSPMH_MAP)
+ALLOCATE(KSPMH_MAP(K_SCON_SPC))
+
+IF (ASSOCIATED(KMECH_MAP)) DEALLOCATE(KMECH_MAP)
+ALLOCATE(KMECH_MAP(K_SCON_SPC))
+
+IF (ASSOCIATED(PCONV_FAC)) DEALLOCATE(PCONV_FAC)
+ALLOCATE(PCONV_FAC(K_SCON_SPC))
+
+IF (ASSOCIATED(HMECH_SPC)) DEALLOCATE(HMECH_SPC)
+ALLOCATE(HMECH_SPC(KVARS3D))
+
+IF (ASSOCIATED(PMECH_MWT)) DEALLOCATE(PMECH_MWT)
+ALLOCATE(PMECH_MWT(KVARS3D))
+
+IF (ASSOCIATED(HVNAME3D)) DEALLOCATE(HVNAME3D)
+ALLOCATE(HVNAME3D(KVARS3D))
+
+IF ( OCONVERSION ) THEN
+
+  SELECT CASE ( TRIM(HMECHANISM) )
+    CASE ('CB05')
+      KSPMH_MAP(:) = NSPMH_MAP_CB05(:)
+      KMECH_MAP(:) = NMECH_MAP_CB05(:)
+      PCONV_FAC(:) = XCONV_FAC_CB05(:)
+      HMECH_SPC(:) = CMECH_SPC_CB05(:)
+      PMECH_MWT(:) = XMECH_MWT_CB05(:)
+    CASE ('CB6')
+      KSPMH_MAP(:) = NSPMH_MAP_CB6(:)
+      KMECH_MAP(:) = NMECH_MAP_CB6(:)
+      PCONV_FAC(:) = XCONV_FAC_CB6(:)
+      HMECH_SPC(:) = CMECH_SPC_CB6(:)
+      PMECH_MWT(:) = XMECH_MWT_CB6(:)      
+    CASE ('SAPRCII')
+      KSPMH_MAP(:) = NSPMH_MAP_SAPRCII(:)
+      KMECH_MAP(:) = NMECH_MAP_SAPRCII(:)
+      PCONV_FAC(:) = XCONV_FAC_SAPRCII(:)
+      HMECH_SPC(:) = CMECH_SPC_SAPRCII(:)
+      PMECH_MWT(:) = XMECH_MWT_SAPRCII(:)
+    CASE ('RADM2')
+      KSPMH_MAP(:) = NSPMH_MAP_RADM2(:)
+      KMECH_MAP(:) = NMECH_MAP_RADM2(:)
+      PCONV_FAC(:) = XCONV_FAC_RADM2(:)
+      HMECH_SPC(:) = CMECH_SPC_RADM2(:)
+      PMECH_MWT(:) = XMECH_MWT_RADM2(:)
+    CASE ('RACM')
+      KSPMH_MAP(:) = NSPMH_MAP_RACM(:)
+      KMECH_MAP(:) = NMECH_MAP_RACM(:)
+      PCONV_FAC(:) = XCONV_FAC_RACM(:)
+      HMECH_SPC(:) = CMECH_SPC_RACM(:)
+      PMECH_MWT(:) = XMECH_MWT_RACM(:)
+    CASE ('CBMZ')
+      KSPMH_MAP(:) = NSPMH_MAP_CBMZ(:)
+      KMECH_MAP(:) = NMECH_MAP_CBMZ(:)
+      PCONV_FAC(:) = XCONV_FAC_CBMZ(:)
+      HMECH_SPC(:) = CMECH_SPC_CBMZ(:)
+      PMECH_MWT(:) = XMECH_MWT_CBMZ(:)
+    CASE ('SAPRC99')
+      KSPMH_MAP(:) = NSPMH_MAP_SAPRC99(:)
+      KMECH_MAP(:) = NMECH_MAP_SAPRC99(:)
+      PCONV_FAC(:) = XCONV_FAC_SAPRC99(:)
+      HMECH_SPC(:) = CMECH_SPC_SAPRC99(:)
+      PMECH_MWT(:) = XMECH_MWT_SAPRC99(:)
+    CASE ('SAPRC99Q')
+      KSPMH_MAP(:) = NSPMH_MAP_SAPRC99_Q(:)
+      KMECH_MAP(:) = NMECH_MAP_SAPRC99_Q(:)
+      PCONV_FAC(:) = XCONV_FAC_SAPRC99_Q(:)
+      HMECH_SPC(:) = CMECH_SPC_SAPRC99_Q(:)
+      PMECH_MWT(:) = XMECH_MWT_SAPRC99_Q(:)
+    CASE ('SAPRC99X')
+      KSPMH_MAP(:) = NSPMH_MAP_SAPRC99_X(:)
+      KMECH_MAP(:) = NMECH_MAP_SAPRC99_X(:)
+      PCONV_FAC(:) = XCONV_FAC_SAPRC99_X(:)
+      HMECH_SPC(:) = CMECH_SPC_SAPRC99_X(:)
+      PMECH_MWT(:) = XMECH_MWT_SAPRC99_X(:)
+    CASE ('SOAX')
+      KSPMH_MAP(:) = NSPMH_MAP_SOAX(:)
+      KMECH_MAP(:) = NMECH_MAP_SOAX(:)
+      PCONV_FAC(:) = XCONV_FAC_SOAX(:)
+      HMECH_SPC(:) = CMECH_SPC_SOAX(:)
+      PMECH_MWT(:) = XMECH_MWT_SOAX(:)
+  ENDSELECT
+
+  HVNAME3D(:)  = HMECH_SPC(:)
+
+ELSE
+
+  KVARS3D = N_SPCA_SPC
+  HVNAME3D(:) = CSPCA_SPC(:)
+  
+ENDIF
+
+!---------------------------------------------------------------------------
+!
+END SUBROUTINE INIT_MGN2MECH
diff --git a/src/LIB/MEGAN/julian.F90 b/src/LIB/MEGAN/julian.F90
new file mode 100644
index 000000000..73442ba48
--- /dev/null
+++ b/src/LIB/MEGAN/julian.F90
@@ -0,0 +1,92 @@
+FUNCTION JULIAN (KYEAR, KMNTH, KMDAY) RESULT(KJULIAN)
+
+!***********************************************************************
+! Version "$Id: julian.F 45 2014-09-12 20:05:29Z coats $"
+! EDSS/Models-3 I/O API.
+! Copyright (C) 1992-2002 MCNC and Carlie J. Coats, Jr.,
+! (C) 2003-2010 by Baron Advanced Meteorological Systems.
+! Distributed under the GNU LESSER GENERAL PUBLIC LICENSE version 2.1
+! See file "LGPL.txt" for conditions of use.
+!.........................................................................
+!  function body starts at line  68
+!
+!  FUNCTION:  returns the Julian day (1...365,366) corresponding to
+!      the date MNTH-MDAY-YEAR.
+!      NOTE:  This is NOT the Julian DATE -- only the
+!      day-number.  To get the Julian date:
+!
+!      JDATE = 1000 * YEAR  +  JULIAN ( YEAR , MNTH , MDAY )
+!
+!  ARGUMENT LIST DESCRIPTION:
+!
+!    Input arguments:
+!
+!      YEAR     Calendar year
+!      MNTH     Month of year  1, 12
+!      MDAY     Day of month   1, 31
+!
+!     Output arguments:  none
+!
+!  RETURN VALUE:
+!
+!      JULIAN   The Julian DAY of the input arguments combined
+!
+!  REVISION HISTORY:
+!
+!    5/1988   Modified for ROMNET
+!
+!    8/1990   Modified for ROM 2.2 by Carlie J. Coats, Jr., CSC
+!       improved comments; improved Zeller's Congruence algorithm
+!       and using IF-THEN ... ELSE IF ... construction.
+!
+!    8/1999   Version for global-climate IO_360, which uses 360-day "year"
+!       
+!       2/2002 Unification by CJC with global-climate JULIAN
+!
+!       Modified 03/2010 by CJC: F9x changes for I/O API v3.1
+!***********************************************************************
+
+IMPLICIT NONE
+
+!...........   ARGUMENTS and their descriptions:
+
+INTEGER, INTENT(IN) :: KYEAR            ! year YYYY
+INTEGER, INTENT(IN) :: KMNTH            ! month 1...12
+INTEGER, INTENT(IN) :: KMDAY            ! day-of-month 1...28,29,30,31
+
+INTEGER :: KJULIAN 
+
+!...........   SCRATCH LOCAL VARIABLES:
+
+INTEGER :: JM, JN, JL
+
+!***********************************************************************
+!   begin body of function  JULIAN
+
+#ifdef IO_360
+
+KJULIAN = KMDAY + 30 * ( KMNTH - 1 )
+
+#else
+
+JM = MOD ((KMNTH + 9), 12)
+JN = (JM * 153 + 2) / 5 + KMDAY + 58
+
+IF  ( MOD(KYEAR,4).NE.0 ) THEN
+  JL = 365
+ELSE IF ( MOD(KYEAR,100).NE.0 ) THEN
+  JL = 366
+  JN = 1 + JN
+ELSE IF ( MOD(KYEAR,400).NE.0 )  THEN
+  JL = 365
+ELSE 
+  JL = 366
+  JN = 1 + JN
+END IF
+
+KJULIAN = 1 + MOD(JN,JL)
+
+#endif
+
+END FUNCTION JULIAN
+
diff --git a/src/LIB/MEGAN/mgn2mech.F90 b/src/LIB/MEGAN/mgn2mech.F90
new file mode 100644
index 000000000..9758d3c71
--- /dev/null
+++ b/src/LIB/MEGAN/mgn2mech.F90
@@ -0,0 +1,315 @@
+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
+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
+      DO JM = 1,N_MGN_PFT
+        ZTMP3 = ZTMP3 + XEF_ALL(JM,JMPMG) * XEFFS_ALL(JM,JMPSP) * PPFT(JM,:)/100.
+      ENDDO
+      ZTMPER(JMPSP,:) = PCFSPEC(JMPMG,:) * ZTMP3(:)
+
+    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
new file mode 100644
index 000000000..df8fdb870
--- /dev/null
+++ b/src/LIB/MEGAN/modd_megan.F90
@@ -0,0 +1,145 @@
+MODULE MODD_MEGAN
+!
+INTEGER, PARAMETER :: NLAYERS = 5
+! LENGTH OF THE TIME STEP  (DAYS)
+INTEGER, PARAMETER :: NTSTLEN = 30
+INTEGER, PARAMETER :: NMAXSTYPES = 11
+!
+REAL, PARAMETER ::  XSOLARCONSTANT = 1367,   &     ! SOLAR CONSTANT [W/M2]
+     XWATERAIRRATIO = 18.016/28.97  ! RATIO BETWEEN WATER AND AIR MOLECULES
+!
+REAL, PARAMETER :: XPSTD_SUN=200.0, XPSTD_SHADE=50.0
+REAL ,PARAMETER :: XCCE=0.56
+!
+REAL,PARAMETER :: XSB = 0.0000000567
+!
+!     REAL,PARAMETER :: CONVERTPPFD = 4.766   
+REAL,PARAMETER :: XCONVERTSHADEPPFD = 4.6
+REAL,PARAMETER :: XCONVERTSUNPPFD = 4.0
+!  
+REAL,PARAMETER :: XPI = 3.14159, XRPI180 = 57.29578
+!
+REAL,PARAMETER :: XDIHIGH = -0.5, XDILOW = -5
+!
+REAL,PARAMETER :: XCTM2 = 230
+REAL,PARAMETER :: XCT2 =200.0  
+!
+REAL,PARAMETER :: XTS = 303.15
+!
+! PARAMETER FOR UNIT CONVERSION
+REAL, PARAMETER :: XUG2TONNE = 1E-12  ! CONVERT MICROGRAM TO METRIC TONNE
+REAL, PARAMETER :: XHR2SEC = 3600     ! CONVERT HR TO SECOND
+REAL, PARAMETER :: XUG2G = 1E-6       ! CONVERT MICROGRAM TO GRAM
+REAL, PARAMETER :: XN2NO    = 2.142857   ! CONVERT HR TO SECOND
+!
+REAL, DIMENSION(NMAXSTYPES) :: XSATURATION=&
+        (/0.395, 0.410, 0.435, 0.485, 0.451, 0.420, 0.477, 0.476, 0.426, 0.482, 0.482/)
+!
+REAL, PARAMETER :: XISMAX=1.344, XH=1.4614
+REAL, PARAMETER :: XCSTAR=585
+!=======================================================================
+!  CANOPY.EXT
+!  THIS INCLUDE FILE CONTAINS MEGAN SPECIES
+!
+!  WHO                   WHEN       WHAT
+!  ---------------------------------------------------------------------
+!  XUEMEI WANG          06/16/2009 - CREATES THIS FILE
+!=======================================================================
+
+INTEGER, PARAMETER :: N_MGN_SPC  = 20
+
+CHARACTER(LEN=6), DIMENSION(N_MGN_SPC) :: &
+        CMGN_SPC=(/'ISOP  ','MYRC  ','SABI  ','LIMO  ','A_3CAR','OCIM  ','BPIN  ','APIN  ','OMTP  ',&
+                  'FARN  ','BCAR  ','OSQT  ','MBO   ','MEOH  ','ACTO  ','CO    ','NO    ','BIDER ',&
+                  'STRESS','OTHER '/)
+
+REAL, DIMENSION(N_MGN_SPC), PARAMETER :: &
+        XCLEO=(/2.,1.83,1.83,1.83,1.83,1.83,1.83,1.83,1.83,2.37,2.37,2.37,2.,1.6,1.83,1.6,1.86,2.,1.83,1.83/)
+
+REAL, DIMENSION(N_MGN_SPC), PARAMETER :: &
+        XCTM1=(/95.,80.,80.,80.,80.,80.,80.,80.,80.,130.,130.,130.,95.,60.,80.,60.,80.,95.,80.,80./)
+
+REAL, DIMENSION(N_MGN_SPC), PARAMETER :: &
+        XTDF_PRM=(/0.13,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.17,0.17,0.17,0.13,0.08,0.1,0.08,0.1,0.13,0.1,0.1/)
+
+REAL, DIMENSION(N_MGN_SPC), PARAMETER :: &
+        XLDF_FCT=(/0.999,0.6,0.6,0.4,0.4,0.4,0.4,0.6,0.4,0.5,0.5,0.5,0.999,0.8,0.2,0.999,0.,0.8,0.8,0.2/)
+
+REAL, DIMENSION(N_MGN_SPC), PARAMETER :: &
+        XMGN_MWT=(/1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1./)
+!
+INTEGER, DIMENSION(N_MGN_SPC), PARAMETER :: &
+        NREA_INDEX=(/5,2,2,2,2,2,2,2,2,3,3,3,5,4,1,1,1,1,1,1/)
+!
+!**************************************************************************************************************
+!
+INTEGER,PARAMETER :: N_MGN_PFT = 16
+!
+!CHARACTER(LEN=10), DIMENSION(N_MGN_PFT), PARAMETER :: &
+!        CMGN_PFT=(/'NT_EG_TEMP','NT_DC_BORL','NT_EG_BORL','BT_EG_TROP','BT_EG_TEMP','BT_DC_TROP',&
+!                   'BT_DC_TEMP','BT_DC_BORL','SG_EG_TEMP','SB_DC_TEMP','SB_DC_BORL',&
+!                   'GS_C3_COLD','GS_C3_COOL','GS_C3_WARM','CORN      ','CROP      '/)
+!
+!CHARACTER(LEN=35), DIMENSION(N_MGN_PFT), PARAMETER :: &
+!        CMGN_NAM=(/'Needleaf evergreen temperate tree  ','Needleaf deciduous boreal tree     ',&
+!                   'Needleaf evergreen boreal tree     ','Broadleaf evergreen tropical tree  ',&
+!                   'Broadleaf evergreen tropical tree  ','Broadleaf deciduous tropical tree  ',&
+!                   'Broadleaf deciduous temperate tree ','Broadleaf deciduous boreal tree    ',&
+!                   'Broadleaf evergreen temperate shrub','Broadleaf deciduous temperate shrub',&
+!                   'Broadleaf deciduous boreal shrub   ','Cold C3 grass                      ',&
+!                   'Cool C3 grass                      ','Warm C3 grass                      ',&
+!                   'Corn                               ','Other crops                        '/)
+!
+INTEGER,PARAMETER :: N_CAT = 5
+!
+REAL, DIMENSION(N_CAT) :: XANEW=(/1.,2.  ,0.4 ,3.5,0.05/)
+REAL, DIMENSION(N_CAT) :: XAGRO=(/1.,1.8 ,0.6 ,3. ,0.6 /)
+REAL, DIMENSION(N_CAT) :: XAMAT=(/1.,1.  ,1.  ,1. ,1.  /)
+REAL, DIMENSION(N_CAT) :: XAOLD=(/1.,1.05,0.95,1.2,0.9 /)
+!
+!**********************************************************************************************************
+
+INTEGER, PARAMETER ::  NRCHA = 16
+! 1  = canopy depth
+! 2  = leaf width
+! 3  = leaf length
+! 4  = canopy height
+! 5  = scattering coefficient for PPFD
+! 6  = scattering coefficient for near IR
+! 7  = reflection coefficient for diffuse PPFD
+! 8  = reflection coefficient for diffuse near IR
+! 9  = clustering coefficient (accounts for leaf clumping influence on mean
+!    projected leaf area in the direction of the suns beam)
+!    use 0.85 for default, corn=0.4-0.9; Pine=0.6-1.0; oak=0.53-0.67; 
+!    tropical rainforest=1.1
+! 10 = leaf IR emissivity
+! 11 = leaf stomata and cuticle factor: 1=hypostomatous, 2=amphistomatous,
+!     1.25=hypostomatous but with some transpiration through cuticle
+! 12 = daytime temperature lapse rate (K m-1)
+! 13 = nighttime temperature lapse rate (K m-1)
+! 14 = warm (>283K) canopy total humidity change (Pa)
+! 15 = cool (>= 283K) canopy total humidity change (Pa)
+! 16 = normalized canopy depth where wind is negligible
+!     NT NT NT TF BT TF BT BT SB SB SB HB HB HB CR CR
+
+REAL,DIMENSION(NRCHA,N_MGN_PFT) :: XCANOPYCHAR = RESHAPE(&
+   (/ 16.,   16.,   16.,   16.,   16.,   16.,   16.,   16.,    1.,    1.,    1., 0.756, 0.756, 0.756,    1.,    1., & 
+     0.05,  0.05,  0.05,  0.05,  0.05,  0.05,  0.05,  0.05, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015,  0.02,  0.02, &
+      0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,  0.15,  0.15,  0.15,  0.15,  0.15, &
+      24.,   24.,   24.,   24.,   24.,   24.,   24.,   24.,    2.,    2.,    2.,  0.75,  0.75,  0.75,    1.,    1., & 
+      0.2,   0.2,   0.2,   0.2,   0.2,   0.2,   0.2,   0.2,   0.2,   0.2,   0.2,   0.2,   0.2,   0.2,   0.2,   0.2, &
+      0.8,   0.8,   0.8,   0.8,   0.8,   0.8,   0.8,   0.8,   0.8,   0.8,   0.8,   0.8,   0.8,   0.8,   0.8,   0.8, &
+    0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057, &
+    0.389, 0.389, 0.389, 0.389, 0.389, 0.389, 0.389, 0.389, 0.389, 0.389, 0.389, 0.389, 0.389, 0.389, 0.389, 0.389, &
+     0.85,  0.85,  0.85,   1.1,  0.95,   1.1,  0.95,  0.95,  0.85,  0.85,  0.85,  0.76,  0.76,  0.76,  0.65,  0.65, &
+     0.95,  0.95,  0.95,  0.95,  0.95,  0.95,  0.95,  0.95,  0.95,  0.95,  0.95,  0.95,  0.95,  0.95,  0.95,  0.95, &
+     1.25,  1.25,  1.25,  1.25,  1.25,  1.25,  1.25,  1.25,  1.00,  1.00,  1.00,  1.25,  1.25,  1.25,  1.25,  1.25, &
+     0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06, &
+    -0.06, -0.06, -0.06, -0.06, -0.06, -0.06, -0.06, -0.06, -0.06, -0.06, -0.06, -0.06, -0.06, -0.06, -0.06, -0.06, &
+     700.,  700.,  700.,  700.,  700.,  700.,  700.,  700.,  700.,  700.,  700.,  700.,  700.,  700.,  700.,  700., &
+     150.,  150.,  150.,  150.,  150.,  150.,  150.,  150.,  150.,  150.,  150.,  150.,  150.,  150.,  150.,  150., &
+      0.7,   0.7,   0.7,   0.7,   0.7,   0.7,   0.7,   0.7,   0.7,   0.7,   0.7,   0.7,   0.7,   0.7,   0.7,   0.7/)&
+        ,SHAPE=(/NRCHA,N_MGN_PFT/) ,ORDER=(/2,1/) )
+
+
+END MODULE MODD_MEGAN
diff --git a/src/LIB/MEGAN/modd_mgn2mech.F90 b/src/LIB/MEGAN/modd_mgn2mech.F90
new file mode 100644
index 000000000..f64f45eb5
--- /dev/null
+++ b/src/LIB/MEGAN/modd_mgn2mech.F90
@@ -0,0 +1,1275 @@
+MODULE MODD_MGN2MECH
+
+USE MODD_MEGAN, ONLY : N_MGN_SPC, N_MGN_PFT
+!=======================================================================
+!  EF_MGN20.EXT
+!  This include file contains EF for 20 MEGAN species.  The values in
+!  this file must be in the same order as in SPC_MGN.EXT
+!
+!  MEGAN v2.1
+!  INPUT version 210
+!
+!  History:
+!  Who          When       What
+!  ---------------------------------------------------------------------
+!  Tan          12/02/2006 - Creates this file
+!  Guenther A.  08/11/2007 - Creates this file again with updates and move
+!                          from v2.0 to v2.02
+!  Xuemei Wang and Alex 26/07/2011-Extend EFs to 16 PFTs
+!  Jiang X.     05/07/2012 - Updates EFs with new values from Guenther
+!=======================================================================
+
+!     EF_NT_EG_TEMP EF_NT_DC_BORL EF_NT_EG_BORL EF_BT_EG_TROP EF_BT_EG_TEMP
+!     EF_BT_DC_TROP EF_BT_DC_TEMP EF_BT_DC_BORL EF_SB_EG_TEMP EF_SB_DC_TEMP
+!     EF_SB_DC_BORL EF_GS_C3_COLD EF_GS_C3_COOL EF_GS_C3_WARM EF_CROP EF_CORN
+
+REAL,DIMENSION(N_MGN_PFT,N_MGN_SPC) :: XEF_ALL = RESHAPE( (/  & 
+ -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,&
+ -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,&
+ -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,&
+ -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,&
+ -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,&
+ -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,&
+ -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,&
+ -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,&
+180., 170., 180., 150., 150., 150., 150., 150., 110., 200., 110.,   5.,   5.,   5.,   5.,   5.,&
+ 40.,  40.,  40.,  60.,  40.,  60.,  40.,  40.,  40.,  40.,  40.,   3.,   3.,   3.,   4.,   4.,&
+ 80.,  80.,  80.,  60.,  40.,  60.,  40.,  40.,  50.,  50.,  50.,   1.,   1.,   1.,   2.,   4.,&
+120., 120., 120., 120., 100., 120., 100., 100., 100., 100., 100.,   2.,   2.,   2.,   2.,   2.,&
+ -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,&
+900., 900., 900., 500., 900., 500., 900., 900., 900., 900., 900., 500., 500., 500., 900., 900.,&
+240., 240., 240., 240., 240., 240., 240., 240., 240., 240., 240.,  80.,  80.,  80.,  80.,  80.,&
+600., 600., 600., 600., 600., 600., 600., 600., 600., 600., 600., 600., 600., 600., 600., 600.,&
+ -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,  -1.,&
+500., 500., 500., 500., 500., 500., 500., 500., 500., 500., 500.,  80.,  80.,  80.,  80.,  80.,&
+300., 300., 300., 300., 300., 300., 300., 300., 300., 300., 300., 300., 300., 300., 300., 300.,&
+140., 140., 140., 140., 140., 140., 140., 140., 140., 140., 140., 140., 140., 140., 140., 140. /),&
+SHAPE=(/N_MGN_PFT,N_MGN_SPC/), ORDER=(/1,2/)   )
+
+!=======================================================================
+!  EFFS_MGN20T150.EXT
+!  This include file contains EF fractions for speciation from 20 MEGAN
+!  categories to 150 species.  The values in this file must be in the
+!  same order as in MAP_MGN20T150.EXT
+!
+!  MEGAN v2.1
+!  INPUT version 210
+!
+!  History:
+!  Who          When       What
+!  ---------------------------------------------------------------------
+!  Tan          12/02/06 - Creates this file
+!  Guenther A.  08/11/07 - Move from MEGAN v2.0 to MEGAN v2.02 with update on
+!                          Nitrogen gas.
+!  Guenther A.  26/07/2011-Extend EFs for 16 PFTs
+!  Jiang X.     05/07/12 - Update EF fractions with new values from Guenther
+!=======================================================================
+                                                                                   
+INTEGER,PARAMETER :: N_EFFS_SPC=150   ! Number of chemical species
+
+!     EFFS_NT_EG_TEMP EFFS_NT_DC_BORL EFFS_NT_EG_BORL EFFS_BT_EG_TROP EFFS_BT_EG_TEMP
+!     EFFS_BT_DC_TROP EFFS_BT_DC_TEMP EFFS_BT_DC_BORL EFSF_SB_EG_TEMP EFFS_SB_DC_TEMP
+!     EFFS_SB_DC_BORL EFFS_GS_C3_COLD EFFS_GS_C3_COOL EFFS_GS_C3_WARM EFFS_CROP EFFS_CORN
+
+
+REAL,DIMENSION(N_MGN_PFT,N_EFFS_SPC) :: XEFFS_ALL = RESHAPE( (/  &
+ 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,&
+ 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,&
+ 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,&
+ 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,&
+ 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,&
+ 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,&
+ 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,&
+ 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,&
+ 0.006, 0.006, 0.006, 0.011, 0.011, 0.011, 0.011, 0.011, 0.009, 0.009, 0.009, 0.010, 0.010, 0.010, 0.010, 0.010,&
+ 0.055, 0.055, 0.055, 0.057, 0.057, 0.057, 0.057, 0.057, 0.046, 0.046, 0.046, 0.042, 0.042, 0.042, 0.042, 0.042,&
+ 0.017, 0.017, 0.017, 0.034, 0.034, 0.034, 0.034, 0.034, 0.028, 0.028, 0.028, 0.031, 0.031, 0.031, 0.031, 0.031,&
+ 0.055, 0.055, 0.055, 0.046, 0.046, 0.046, 0.046, 0.046, 0.046, 0.046, 0.046, 0.042, 0.042, 0.042, 0.042, 0.042,&
+ 0.033, 0.033, 0.033, 0.011, 0.011, 0.011, 0.011, 0.011, 0.037, 0.037, 0.037, 0.042, 0.042, 0.042, 0.042, 0.042,&
+ 0.055, 0.055, 0.055, 0.057, 0.057, 0.057, 0.057, 0.057, 0.046, 0.046, 0.046, 0.042, 0.042, 0.042, 0.042, 0.042,&
+ 0.055, 0.055, 0.055, 0.057, 0.057, 0.057, 0.057, 0.057, 0.046, 0.046, 0.046, 0.042, 0.042, 0.042, 0.042, 0.042,&
+ 0.067, 0.067, 0.067, 0.057, 0.057, 0.057, 0.057, 0.057, 0.055, 0.055, 0.055, 0.062, 0.062, 0.062, 0.062, 0.062,&
+ 0.160, 0.160, 0.160, 0.057, 0.057, 0.057, 0.057, 0.057, 0.092, 0.092, 0.092, 0.104, 0.104, 0.104, 0.104, 0.104,&
+ 0.248, 0.248, 0.248, 0.180, 0.180, 0.180, 0.180, 0.180, 0.186, 0.186, 0.186, 0.146, 0.146, 0.146, 0.146, 0.146,&
+ 0.005, 0.005, 0.005, 0.010, 0.010, 0.010, 0.010, 0.010, 0.008, 0.008, 0.008, 0.008, 0.008, 0.008, 0.008, 0.008,&
+ 0.002, 0.002, 0.002, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.004, 0.004, 0.004, 0.004, 0.004,&
+ 0.006, 0.006, 0.006, 0.011, 0.011, 0.011, 0.011, 0.011, 0.009, 0.009, 0.009, 0.010, 0.010, 0.010, 0.010, 0.010,&
+ 0.022, 0.022, 0.022, 0.046, 0.046, 0.046, 0.046, 0.046, 0.037, 0.037, 0.037, 0.042, 0.042, 0.042, 0.042, 0.042,&
+ 0.006, 0.006, 0.006, 0.011, 0.011, 0.011, 0.011, 0.011, 0.009, 0.009, 0.009, 0.010, 0.010, 0.010, 0.010, 0.010,&
+ 0.002, 0.002, 0.002, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.004, 0.004, 0.004, 0.004, 0.004,&
+ 0.033, 0.033, 0.033, 0.034, 0.034, 0.034, 0.034, 0.034, 0.046, 0.046, 0.046, 0.042, 0.042, 0.042, 0.042, 0.042,&
+ 0.006, 0.006, 0.006, 0.011, 0.011, 0.011, 0.011, 0.011, 0.009, 0.009, 0.009, 0.010, 0.010, 0.010, 0.010, 0.010,&
+ 0.002, 0.002, 0.002, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.004, 0.004, 0.004, 0.004, 0.004,&
+ 0.028, 0.028, 0.028, 0.011, 0.011, 0.011, 0.011, 0.011, 0.046, 0.046, 0.046, 0.042, 0.042, 0.042, 0.042, 0.042,&
+ 0.006, 0.006, 0.006, 0.002, 0.002, 0.002, 0.002, 0.002, 0.009, 0.009, 0.009, 0.010, 0.010, 0.010, 0.010, 0.010,&
+ 0.011, 0.011, 0.011, 0.057, 0.057, 0.057, 0.057, 0.057, 0.037, 0.037, 0.037, 0.042, 0.042, 0.042, 0.042, 0.042,&
+ 0.004, 0.004, 0.004, 0.008, 0.008, 0.008, 0.008, 0.008, 0.006, 0.006, 0.006, 0.006, 0.006, 0.006, 0.006, 0.006,&
+ 0.060, 0.060, 0.060, 0.138, 0.138, 0.138, 0.138, 0.138, 0.111, 0.111, 0.111, 0.125, 0.125, 0.125, 0.125, 0.125,&
+ 0.003, 0.003, 0.003, 0.007, 0.007, 0.007, 0.007, 0.007, 0.006, 0.006, 0.006, 0.006, 0.006, 0.006, 0.006, 0.006,&
+ 0.017, 0.017, 0.017, 0.034, 0.034, 0.034, 0.034, 0.034, 0.028, 0.028, 0.028, 0.031, 0.031, 0.031, 0.031, 0.031,&
+ 0.003, 0.003, 0.003, 0.007, 0.007, 0.007, 0.007, 0.007, 0.006, 0.006, 0.006, 0.006, 0.006, 0.006, 0.006, 0.006,&
+ 0.017, 0.017, 0.017, 0.030, 0.030, 0.030, 0.030, 0.030, 0.024, 0.024, 0.024, 0.027, 0.027, 0.027, 0.027, 0.027,&
+ 0.001, 0.001, 0.001, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002,&
+ 0.003, 0.003, 0.003, 0.001, 0.001, 0.001, 0.001, 0.001, 0.003, 0.003, 0.003, 0.002, 0.002, 0.002, 0.002, 0.002,&
+ 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,&
+ 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,&
+ 0.016, 0.016, 0.016, 0.019, 0.019, 0.019, 0.019, 0.019, 0.019, 0.019, 0.019, 0.022, 0.022, 0.022, 0.022, 0.022,&
+ 0.006, 0.006, 0.006, 0.007, 0.007, 0.007, 0.007, 0.007, 0.008, 0.008, 0.008, 0.011, 0.011, 0.011, 0.011, 0.011,&
+ 0.144, 0.144, 0.144, 0.084, 0.084, 0.084, 0.084, 0.084, 0.096, 0.096, 0.096, 0.098, 0.098, 0.098, 0.098, 0.098,&
+ 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.005, 0.005, 0.005, 0.005, 0.005,&
+ 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.005, 0.005, 0.005, 0.005, 0.005,&
+ 0.120, 0.120, 0.120, 0.056, 0.056, 0.056, 0.056, 0.056, 0.067, 0.067, 0.067, 0.077, 0.077, 0.077, 0.077, 0.077,&
+ 0.024, 0.024, 0.024, 0.028, 0.028, 0.028, 0.028, 0.028, 0.029, 0.029, 0.029, 0.033, 0.033, 0.033, 0.033, 0.033,&
+ 0.012, 0.012, 0.012, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.016, 0.016, 0.016, 0.016, 0.016,&
+ 0.008, 0.008, 0.008, 0.009, 0.009, 0.009, 0.009, 0.009, 0.010, 0.010, 0.010, 0.011, 0.011, 0.011, 0.011, 0.011,&
+ 0.005, 0.005, 0.005, 0.006, 0.006, 0.006, 0.006, 0.006, 0.006, 0.006, 0.006, 0.005, 0.005, 0.005, 0.005, 0.005,&
+ 
+ 0.008, 0.008, 0.008, 0.009, 0.009, 0.009, 0.009, 0.009, 0.010, 0.010, 0.010, 0.011, 0.011, 0.011, 0.011, 0.011,&
+ 0.012, 0.012, 0.012, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.016, 0.016, 0.016, 0.016, 0.016,&
+ 0.008, 0.008, 0.008, 0.009, 0.009, 0.009, 0.009, 0.009, 0.010, 0.010, 0.010, 0.011, 0.011, 0.011, 0.011, 0.011,&
+ 0.016, 0.016, 0.016, 0.019, 0.019, 0.019, 0.019, 0.019, 0.019, 0.019, 0.019, 0.022, 0.022, 0.022, 0.022, 0.022,&
+ 0.234, 0.234, 0.234, 0.276, 0.276, 0.276, 0.276, 0.276, 0.285, 0.285, 0.285, 0.224, 0.224, 0.224, 0.224, 0.224,&
+ 0.008, 0.008, 0.008, 0.009, 0.009, 0.009, 0.009, 0.009, 0.010, 0.010, 0.010, 0.011, 0.011, 0.011, 0.011, 0.011,&
+ 0.024, 0.024, 0.024, 0.028, 0.028, 0.028, 0.028, 0.028, 0.029, 0.029, 0.029, 0.033, 0.033, 0.033, 0.033, 0.033,&
+ 0.004, 0.004, 0.004, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005,&
+ 0.199, 0.199, 0.199, 0.139, 0.139, 0.139, 0.139, 0.139, 0.172, 0.172, 0.172, 0.164, 0.164, 0.164, 0.164, 0.164,&
+ 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.005, 0.005, 0.005, 0.005, 0.005,&
+ 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.005, 0.005, 0.005, 0.005, 0.005,&
+ 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.005, 0.005, 0.005, 0.005, 0.005,&
+ 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.005, 0.005, 0.005, 0.005, 0.005,&
+ 0.012, 0.012, 0.012, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.016, 0.016, 0.016, 0.016, 0.016,&
+ 0.040, 0.040, 0.040, 0.046, 0.046, 0.046, 0.046, 0.046, 0.048, 0.048, 0.048, 0.055, 0.055, 0.055, 0.055, 0.055,&
+ 0.080, 0.080, 0.080, 0.186, 0.186, 0.186, 0.186, 0.186, 0.115, 0.115, 0.115, 0.109, 0.109, 0.109, 0.109, 0.109,&
+ 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.005, 0.005, 0.005, 0.005, 0.005,&
+ 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.005, 0.005, 0.005, 0.005, 0.005,&
+ 0.002, 0.002, 0.002, 0.005, 0.005, 0.005, 0.005, 0.005, 0.002, 0.002, 0.002, 0.005, 0.005, 0.005, 0.005, 0.005,&
+ 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.005, 0.005, 0.005, 0.005, 0.005,&
+ 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,&
+ 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,&
+ 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,&
+ 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005,&
+ 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,&
+ 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,&
+ 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,&
+ 0.400, 0.400, 0.400, 0.400, 0.400, 0.400, 0.400, 0.400, 0.400, 0.400, 0.400, 0.250, 0.250, 0.250, 0.250, 0.250,&
+ 0.400, 0.400, 0.400, 0.400, 0.400, 0.400, 0.400, 0.400, 0.400, 0.400, 0.400, 0.250, 0.250, 0.250, 0.250, 0.250,&
+ 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.150, 0.150, 0.150, 0.150, 0.150,&
+ 0.080, 0.080, 0.080, 0.080, 0.080, 0.080, 0.080, 0.080, 0.080, 0.080, 0.080, 0.200, 0.200, 0.200, 0.200, 0.200,&
+ 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.150, 0.150, 0.150, 0.150, 0.150,&
+ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010,&
+ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,&
+ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010,&
+ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002,&
+ 
+ 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010,&
+ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015,&
+ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030,&
+ 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,&
+ 0.240, 0.240, 0.240, 0.240, 0.240, 0.240, 0.240, 0.240, 0.240, 0.240, 0.240, 0.240, 0.240, 0.240, 0.240, 0.240,&
+ 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010,&
+ 0.580, 0.580, 0.580, 0.580, 0.580, 0.580, 0.580, 0.580, 0.580, 0.580, 0.580, 0.580, 0.580, 0.580, 0.580, 0.580,&
+ 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015,&
+ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.480, 0.480, 0.480, 0.480, 0.480, 0.480, 0.480, 0.480, 0.480, 0.480, 0.480, 0.480, 0.480, 0.480, 0.480, 0.480,&
+ 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002,&
+ 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003,&
+ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002,&
+ 0.050, 0.050, 0.050, 0.050, 0.050, 0.050, 0.050, 0.050, 0.050, 0.050, 0.050, 0.050, 0.050, 0.050, 0.050, 0.050,&
+ 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010,&
+ 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002,&
+ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003,&
+ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030,&
+ 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030,&
+ 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002,&
+ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010,&
+ 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002,&
+ 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010,&
+ 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010,&
+ 0.100, 0.100, 0.100, 0.100, 0.100, 0.100, 0.100, 0.100, 0.100, 0.100, 0.100, 0.100, 0.100, 0.100, 0.100, 0.100,&
+ 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060,&
+ 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060,&
+ 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060,&
+ 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060, 0.060,&
+ 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030, 0.030,&
+ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.003, 0.003, 0.003, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002,&
+ 0.003, 0.003, 0.003, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.003, 0.003, 0.003, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.003, 0.003, 0.003, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,&
+ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001 /),&
+SHAPE=(/N_MGN_PFT,N_EFFS_SPC/),  ORDER=(/1,2/) )
+
+
+!****************************************************************************************************************
+!****************************************************************************************************************
+
+INTEGER, PARAMETER :: N_CB05_SPC=19
+!
+CHARACTER(LEN=4), DIMENSION(N_CB05_SPC) :: CMECH_SPC_CB05=(/& ! Mechanism species name
+'ISOP','TERP','PAR ','XYL ','OLE ','NR  ','MEOH','CH4 ','NH3 ','NO  ',&
+'ALD2','ETOH','FORM','ALDX','TOL ','IOLE','CO  ','ETHA','ETH '/)
+
+
+REAL, DIMENSION(N_CB05_SPC) :: XMECH_MWT_CB05=(/&  ! Mechanism species molecular weight
+ 80.,160., 16.,128., 32., 16., 16., 16., 17., 46., 32., 32., 16., 32.,112., 64.,&
+ 28., 32., 28./)
+
+INTEGER, PARAMETER :: N_CB05=204
+
+CHARACTER(LEN=16), DIMENSION(N_CB05) :: CSPMH_NAM_CB05=(/&  ! speciated species name
+'isoprene       ','myrcene        ','sabinene       ','limonene       ','carene_3       ','ocimene_t_b    ',&
+'pinene_b       ','pinene_a       ','2met_styrene   ','2met_styrene   ','2met_styrene   ','cymene_p       ',&
+'cymene_p       ','cymene_o       ','cymene_o       ','phellandrene_a ','thujene_a      ','terpinene_a    ',&
+'terpinene_g    ','terpinolene    ','phellandrene_b ','camphene       ','bornene        ','fenchene_a     ',&
+'ocimene_al     ','ocimene_c_b    ','tricyclene     ','tricyclene     ','estragole      ','camphor        ',&
+'camphor        ','fenchone       ','fenchone       ','piperitone     ','thujone_a      ','thujone_a      ',&
+'thujone_b      ','thujone_b      ','cineole_1_8    ','cineole_1_8    ','borneol        ','borneol        ',&
+'linalool       ','terpineol_4    ','terpineol_a    ','linalool_OXD_c ','linalool_OXD_t ','ionone_b       ',&
+'ionone_b       ','bornyl_ACT     ','bornyl_ACT     ','farnescene_a   ','caryophyllene_b','acoradiene     ',&
+'aromadendrene  ','bergamotene_a  ','bergamotene_b  ','bisabolene_a   ','bisabolene_b   ','bourbonene_b   ',&
+'cadinene_d     ','cadinene_g     ','cedrene_a      ','copaene_a      ','cubebene_a     ','cubebene_b     ',&
+'elemene_b      ','farnescene_b   ','germacrene_B   ','germacrene_D   ','gurjunene_b    ','humulene_a     ',&
+'humulene_g     ','isolongifolene ','longifolene    ','longipinene    ','muurolene_a    ','muurolene_g    ',&
+'selinene_b     ','selinene_d     ','nerolidol_c    ','nerolidol_t    ','cedrol         ','cedrol         ',&
+'MBO_2m3e2ol    ','MBO_2m3e2ol    ','methanol       ','acetone        ','methane        ','ammonia        ',&
+'nitric_OXD     ','acetaldehyde   ','ethanol        ','formic_acid    ','formaldehyde   ','acetic_acid    ',&
+'acetic_acid    ','MBO_3m2e1ol    ','MBO_3m2e1ol    ','MBO_3m3e1ol    ','MBO_3m3e1ol    ','benzaldehyde   ',&
+'butanone_2     ','decanal        ','decanal        ','dodecene_1     ','dodecene_1     ','geranyl_acetone',&
+'geranyl_acetone','heptanal       ','heptanal       ','heptane        ','hexane         ','met_benzoate   ',&
+'met_benzoate   ','met_heptenone  ','met_heptenone  ','neryl_acetone  ','neryl_acetone  ','neryl_acetone  ',&
+'nonanal        ','nonanal        ','nonenal        ','nonenal        ','nonenal        ','octanal        ',&
+'octanal        ','octanol        ','octenol_1e3ol  ','octenol_1e3ol  ','oxopentanal    ','oxopentanal    ',&
+'pentane        ','phenyl_CCO     ','phenyl_CCO     ','pyruvic_acid   ','pyruvic_acid   ','terpinyl_ACT_a ',&
+'terpinyl_ACT_a ','tetradecene_1  ','tetradecene_1  ','toluene        ','carbon_monoxide','butene         ',&
+'butene         ','ethane         ','ethene         ','propane        ','propane        ','propene        ',&
+'propene        ','diallyl_2s     ','diallyl_2s     ','2met_2s        ','2met_s         ','met_chloride   ',&
+'met_bromide    ','met_iodide     ','met_mercaptan  ','met_propenyl_2s','met_propenyl_2s','PPPP_2s        ',&
+'PPPP_2s        ','2met_nonatriene','met_salicylate ','met_salicylate ','indole         ','indole         ',&
+'jasmone        ','jasmone        ','met_jasmonate  ','met_jasmonate  ','3met_3DCTT     ','hexanal        ',&
+'hexanal        ','hexanol_1      ','hexenal_c3     ','hexenal_c3     ','hexenal_t2     ','hexenal_t2     ',&
+'hexenol_c3     ','hexenol_c3     ','hexenyl_ACT_c3 ','hexenyl_ACT_c3 ','hexenyl_ACT_c3 ','homosalate     ',&
+'homosalate     ','Ehsalate       ','Ehsalate       ','pentanal       ','pentanal       ','heptanone      ',&
+'anisole        ','verbenene      ','benzyl-acetate ','benzyl-acetate ','benzyl-acetate ','myrtenal       ',&
+'benzyl-alcohol ','meta-cymenene  ','meta-cymenene  ','ipsenol        ','Napthalene     ','Napthalene     '/)
+!
+INTEGER, DIMENSION(N_CB05) :: NSPMH_MAP_CB05=(/&            ! speciated species name
+  1,  2,  3,  4,  5,  6,  7,  8,  9,  9,  9, 10, 10, 11, 11, 12,&
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 23, 24, 25, 25, 26,&
+ 26, 27, 28, 28, 29, 29, 30, 30, 31, 31, 32, 33, 34, 35, 36, 37,& 
+ 37, 38, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,&
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,&
+ 68, 69, 70, 70, 71, 71, 72, 73, 74, 75, 77, 78, 79, 80, 81, 82,&
+ 82, 83, 83, 84, 84, 85, 86, 87, 87, 88, 88, 89, 89, 90, 90, 91,&
+ 92, 93, 93, 94, 94, 95, 95, 95, 96, 96, 97, 97, 97, 98, 98, 99,&
+100,100,101,101,102,103,103,104,104,105,105,106,106,107,108,109,&
+109,110,111,113,113,114,114,117,117,118,119,120,121,122,124,125,&
+125,126,126,127,128,128,129,129,130,130,131,131,132,133,133,134,&
+135,135,136,136,137,137,138,138,138,139,139,140,140,141,141,142,&
+143,144,145,145,145,146,147,148,148,149,150,150/)
+!
+CHARACTER(LEN=4), DIMENSION(N_CB05) :: CMECH_NAM_CB05=(/&  ! mechanism species
+'ISOP','TERP','TERP','TERP','TERP','TERP','TERP','TERP','PAR ','XYL ','OLE ','PAR ','XYL ','PAR ','XYL ','TERP',&
+'TERP','TERP','TERP','TERP','TERP','TERP','TERP','TERP','TERP','TERP','PAR ','NR  ','TERP','PAR ','NR  ','PAR ',&
+'NR  ','TERP','PAR ','NR  ','PAR ','NR  ','PAR ','NR  ','PAR ','NR  ','TERP','TERP','TERP','TERP','TERP','TERP',&
+'NR  ','PAR ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ',&
+'NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ',&
+'NR  ','NR  ','PAR ','NR  ','OLE ','PAR ','MEOH','PAR ','CH4 ','NH3 ','NO  ','ALD2','ETOH','NR  ','FORM','PAR ',&
+'NR  ','ALDX','PAR ','FORM','PAR ','TOL ','PAR ','ALDX','PAR ','OLE ','PAR ','TERP','NR  ','ALDX','PAR ','PAR ',&
+'PAR ','TOL ','NR  ','PAR ','ALDX','IOLE','PAR ','NR  ','ALDX','PAR ','PAR ','IOLE','ALDX','ALDX','PAR ','PAR ',&
+'PAR ','OLE ','PAR ','ALDX','PAR ','TOL ','ALDX','FORM','ALDX','TERP','NR  ','PAR ','OLE ','TOL ','CO  ','OLE ',&
+'PAR ','ETHA','ETH ','PAR ','NR  ','OLE ','PAR ','PAR ','OLE ','PAR ','PAR ','NR  ','NR  ','NR  ','PAR ','PAR ',&
+'OLE ','PAR ','OLE ','TERP','TOL ','NR  ','TOL ','NR  ','TERP','NR  ','TERP','NR  ','NR  ','ALDX','PAR ','PAR ',&
+'IOLE','ALDX','IOLE','ALDX','PAR ','IOLE','PAR ','IOLE','NR  ','TERP','NR  ','TERP','NR  ','ALDX','PAR ','PAR ',&
+'TOL ','TERP','TOL ','PAR ','NR  ','TERP','TOL ','XYL ','PAR ','TERP','XYL ','PAR '/)
+!
+INTEGER, DIMENSION(N_CB05) :: NMECH_MAP_CB05=(/&     ! mechanism species mapped
+ 1, 2, 2, 2, 2, 2, 2, 2, 3, 4, 5, 3, 4, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 6, 2, 3, 6, 3,&
+ 6, 2, 3, 6, 3, 6, 3, 6, 3, 6, 2, 2, 2, 2, 2, 2, 6, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,&
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 3, 6, 5, 3, 7, 3, 8, 9,10,11,12, 6,13, 3,&
+ 6,14, 3,13, 3,15, 3,14, 3, 5, 3, 2, 6,14, 3, 3, 3,15, 6, 3,14,16, 3, 6,14, 3, 3,16,14,14, 3, 3,&
+ 3, 5, 3,14, 3,15,14,13,14, 2, 6, 3, 5,15,17, 5, 3,18,19, 3, 6, 5, 3, 3, 5, 3, 3, 6, 6, 6, 3, 3,&
+ 5, 3, 5, 2,15, 6,15, 6, 2, 6, 2, 6, 6,14, 3, 3,16,14,16,14, 3,16, 3,16, 6, 2, 6, 2, 6,14, 3, 3,&
+15, 2,15, 3, 6, 2,15, 4, 3, 2, 4, 3/)
+
+!
+REAL, DIMENSION(N_CB05)  :: XCONV_FAC_CB05=(/&   ! conversion factor
+  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1., 0.5,  2.,  1.,  2.,  1.,  1.,&
+  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  9.,  1.,  1.,  8.,  2.,  8.,&
+  2.,  1.,  9.,  1.,  9.,  1.,  9.,  1.,  8.,  2.,  1.,  1.,  1.,  1.,  1.,  1.,&
+  3.,  6.,  6., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15.,&
+ 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15.,&
+ 15., 15., 13.,  2.,  1.,  3.,  1.,  3.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,&
+  1.,  1.,  3.,  1.,  4.,  1.,  4.,  1.,  8.,  1., 10.,  1.,  3.,  1.,  5.,  7.,&
+  6.,  1.,  1.,  6.,  1.,  1.,  8.,  1.,  1.,  7.,  3.,  1.,  1.,  1.,  6.,  8.,&
+  6.,  1.,  3.,  1.,  5.,  1., 0.5,  1.,  1.,  1.,  2., 12.,  1.,  1.,  1.,  1.,&
+  2.,  1.,  1., 1.5, 1.5,  1.,  1.,  2.,  2.,  2.,  2.,  1.,  1.,  1.,  1.,  2.,&
+  1.,  4.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  3., 16.,  1.,  4.,  6.,&
+  1.,  1.,  1.,  1.,  2.,  1.,  3.,  1.,  1.,  1.,  3.,  1.,  3.,  1.,  3.,  7.,&
+  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  2.,  1.,  1.,  2./)
+
+
+!****************************************************************************************************************
+!****************************************************************************************************************
+
+INTEGER, PARAMETER :: N_CB6_SPC=24
+
+CHARACTER(LEN=4), DIMENSION(N_CB6_SPC) :: CMECH_SPC_CB6=(/&  ! Mechanism species name
+'ISOP','TERP','PAR ','XYL ','OLE ','NR  ','MEOH','CH4 ','NH3 ','NO  ',&
+'ALD2','ETOH','FORM','ALDX','TOL ','IOLE','CO  ','ETHA','ETH ','ETHY',&
+'PRPA','BENZ','ACET','KET '/)
+
+REAL, DIMENSION(N_CB6_SPC) :: XMECH_MWT_CB6=(/&  ! Mechanism species molecular weight
+ 80.,160., 16.,128., 32., 16., 16., 16.,17., 46., 32., 32., 16., 32.,112., 64.,&
+ 28., 32., 28., 26., 44., 78., 58., 58./)
+
+
+INTEGER, PARAMETER :: N_CB6=210
+
+CHARACTER(LEN=15), DIMENSION(N_CB6) :: CSPMH_NAM_CB6=(/&
+'isoprene       ','myrcene        ','sabinene       ','limonene       ','carene_3       ','ocimene_t_b    ',&
+'pinene_b       ','pinene_a       ','2met_styrene   ','2met_styrene   ','2met_styrene   ','cymene_p       ',&
+'cymene_p       ','cymene_o       ','cymene_o       ','phellandrene_a ','thujene_a      ','terpinene_a    ',&
+'terpinene_g    ','terpinolene    ','phellandrene_b ','camphene       ','bornene        ','fenchene_a     ',&
+'ocimene_al     ','ocimene_c_b    ','tricyclene     ','tricyclene     ','estragole      ','camphor        ',&
+'camphor        ','fenchone       ','fenchone       ','piperitone     ','thujone_a      ','thujone_a      ',&
+'thujone_b      ','thujone_b      ','cineole_1_8    ','cineole_1_8    ','borneol        ','borneol        ',&
+'linalool       ','terpineol_4    ','terpineol_a    ','linalool_OXD_c ','linalool_OXD_t ','ionone_b       ',&
+'ionone_b       ','bornyl_ACT     ','bornyl_ACT     ','farnescene_a   ','caryophyllene_b','acoradiene     ',&
+'aromadendrene  ','bergamotene_a  ','bergamotene_b  ','bisabolene_a   ','bisabolene_b   ','bourbonene_b   ',&
+'cadinene_d     ','cadinene_g     ','cedrene_a      ','copaene_a      ','cubebene_a     ','cubebene_b     ',&
+'elemene_b      ','farnescene_b   ','germacrene_B   ','germacrene_D   ','gurjunene_b    ','humulene_a     ',&
+'humulene_g     ','isolongifolene ','longifolene    ','longipinene    ','muurolene_a    ','muurolene_g    ',&
+'selinene_b     ','selinene_d     ','nerolidol_c    ','nerolidol_t    ','cedrol         ','cedrol         ',&
+'MBO_2m3e2ol    ','MBO_2m3e2ol    ','methanol       ','acetone        ','methane        ','ammonia        ',&
+'nitric_OXD     ','acetaldehyde   ','ethanol        ','formic_acid    ','formaldehyde   ','acetic_acid    ',&
+'acetic_acid    ','MBO_3m2e1ol    ','MBO_3m2e1ol    ','MBO_3m3e1ol    ','MBO_3m3e1ol    ','benzaldehyde   ',&
+'butanone_2     ','decanal        ','decanal        ','dodecene_1     ','dodecene_1     ','geranyl_acetone',&
+'geranyl_acetone','heptanal       ','heptanal       ','heptane        ','hexane         ','met_benzoate   ',&
+'met_benzoate   ','met_heptenone  ','met_heptenone  ','neryl_acetone  ','neryl_acetone  ','neryl_acetone  ',&
+'nonanal        ','nonanal        ','nonenal        ','nonenal        ','nonenal        ','octanal        ',&
+'octanal        ','octanol        ','octenol_1e3ol  ','octenol_1e3ol  ','oxopentanal    ','oxopentanal    ',&
+'pentane        ','phenyl_CCO     ','phenyl_CCO     ','pyruvic_acid   ','pyruvic_acid   ','terpinyl_ACT_a ',&
+'terpinyl_ACT_a ','tetradecene_1  ','tetradecene_1  ','toluene        ','carbon_monoxide','butene         ',&
+'butene         ','ethane         ','ethene         ','propane        ','propene        ','propene        ',&
+'diallyl_2s     ','diallyl_2s     ','2met_2s        ','2met_s         ','met_chloride   ','met_bromide    ',&
+'met_iodide     ','met_mercaptan  ','met_propenyl_2s','met_propenyl_2s','PPPP_2s        ','PPPP_2s        ',&
+'2met_nonatriene','met_salicylate ','met_salicylate ','indole         ','indole         ','jasmone        ',&
+'jasmone        ','met_jasmonate  ','met_jasmonate  ','3met_3DCTT     ','hexanal        ','hexanal        ',&
+'hexanol_1      ','hexenal_c3     ','hexenal_c3     ','hexenal_t2     ','hexenal_t2     ','hexenol_c3     ',&
+'hexenol_c3     ','hexenyl_ACT_c3 ','hexenyl_ACT_c3 ','hexenyl_ACT_c3 ','homosalate     ','homosalate     ',&
+'Ehsalate       ','Ehsalate       ','pentanal       ','pentanal       ','heptanone      ','anisole        ',&
+'verbenene      ','benzyl-acetate ','benzyl-acetate ','benzyl-acetate ','myrtenal       ','benzyl-alcohol ',&
+'meta-cymenene  ','meta-cymenene  ','ipsenol        ','Napthalene     ','Napthalene     ','fenchone       ',&
+'thujone_a      ','thujone_b      ','butanone_2     ','met_heptenone  ','neryl_acetone  ','heptanone      '/)
+
+INTEGER, DIMENSION(N_CB6) :: NSPMH_MAP_CB6=(/&    
+  1,  2,  3,  4,  5,  6,  7,  8,  9,  9,  9, 10, 10, 11, 11, 12,&
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 23, 24, 25, 25, 26,&
+ 26, 27, 28, 28, 29, 29, 30, 30, 31, 31, 32, 33, 34, 35, 36, 37,&
+ 37, 38, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,&
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,&
+ 68, 69, 70, 70, 71, 71, 72, 73, 74, 75, 77, 78, 79, 80, 81, 82,&
+ 82, 83, 83, 84, 84, 85, 86, 87, 87, 88, 88, 89, 89, 90, 90, 91,&
+ 92, 93, 93, 94, 94, 95, 95, 95, 96, 96, 97, 97, 97, 98, 98, 99,&
+100,100,101,101,102,103,103,104,104,105,105,106,106,107,108,109,&
+109,110,111,113,114,114,117,117,118,119,120,121,122,124,125,125,&
+126,126,127,128,128,129,129,130,130,131,131,132,133,133,134,135,&
+135,136,136,137,137,138,138,138,139,139,140,140,141,141,142,143,&
+144,145,145,145,146,147,148,148,149,150,150, 26, 28, 29, 86, 94,&
+ 95,142/)
+
+CHARACTER(LEN=4), DIMENSION(N_CB6) :: CMECH_NAM_CB6=(/&
+'ISOP','TERP','TERP','TERP','TERP','TERP','TERP','TERP','PAR ','XYL ','OLE ','PAR ','XYL ','PAR ','XYL ','TERP',&
+'TERP','TERP','TERP','TERP','TERP','TERP','TERP','TERP','TERP','TERP','PAR ','NR  ','TERP','PAR ','NR  ','PAR ',&
+'NR  ','TERP','PAR ','NR  ','PAR ','NR  ','PAR ','NR  ','PAR ','NR  ','TERP','TERP','TERP','TERP','TERP','TERP',&
+'NR  ','PAR ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ',&
+'NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ','NR  ',&
+'NR  ','NR  ','PAR ','NR  ','OLE ','PAR ','MEOH','ACET','CH4 ','NH3 ','NO  ','ALD2','ETOH','NR  ','FORM','PAR ',&
+'NR  ','ALDX','PAR ','FORM','PAR ','TOL ','PAR ','ALDX','PAR ','OLE ','PAR ','TERP','NR  ','ALDX','PAR ','PAR ',&
+'PAR ','TOL ','NR  ','PAR ','ALDX','IOLE','PAR ','NR  ','ALDX','PAR ','PAR ','IOLE','ALDX','ALDX','PAR ','PAR ',&
+'PAR ','OLE ','PAR ','ALDX','PAR ','TOL ','ALDX','FORM','ALDX','TERP','NR  ','PAR ','OLE ','TOL ','CO  ','OLE ',&
+'PAR ','ETHA','ETH ','PRPA','OLE ','PAR ','PAR ','OLE ','PAR ','PAR ','NR  ','NR  ','NR  ','PAR ','PAR ','OLE ',&
+'PAR ','OLE ','TERP','TOL ','NR  ','TOL ','NR  ','TERP','NR  ','TERP','NR  ','NR  ','ALDX','PAR ','PAR ','IOLE',&
+'ALDX','IOLE','ALDX','PAR ','IOLE','PAR ','IOLE','NR  ','TERP','NR  ','TERP','NR  ','ALDX','PAR ','PAR ','TOL ',&
+'TERP','TOL ','PAR ','NR  ','TERP','TOL ','XYL ','PAR ','TERP','XYL ','PAR ','KET ','KET ','KET ','KET ','KET ',&
+'KET ','KET '/)
+
+INTEGER, DIMENSION(N_CB6) :: NMECH_MAP_CB6=(/&
+ 1, 2, 2, 2, 2, 2, 2, 2, 3, 4, 5, 3, 4, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 6, 2, 3, 6, 3,&
+ 6, 2, 3, 6, 3, 6, 3, 6, 3, 6, 2, 2, 2, 2, 2, 2, 6, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,&
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 3, 6, 5, 3, 7,23, 8, 9,10,11,12, 6,13, 3,&
+ 6,14, 3,13, 3,15, 3,14, 3, 5, 3, 2, 6,14, 3, 3, 3,15, 6, 3,14,16, 3, 6,14, 3, 3,16,14,14, 3, 3,&
+ 3, 5, 3,14, 3,15,14,13,14, 2, 6, 3, 5,15,17, 5, 3,18,19,21, 5, 3, 3, 5, 3, 3, 6, 6, 6, 3, 3, 5,&
+ 3, 5, 2,15, 6,15, 6, 2, 6, 2, 6, 6,14, 3, 3,16,14,16,14, 3,16, 3,16, 6, 2, 6, 2, 6,14, 3, 3,15,&
+ 2,15, 3, 6, 2,15, 4, 3, 2, 4, 3,24,24,24,24,24,24,24/)
+
+REAL, DIMENSION(N_CB6)  :: XCONV_FAC_CB6=(/&
+  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1., 0.5,  2.,  1.,  2.,  1.,  1.,&
+  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  9.,  1.,  1.,  8.,  2.,  7.,&
+  2.,  1.,  8.,  1.,  8.,  1.,  9.,  1.,  8.,  2.,  1.,  1.,  1.,  1.,  1.,  1.,&
+  3.,  6.,  6., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15.,&
+ 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15., 15.,&
+ 15., 15., 13.,  2.,  1.,  3.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,&
+  1.,  1.,  3.,  1.,  4.,  1.,  3.,  1.,  8.,  1., 10.,  1.,  3.,  1.,  5.,  7.,&
+  6.,  1.,  1.,  5.,  1.,  1.,  7.,  1.,  1.,  7.,  3.,  1.,  1.,  1.,  6.,  8.,&
+  6.,  1.,  3.,  1.,  5.,  1., 0.5,  1.,  1.,  1.,  2., 12.,  1.,  1.,  1.,  1.,&
+  2.,  1.,  1.,  1.,  1.,  1.,  2.,  2.,  2.,  2.,  1.,  1.,  1.,  1.,  2.,  1.,&
+  4.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  3., 16.,  1.,  4.,  6.,  1.,&
+  1.,  1.,  1.,  2.,  1.,  3.,  1.,  1.,  1.,  3.,  1.,  3.,  1.,  3.,  6.,  1.,&
+  1.,  1.,  1.,  1.,  1.,  1.,  1.,  2.,  1.,  1.,  2.,  1.,  1.,  1.,  1.,  1.,&
+  1.,  1./)
+
+
+!****************************************************************************************************************
+!****************************************************************************************************************
+
+INTEGER, PARAMETER :: N_SAPRCII_SPC = 31  ! Number of mechanism species
+
+CHARACTER(LEN=8), PARAMETER, DIMENSION(N_SAPRCII_SPC) :: CMECH_SPC_SAPRCII=(/&  ! Mechanism species name
+'ISOPRENE','TRP1    ','BCARL   ','AHUMUL  ','SSQT    ','MEOH    ','ACET    ','CH4     ',&
+'NO      ','NO2     ','NH3     ','CCHO    ','HCOOH   ','HCHO    ','CCO_OH  ','BALD    ',&
+'MEK     ','RCO_OH  ','CO      ','ETHENE  ','ALK1    ','ALK2    ','ALK3    ','ALK4    ',&
+'ALK5    ','ARO1    ','ARO2    ','OLE1    ','OLE2    ','RCHO    ','NONR    '/)
+
+REAL, PARAMETER, DIMENSION(N_SAPRCII_SPC) :: XMECH_MWT_SAPRCII=(/&  ! Mechanism species mol. wt.
+ 68.0,136.0,204.0,204.0,204.0, 32.0, 58.0, 16.0, 30.0,44.01, 17.0, 44.0, 46.0, 30.0, 60.0,106.0,&
+ 72.0, 74.0, 28.0, 28.0, 30.1, 36.7, 58.6, 77.6,118.9, 98.6,118.7, 72.3, 75.8, 58.0,  1.0/)
+
+
+INTEGER, PARAMETER :: N_SAPRCII = 150        ! Number of map species
+
+CHARACTER(LEN=17), PARAMETER, DIMENSION(N_SAPRCII) :: CSPMH_NAM_SAPRCII=(/&   ! speciated species name
+'isoprene         ','myrcene          ','sabinene         ','limonene         ','carene_3         ','ocimene_t_b      ',&
+'pinene_b         ','pinene_a         ','A_2met_styrene   ','cymene_p         ','cymene_o         ','phellandrene_a   ',&
+'thujene_a        ','terpinene_a      ','terpinene_g      ','terpinolene      ','phellandrene_b   ','camphene         ',&
+'bornene          ','fenchene_a       ','ocimene_al       ','ocimene_c_b      ','tricyclene       ','estragole        ',&
+'camphor          ','fenchone         ','piperitone       ','thujone_a        ','thujone_b        ','cineole_1_8      ',&
+'borneol          ','linalool         ','terpineol_4      ','terpineol_a      ','linalool_OXD_c   ','linalool_OXD_t   ',&
+'ionone_b         ','bornyl_ACT       ','farnescene_a     ','caryophyllene_b  ','acoradiene       ','aromadendrene    ',&
+'bergamotene_a    ','bergamotene_b    ','bisabolene_a     ','bisabolene_b     ','bourbonene_b     ','cadinene_d       ',&
+'cadinene_g       ','cedrene_a        ','copaene_a        ','cubebene_a       ','cubebene_b       ','elemene_b        ',&
+'farnescene_b     ','germacrene_B     ','germacrene_D     ','gurjunene_b      ','humulene_a       ','humulene_g       ',&
+'isolongifolene   ','longifolene      ','longipinene      ','muurolene_a      ','muurolene_g      ','selinene_b       ',&
+'selinene_d       ','nerolidol_c      ','nerolidol_t      ','cedrol           ','MBO_2m3e2ol      ','methanol         ',&
+'acetone          ','methane          ','ammonia          ','nitrous_OXD      ','nitric_OXD       ','acetaldehyde     ',&
+'ethanol          ','formic_acid      ','formaldehyde     ','acetic_acid      ','MBO_3m2e1ol      ','MBO_3m3e1ol      ',&
+'benzaldehyde     ','butanone_2       ','decanal          ','dodecene_1       ','geranyl_acetone  ','heptanal         ',&
+'heptane          ','hexane           ','met_benzoate     ','met_heptenone    ','neryl_acetone    ','nonanal          ',&
+'nonenal          ','octanal          ','octanol          ','octenol_1e3ol    ','oxopentanal      ','pentane          ',&
+'phenyl_CCO       ','pyruvic_acid     ','terpinyl_ACT_a   ','tetradecene_1    ','toluene          ','carbon_monoxide  ',&
+'butene           ','ethane           ','ethene           ','hydrogen_cyanide ','propane          ','propene          ',&
+'carbon_2s        ','carbonyl_s       ','diallyl_2s       ','A_2met_2s        ','A_2met_s         ','met_chloride     ',&
+'met_bromide      ','met_iodide       ','hydrogen_s       ','met_mercaptan    ','met_propenyl_2s  ','PPPP_2s          ',&
+'A_2met_nonatriene','met_salicylate   ','indole           ','jasmone          ','met_jasmonate    ','A_3met_3DCTT     ',&
+'hexanal          ','hexanol_1        ','hexenal_c3       ','hexenal_t2       ','hexenol_c3       ','hexenyl_ACT_c3   ',&
+'homosalate       ','Ehsalate         ','pentanal         ','heptanone        ','anisole          ','verbenene        ',&
+'benzyl-acetate   ','myrtenal         ','benzyl-alcohol   ','meta-cymenene    ','ipsenol          ','Napthalene       '/)
+
+INTEGER, PARAMETER, DIMENSION(N_SAPRCII) :: NSPMH_MAP_SAPRCII=(/&   ! speciated species name
+  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,&
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,&
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,&
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,&
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,&
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,&
+ 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,112,&
+113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,&
+129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,&
+145,146,147,148,149,150/)
+
+CHARACTER(LEN=8), PARAMETER, DIMENSION(N_SAPRCII) :: CMECH_NAM_SAPRCII=(/&   ! mechanism species
+'ISOPRENE','TRP1g   ','TRP1g   ','TRP1g   ','TRP1g   ','TRP1g   ','TRP1g   ','TRP1g   ',&
+'OLE2g   ','ARO2g   ','ARO2g   ','TRP1g   ','TRP1g   ','TRP1g   ','TRP1g   ','TRP1g   ',&
+'TRP1g   ','TRP1g   ','TRP1g   ','TRP1g   ','TRP1g   ','TRP1g   ','ALK5g   ','TRP1g   ',&
+'TRP1g   ','ALK5g   ','TRP1g   ','ALK5g   ','ALK5g   ','ALK5g   ','ALK5g   ','TRP1g   ',&
+'TRP1g   ','TRP1g   ','TRP1g   ','TRP1g   ','SSQTg   ','ALK5g   ','AHUMULg ','BCARLg  ',&
+'SSQTg   ','SSQTg   ','SSQTg   ','SSQTg   ','AHUMULg ','SSQTg   ','SSQTg   ','SSQTg   ',&
+'SSQTg   ','SSQTg   ','SSQTg   ','SSQTg   ','SSQTg   ','SSQTg   ','AHUMULg ','AHUMULg ',&
+'SSQTg   ','SSQTg   ','AHUMULg ','AHUMULg ','SSQTg   ','SSQTg   ','SSQTg   ','SSQTg   ',&
+'SSQTg   ','SSQTg   ','SSQTg   ','SSQTg   ','SSQTg   ','ALK5g   ','ISOPRENE','MEOHg   ',&
+'ACETg   ','CH4g    ','NH3g    ','NONRg   ','NOg     ','CCHOg   ','ALK3g   ','HCOOHg  ',&
+'HCHOg   ','CCO_OHg ','ISOPRENE','ISOPRENE','BALDg   ','MEKg    ','RCHOg   ','OLE1g   ',&
+'SSQTg   ','RCHOg   ','ALK5g   ','ALK4g   ','ARO1g   ','OLE2g   ','OLE2g   ','RCHOg   ',&
+'OLE1g   ','RCHOg   ','ALK5g   ','OLE1g   ','RCHOg   ','ALK4g   ','ARO1g   ','RCO_OHg ',&
+'TRP1g   ','OLE1g   ','ARO1g   ','COg     ','OLE1g   ','ALK1g   ','ETHENEg ','NONRg   ',&
+'ALK2g   ','OLE1g   ','NONRg   ','NONRg   ','OLE1g   ','ALK5g   ','ALK4g   ','NONRg   ',&
+'NONRg   ','NONRg   ','NONRg   ','ALK5g   ','OLE1g   ','OLE1g   ','TRP1g   ','ARO1g   ',&
+'ARO2g   ','TRP1g   ','SSQTg   ','AHUMULg ','RCHOg   ','ALK5g   ','OLE2g   ','OLE2g   ',&
+'OLE2g   ','OLE2g   ','SSQTg   ','SSQTg   ','RCHOg   ','OLE2g   ','BALD    ','ARO2g   ',&
+'BALDg   ','TRP1g   ','BALDg   ','ARO2g   ','TRP1g   ','ARO2g   '/)
+
+INTEGER, PARAMETER, DIMENSION(N_SAPRCII) :: NMECH_MAP_SAPRCII=(/&   ! mechanism species mapped
+ 1, 2, 2, 2, 2, 2, 2, 2,29,27,27, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,25, 2, 2,25, 2,25,25,25,25, 2,&
+ 2, 2, 2, 2, 5,25, 4, 3, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 5, 5, 4, 4, 5, 5, 5, 5,&
+ 5, 5, 5, 5, 5,25, 1, 6, 7, 8,11,31, 9,12,23,13,14,15, 1, 1,16,17,30,28, 5,30,25,24,26,29,29,30,&
+28,30,25,28,30,24,26,18, 2,28,26,19,28,21,20,31,22,28,31,31,28,25,24,31,31,31,31,25,28,28, 2,26,&
+27, 2, 5, 4,30,25,29,29,29,29, 5, 5,30,29,16,27,16, 2,16,27, 2,27/)
+
+                            ! to SPC_SAPRCII.EXT
+REAL, PARAMETER, DIMENSION(N_SAPRCII) :: XCONV_FAC_SAPRCII=(/&   ! conversion factor
+1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,&
+1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,&
+1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,&
+1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,&
+1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1./)
+
+!****************************************************************************************************************
+!****************************************************************************************************************
+
+INTEGER, PARAMETER :: N_RADM2_SPC = 21    ! Number of mechanism species
+
+CHARACTER(LEN=4), PARAMETER, DIMENSION(N_RADM2_SPC) :: CMECH_SPC_RADM2=(/&  ! Mechanism species name
+'ISO ','CH4 ','ETH ','HC3 ','HC5 ','HC8 ','OL2 ','OLI ','OLT ','ALD ',&
+'KET ','TOL ','HCHO','ORA1','ORA2','CO  ','SO2 ','NO  ','HNO3','NO2 ',&
+'NR  '/)
+
+REAL, PARAMETER, DIMENSION(N_RADM2_SPC) ::  XMECH_MWT_RADM2=(/&  ! Mechanism species mol. wt.
+  68.,  16.,  30.,  44.,  72., 114.,  28.,  56.,  42.,  44.,  72.,  92.,  30.,  46.,  60.,  28.,&
+  64.,  30.,  63.,  46.,   1./)
+
+INTEGER,PARAMETER :: N_RADM2 = 177        ! Number of map species
+
+CHARACTER(LEN=17), PARAMETER, DIMENSION(N_RADM2) :: CSPMH_NAM_RADM2=(/&   ! speciated species name
+'isoprene         ','myrcene          ','A_myrcene        ','sabinene         ','limonene         ','A_limonene       ',&
+'carene_3         ','ocimene_t_b      ','ocimene_t_b      ','pinene_b         ','pinene_a         ','A_2met_styrene   ',&
+'cymene_p         ','cymene_o         ','phellandrene_a   ','thujene_a        ','terpinene_a      ','terpinene_g      ',&
+'terpinolene      ','phellandrene_b   ','phellandrene_b   ','camphene         ','bornene          ','fenchene_a       ',&
+'ocimene_al       ','ocimene_c_b      ','ocimene_c_b      ','tricyclene       ','estragole        ','camphor          ',&
+'fenchone         ','piperitone       ','thujone_a        ','thujone_b        ','cineole_1_8      ','borneol          ',&
+'linalool         ','linalool         ','terpineol_4      ','terpineol_a      ','linalool_OXD_c   ','linalool_OXD_t   ',&
+'ionone_b         ','bornyl_ACT       ','farnescene_a     ','farnescene_a     ','caryophyllene_b  ','caryophyllene_b  ',&
+'acoradiene       ','acoradiene       ','aromadendrene    ','bergamotene_a    ','bergamotene_b    ','bergamotene_b    ',&
+'bisabolene_a     ','bisabolene_b     ','bisabolene_b     ','bourbonene_b     ','cadinene_d       ','cadinene_g       ',&
+'cadinene_g       ','cedrene_a        ','copaene_a        ','cubebene_a       ','cubebene_b       ','elemene_b        ',&
+'farnescene_b     ','farnescene_b     ','germacrene_B     ','germacrene_D     ','germacrene_D     ','gurjunene_b      ',&
+'humulene_a       ','humulene_g       ','isolongifolene   ','longifolene      ','longipinene      ','muurolene_a      ',&
+'muurolene_g      ','muurolene_g      ','selinene_b       ','selinene_d       ','nerolidol_c      ','nerolidol_c      ',&
+'nerolidol_t      ','nerolidol_t      ','cedrol           ','MBO_2m3e2ol      ','methanol         ','acetone          ',&
+'methane          ','ammonia          ','nitrous_OXD      ','nitric_OXD       ','acetaldehyde     ','ethanol          ',&
+'formic_acid      ','formaldehyde     ','acetic_acid      ','MBO_3m2e1ol      ','MBO_3m3e1ol      ','benzaldehyde     ',&
+'butanone_2       ','decanal          ','dodecene_1       ','geranyl_acetone  ','heptanal         ','heptane          ',&
+'hexane           ','met_benzoate     ','met_heptenone    ','neryl_acetone    ','nonanal          ','nonenal          ',&
+'nonenal          ','octanal          ','octanol          ','octenol_1e3ol    ','oxopentanal      ','pentane          ',&
+'phenyl_CCO       ','pyruvic_acid     ','terpinyl_ACT_a   ','tetradecene_1    ','toluene          ','carbon_monoxide  ',&
+'butene           ','ethane           ','ethene           ','hydrogen_cyanide ','propane          ','propene          ',&
+'carbon_2s        ','carbonyl_s       ','diallyl_2s       ','diallyl_2s       ','A_2met_2s        ','A_2met_2s        ',&
+'A_2met_s         ','A_2met_s         ','met_chloride     ','met_bromide      ','met_iodide       ','hydrogen_s       ',&
+'met_mercaptan    ','met_mercaptan    ','met_propenyl_2s  ','met_propenyl_2s  ','PPPP_2s          ','PPPP_2s          ',&
+'A_2met_nonatriene','A_2met_nonatriene','met_salicylate   ','indole           ','indole           ','jasmone          ',&
+'met_jasmonate    ','A_3met_3DCTT     ','A_3met_3DCTT     ','hexanal          ','hexanol_1        ','hexenal_c3       ',&
+'hexenal_t2       ','hexenol_c3       ','hexenyl_ACT_c3   ','homosalate       ','Ehsalate         ','pentanal         ',&
+'heptanone        ','anisole          ','verbenene        ','benzyl-acetate   ','myrtenal         ','benzyl-alcohol   ',&
+'meta-cymenene    ','ipsenol          ','Napthalene       '/)
+
+INTEGER, PARAMETER, DIMENSION(N_RADM2) :: NSPMH_MAP_RADM2=(/&   ! speciated species name
+  1,  2,  2,  3,  4,  4,  5,  6,  6,  7,  8,  9, 10, 11, 12, 13,&
+ 14, 15, 16, 17, 17, 18, 19, 20, 21, 22, 22, 23, 24, 25, 26, 27,&
+ 28, 29, 30, 31, 32, 32, 33, 34, 35, 36, 37, 38, 39, 39, 40, 40,&
+ 41, 41, 42, 43, 44, 44, 45, 46, 46, 47, 48, 49, 49, 50, 51, 52,&
+ 53, 54, 55, 55, 56, 57, 57, 58, 59, 60, 61, 62, 63, 64, 65, 65,&
+ 66, 67, 68, 68, 69, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,&
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,&
+ 96, 97, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,&
+111,112,113,114,115,116,117,117,118,118,119,119,120,121,122,123,&
+124,124,125,125,126,126,127,127,128,129,129,130,131,132,132,133,&
+134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,&
+150/)
+
+                            ! mapped to SPC_SPCAT.EXT
+CHARACTER(LEN=4), PARAMETER, DIMENSION(N_RADM2) :: CMECH_NAM_RADM2=(/&   ! mechanism species
+'ISO ','OLT ','OLI ','OLT ','OLT ','OLI ','OLI ','OLT ','OLI ','OLT ','OLI ','TOL ','TOL ','TOL ','OLI ','OLI ',&
+'OLI ','OLI ','OLI ','OLT ','OLI ','OLT ','OLI ','OLT ','OLI ','OLT ','OLI ','NR  ','OLT ','HC8 ','NR  ','OLT ',&
+'NR  ','NR  ','HC8 ','NR  ','OLT ','OLI ','OLI ','OLI ','OLT ','OLT ','OLI ','NR  ','OLT ','OLI ','OLT ','OLI ',&
+'OLT ','OLI ','OLT ','OLI ','OLT ','OLI ','OLI ','OLT ','OLI ','OLT ','OLI ','OLT ','OLI ','OLI ','OLI ','OLI ',&
+'OLT ','OLT ','OLT ','OLI ','OLI ','OLT ','OLI ','OLI ','OLI ','OLI ','OLI ','OLT ','OLI ','OLI ','OLT ','OLI ',&
+'OLT ','OLI ','OLT ','OLI ','OLT ','OLI ','NR  ','ISO ','HC3 ','KET ','CH4 ','NR  ','NO2 ','NO  ','ALD ','HC3 ',&
+'ORA1','HCHO','ORA2','ISO ','ISO ','NR  ','KET ','ALD ','OLT ','OLI ','ALD ','HC5 ','HC5 ','HC8 ','OLI ','OLI ',&
+'ALD ','ALD ','HC8 ','ALD ','HC8 ','OLT ','ALD ','HC5 ','NR  ','ORA2','OLI ','OLT ','TOL ','CO  ','OLT ','ETH ',&
+'OL2 ','NR  ','HC3 ','OLT ','NR  ','NR  ','OLI ','SO2 ','ETH ','SO2 ','ETH ','SO2 ','NR  ','NR  ','NR  ','SO2 ',&
+'CH4 ','SO2 ','OLI ','SO2 ','OLI ','SO2 ','OLT ','OLI ','HC8 ','HC8 ','HNO3','OLI ','OLI ','OLT ','OLI ','ALD ',&
+'HC5 ','OLI ','OLI ','OLT ','OLI ','OLI ','OLI ','ALD ','OLI ','NR  ','TOL ','NR  ','OLT ','NR  ','TOL ','OLT ',&
+'HC8 '/)
+
+INTEGER, PARAMETER, DIMENSION(N_RADM2) :: NMECH_MAP_RADM2=(/&   ! mechanism species mapped
+ 1, 9, 8, 9, 9, 8, 8, 9, 8, 9, 8,12,12,12, 8, 8, 8, 8, 8, 9, 8, 9, 8, 9, 8, 9, 8,21, 9, 6,21, 9,&
+21,21, 6,21, 9, 8, 8, 8, 9, 9, 8,21, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 8, 9, 8, 9, 8, 9, 8, 8, 8, 8,&
+ 9, 9, 9, 8, 8, 9, 8, 8, 8, 8, 8, 9, 8, 8, 9, 8, 9, 8, 9, 8, 9, 8,21, 1, 4,11, 2,21,20,18,10, 4,&
+14,13,15, 1, 1,21,11,10, 9, 8,10, 5, 5, 6, 8, 8,10,10, 6,10, 6, 9,10, 5,21,15, 8, 9,12,16, 9, 3,&
+ 7,21, 4, 9,21,21, 8,17, 3,17, 3,17,21,21,21,17, 2,17, 8,17, 8,17, 9, 8, 6, 6,19, 8, 8, 9, 8,10,&
+ 5, 8, 8, 9, 8, 8, 8,10, 8,21,12,21, 9,21,12, 9, 6/)
+
+                            ! to SPC_RADM2.EXT
+REAL, PARAMETER, DIMENSION(N_RADM2) :: XCONV_FAC_RADM2=(/&   ! conversion factor
+   1.,  0.5,  0.5,   1.,  0.5,  0.5,   1.,  0.5,  0.5,   1.,   1.,   1.,   1.,   1.,   1.,   1.,&
+   1.,   1.,   1.,  0.5,  0.5,   1.,   1.,   1.,   1.,  0.5,  0.5,   1.,   1.,0.388,   1.,   1.,&
+   1.,   1.,0.755,   1.,  0.5,  0.5,   1.,   1.,   1.,   1.,   1.,   1.,  0.5,  0.5,  0.5,  0.5,&
+  0.5,  0.5,   1.,   1.,  0.5,  0.5,   1.,  0.5,  0.5,   1.,   1.,  0.5,  0.5,   1.,   1.,   1.,&
+   1.,   1.,  0.5,  0.5,   1.,  0.5,  0.5,   1.,   1.,   1.,   1.,   1.,   1.,   1.,  0.5,  0.5,&
+   1.,   1.,  0.5,  0.5,  0.5,  0.5,   1.,   1.,0.402,0.253,   1.,   1.,   1.,   1.,   1.,1.198,&
+   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,1.226,1.049,   1.,   1.,   1.,&
+   1.,   1.,   1.,   1.,1.119,   1.,   1.,0.847,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,&
+   1.,   1.,0.519,   1.,   1.,   1.,   1.,   2.,   1.,   2.,   1.,   1.,   1.,   1.,   1.,   1.,&
+   1.,   1.,   1.,   2.,   1.,   2.,  0.5,  0.5,   1.,1.238,   1.,   1.,   1.,  0.5,  0.5,   1.,&
+1.697,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,&
+   1./)
+
+!****************************************************************************************************************
+!****************************************************************************************************************
+
+   INTEGER, PARAMETER :: N_RACM_SPC = 23     ! Number of mechanism species
+
+CHARACTER(LEN=4), PARAMETER, DIMENSION(N_RACM_SPC) :: CMECH_SPC_RACM=(/&  ! Mechanism species name
+'ISO ','CH4 ','ETH ','HC3 ','HC5 ','HC8 ','OL2 ','OLI ','OLT ','ALD ','KET ','TOL ','HCHO','ORA1','ORA2','API ',&
+'LIM ','CO  ','SO2 ','NO  ','HNO3','NO2 ','NR  '/)
+
+REAL, PARAMETER, DIMENSION(N_RACM_SPC) :: XMECH_MWT_RACM=(/&  ! Mechanism species mol. wt.
+  68.,  16.,  30.,  44.,  72., 114.,  28.,  68.,  42.,  44.,  72.,  92.,  30.,  46.,  60., 136.,&
+ 136.,  28.,  64.,  30.,  63.,  46.,   1./)
+
+INTEGER, PARAMETER :: N_RACM = 159        ! Number of map species
+
+CHARACTER(LEN=17), PARAMETER, DIMENSION(N_RACM) :: CSPMH_NAM_RACM=(/&   ! speciated species name
+'isoprene         ','myrcene          ','sabinene         ','limonene         ','carene_3         ','ocimene_t_b      ',&
+'pinene_b         ','pinene_a         ','A_2met_styrene   ','cymene_p         ','cymene_o         ','phellandrene_a   ',&
+'thujene_a        ','terpinene_a      ','terpinene_g      ','terpinolene      ','phellandrene_b   ','camphene         ',&
+'bornene          ','fenchene_a       ','ocimene_al       ','ocimene_c_b      ','tricyclene       ','estragole        ',&
+'camphor          ','fenchone         ','piperitone       ','thujone_a        ','thujone_b        ','cineole_1_8      ',&
+'borneol          ','linalool         ','terpineol_4      ','terpineol_a      ','linalool_OXD_c   ','linalool_OXD_t   ',&
+'ionone_b         ','bornyl_ACT       ','farnescene_a     ','caryophyllene_b  ','acoradiene       ','aromadendrene    ',&
+'bergamotene_a    ','bergamotene_b    ','bisabolene_a     ','bisabolene_b     ','bourbonene_b     ','cadinene_d       ',&
+'cadinene_g       ','cedrene_a        ','copaene_a        ','cubebene_a       ','cubebene_b       ','elemene_b        ',&
+'farnescene_b     ','germacrene_B     ','germacrene_D     ','gurjunene_b      ','humulene_a       ','humulene_g       ',&
+'isolongifolene   ','longifolene      ','longipinene      ','muurolene_a      ','muurolene_g      ','selinene_b       ',&
+'selinene_d       ','nerolidol_c      ','nerolidol_t      ','cedrol           ','MBO_2m3e2ol      ','methanol         ',&
+'acetone          ','methane          ','ammonia          ','nitrous_OXD      ','nitric_OXD       ','acetaldehyde     ',&
+'ethanol          ','formic_acid      ','formaldehyde     ','acetic_acid      ','MBO_3m2e1ol      ','MBO_3m3e1ol      ',&
+'benzaldehyde     ','butanone_2       ','decanal          ','dodecene_1       ','geranyl_acetone  ','heptanal         ',&
+'heptane          ','hexane           ','met_benzoate     ','met_heptenone    ','neryl_acetone    ','nonanal          ',&
+'nonenal          ','nonenal          ','octanal          ','octanol          ','octenol_1e3ol    ','oxopentanal      ',&
+'pentane          ','phenyl_CCO       ','pyruvic_acid     ','terpinyl_ACT_a   ','tetradecene_1    ','toluene          ',&
+'carbon_monoxide  ','butene           ','ethane           ','ethene           ','hydrogen_cyanide ','propane          ',&
+'propene          ','carbon_2s        ','carbonyl_s       ','diallyl_2s       ','diallyl_2s       ','A_2met_2s        ',&
+'A_2met_2s        ','A_2met_s         ','A_2met_s         ','met_chloride     ','met_bromide      ','met_iodide       ',&
+'hydrogen_s       ','met_mercaptan    ','met_mercaptan    ','met_propenyl_2s  ','met_propenyl_2s  ','PPPP_2s          ',&
+'PPPP_2s          ','A_2met_nonatriene','met_salicylate   ','indole           ','indole           ','jasmone          ',&
+'met_jasmonate    ','A_3met_3DCTT     ','A_3met_3DCTT     ','hexanal          ','hexanol_1        ','hexenal_c3       ',&
+'hexenal_t2       ','hexenol_c3       ','hexenyl_ACT_c3   ','homosalate       ','Ehsalate         ','pentanal         ',&
+'heptanone        ','anisole          ','verbenene        ','benzyl-acetate   ','myrtenal         ','benzyl-alcohol   ',&
+'meta-cymenene    ','ipsenol          ','Napthalene       '/)
+
+
+INTEGER, PARAMETER, DIMENSION(N_RACM) :: NSPMH_MAP_RACM=(/&   ! speciated species name
+  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,&
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,&
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,&
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,&
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,&
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,&
+ 97, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,&
+112,113,114,115,116,117,117,118,118,119,119,120,121,122,123,124,&
+124,125,125,126,126,127,128,129,129,130,131,132,132,133,134,135,&
+136,137,138,139,140,141,142,143,144,145,146,147,148,149,150/)
+
+                            ! mapped to SPC_SPCAT.EXT
+CHARACTER(LEN=4), PARAMETER, DIMENSION(N_RACM) :: CMECH_NAM_RACM=(/&   ! mechanism species
+'ISO ','LIM ','API ','LIM ','API ','LIM ','API ','API ','LIM ','LIM ','LIM ','LIM ','API ','LIM ','LIM ','LIM ',&
+'LIM ','API ','API ','API ','LIM ','LIM ','NR  ','LIM ','HC8 ','NR  ','API ','NR  ','NR  ','HC8 ','NR  ','LIM ',&
+'API ','API ','LIM ','LIM ','LIM ','NR  ','LIM ','LIM ','LIM ','API ','LIM ','LIM ','LIM ','LIM ','API ','LIM ',&
+'LIM ','API ','API ','API ','API ','LIM ','LIM ','LIM ','LIM ','API ','LIM ','LIM ','API ','API ','API ','LIM ',&
+'LIM ','LIM ','LIM ','LIM ','LIM ','NR  ','ISO ','HC3 ','KET ','CH4 ','NR  ','NO2 ','NO  ','ALD ','HC3 ','ORA1',&
+'HCHO','ORA2','ISO ','ISO ','NR  ','KET ','ALD ','OLT ','LIM ','ALD ','HC5 ','HC5 ','HC8 ','OLI ','OLI ','ALD ',&
+'HC8 ','ALD ','ALD ','HC8 ','OLT ','ALD ','HC5 ','NR  ','ORA2','API ','OLT ','TOL ','CO  ','OLT ','ETH ','ETE ',&
+'NR  ','HC3 ','OLT ','NR  ','NR  ','OLI ','SO2 ','ETH ','SO2 ','ETH ','SO2 ','NR  ','NR  ','NR  ','SO2 ','CH4 ',&
+'SO2 ','OLI ','SO2 ','OLI ','SO2 ','LIM ','HC8 ','HC8 ','HNO3','LIM ','LIM ','OLI ','OLT ','ALD ','HC5 ','OLI ',&
+'OLI ','OLT ','OLI ','LIM ','LIM ','ALD ','OLI ','NR  ','LIM ','NR  ','LIM ','NR  ','LIM ','LIM ','HC8 '/)
+
+INTEGER, PARAMETER, DIMENSION(N_RACM) :: NMECH_MAP_RACM=(/&   ! mechanism species mapped
+ 1,17,16,17,16,17,16,16,17,17,17,17,16,17,17,17,17,16,16,16,17,17,23,17, 6,23,16,23,23, 6,23,17,&
+16,16,17,17,17,23,17,17,17,16,17,17,17,17,16,17,17,16,16,16,16,17,17,17,17,16,17,17,16,16,16,17,&
+17,17,17,17,17,23, 1, 4,11, 2,23,22,20,10, 4,14,13,15, 1, 1,23,11,10, 9,17,10, 5, 5, 6, 8, 8,10,&
+ 6,10,10, 6, 9,10, 5,23,15,16, 9,12,18, 9, 3, 7,23, 4, 9,23,23, 8,19, 3,19, 3,19,23,23,23,19, 2,&
+19, 8,19, 8,19,17, 6, 6,21,17,17, 8, 9,10, 5, 8, 8, 9, 8,17,17,10, 8,23,17,23,17,23,17,17, 6/)
+
+                            ! to SPC_RACM.EXT
+REAL, PARAMETER, DIMENSION(N_RACM) :: XCONV_FAC_RACM=(/&   ! conversion factor
+   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,&
+   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1., 0.38,   1.,   1.,   1.,   1.,0.738,   1.,   1.,&
+   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,&
+   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,&
+   1.,   1.,   1.,   1.,   1.,   1.,   1., 0.49, 0.33,   1.,   1.,   1.,   1.,   1., 1.37,   1.,&
+   1.,   1.,   1.,   1.,   1., 1.61,   1.,   1.,   1.,   1.,1.236,1.058,   1.,   1.,   1.,   1.,&
+   1.,   1.,   1.,1.092,   1.,   1.,0.854,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,&
+   1., 0.57,   1.,   1.,   1.,   1.,   2.,   1.,   2.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,&
+   1.,   1.,   2.,   1.,   2.,   1.,   1.,1.201,   1.,   1.,   1.,  0.5,  0.5,   1., 1.71,   1.,&
+   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1.,   1./)
+
+
+!****************************************************************************************************************
+!****************************************************************************************************************
+
+INTEGER, PARAMETER :: N_CBMZ_SPC = 23     ! Number of mechanism species
+
+CHARACTER(LEN=5), PARAMETER, DIMENSION(N_CBMZ_SPC) :: CMECH_SPC_CBMZ=(/&  ! Mechanism species name
+'ISOP ','NO   ','NO2  ','CO   ','CH3OH','ANOL ','ALD2 ','HCHO ','HCOOH','RCOOH','CH4  ','C2H6 ','PAR  ','ETH  ','OLET ','OLEI ',&
+'CRES ','AONE ','TOL  ','XYL  ','DMS  ','NH3  ','NR   '/)
+
+REAL, PARAMETER, DIMENSION(N_CBMZ_SPC) :: XMECH_MWT_CBMZ=(/&  ! Mechanism species mol. wt.
+ 68.12, 30.01, 44.01, 28.01, 32.04, 46.07, 44.05, 30.03, 46.03, 60.05, 16.04, 30.07, 13.00, 28.05, 27.00, 26.00,&
+108.14, 58.08, 92.14,106.17, 62.14, 17.03,  1.00/)
+
+INTEGER, PARAMETER :: N_CBMZ = 185        ! Number of map species
+
+CHARACTER(LEN=17), PARAMETER, DIMENSION(N_CBMZ) :: CSPMH_NAM_CBMZ=(/&   ! speciated species name
+'isoprene         ','myrcene          ','sabinene         ','limonene         ','carene_3         ','ocimene_t_b      ',&
+'pinene_b         ','pinene_a         ','A_2met_styrene   ','cymene_p         ','cymene_o         ','phellandrene_a   ',&
+'thujene_a        ','terpinene_a      ','terpinene_g      ','terpinolene      ','phellandrene_b   ','camphene         ',&
+'bornene          ','fenchene_a       ','ocimene_al       ','ocimene_c_b      ','tricyclene       ','estragole        ',&
+'camphor          ','fenchone         ','piperitone       ','thujone_a        ','thujone_b        ','cineole_1_8      ',&
+'borneol          ','linalool         ','terpineol_4      ','terpineol_a      ','linalool_OXD_c   ','linalool_OXD_t   ',&
+'ionone_b         ','bornyl_ACT       ','farnescene_a     ','caryophyllene_b  ','acoradiene       ','aromadendrene    ',&
+'bergamotene_a    ','bergamotene_b    ','bisabolene_a     ','bisabolene_b     ','bourbonene_b     ','cadinene_d       ',&
+'cadinene_g       ','cedrene_a        ','copaene_a        ','cubebene_a       ','cubebene_b       ','elemene_b        ',&
+'farnescene_b     ','germacrene_B     ','germacrene_D     ','gurjunene_b      ','humulene_a       ','humulene_g       ',&
+'isolongifolene   ','longifolene      ','longipinene      ','muurolene_a      ','muurolene_g      ','selinene_b       ',&
+'selinene_d       ','nerolidol_c      ','nerolidol_t      ','cedrol           ','MBO_2m3e2ol      ','MBO_2m3e2ol      ',&
+'methanol         ','acetone          ','methane          ','ammonia          ','nitrous_OXD      ','nitric_OXD       ',&
+'acetaldehyde     ','ethanol          ','formic_acid      ','formaldehyde     ','acetic_acid      ','MBO_3m2e1ol      ',&
+'MBO_3m2e1ol      ','MBO_3m3e1ol      ','MBO_3m3e1ol      ','benzaldehyde     ','butanone_2       ','butanone_2       ',&
+'decanal          ','decanal          ','dodecene_1       ','dodecene_1       ','geranyl_acetone  ','heptanal         ',&
+'heptanal         ','heptane          ','hexane           ','met_benzoate     ','met_heptenone    ','met_heptenone    ',&
+'met_heptenone    ','neryl_acetone    ','neryl_acetone    ','neryl_acetone    ','nonanal          ','nonanal          ',&
+'nonenal          ','nonenal          ','nonenal          ','octanal          ','octanal          ','octanol          ',&
+'octenol_1e3ol    ','octenol_1e3ol    ','oxopentanal      ','oxopentanal      ','pentane          ','phenyl_CCO       ',&
+'phenyl_CCO       ','pyruvic_acid     ','pyruvic_acid     ','terpinyl_ACT_a   ','tetradecene_1    ','tetradecene_1    ',&
+'toluene          ','carbon_monoxide  ','butene           ','butene           ','ethane           ','ethene           ',&
+'hydrogen_cyanide ','propane          ','propene          ','propene          ','carbon_2s        ','carbonyl_s       ',&
+'diallyl_2s       ','diallyl_2s       ','diallyl_2s       ','A_2met_2s        ','A_2met_s         ','met_chloride     ',&
+'met_bromide      ','met_iodide       ','hydrogen_s       ','met_mercaptan    ','met_propenyl_2s  ','met_propenyl_2s  ',&
+'PPPP_2s          ','PPPP_2s          ','PPPP_2s          ','A_2met_nonatriene','met_salicylate   ','indole           ',&
+'jasmone          ','met_jasmonate    ','A_3met_3DCTT     ','hexanal          ','hexanal          ','hexanol_1        ',&
+'hexenal_c3       ','hexenal_c3       ','hexenal_c3       ','hexenal_t2       ','hexenal_t2       ','hexenal_t2       ',&
+'hexenol_c3       ','hexenol_c3       ','hexenyl_ACT_c3   ','hexenyl_ACT_c3   ','hexenyl_ACT_c3   ','homosalate       ',&
+'Ehsalate         ','pentanal         ','heptanone        ','anisole          ','verbenene        ','benzyl-acetate   ',&
+'myrtenal         ','benzyl-alcohol   ','meta-cymenene    ','ipsenol          ','Napthalene       '/)
+
+INTEGER, PARAMETER, DIMENSION(N_CBMZ) :: NSPMH_MAP_CBMZ=(/&   ! speciated species name
+  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,&
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,&
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,&
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,&
+ 65, 66, 67, 68, 69, 70, 71, 71, 72, 73, 74, 75, 76, 77, 78, 79,&
+ 80, 81, 82, 83, 83, 84, 84, 85, 86, 86, 87, 87, 88, 88, 89, 90,&
+ 90, 91, 92, 93, 94, 94, 94, 95, 95, 95, 96, 96, 97, 97, 97, 98,&
+ 98, 99,100,100,101,101,102,103,103,104,104,105,106,106,107,108,&
+109,109,110,111,112,113,114,114,115,116,117,117,117,118,119,120,&
+121,122,123,124,125,125,126,126,126,127,128,129,130,131,132,133,&
+133,134,135,135,135,136,136,136,137,137,138,138,138,139,140,141,&
+142,143,144,145,146,147,148,149,150/)
+
+                            ! mapped to SPC_SPCAT.EXT
+CHARACTER(LEN=5), PARAMETER, DIMENSION(N_CBMZ) :: CMECH_NAM_CBMZ=(/&   ! mechanism species
+'ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ',&
+'ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ',&
+'ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ',&
+'ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ',&
+'ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','ISOP ','OLET ','PAR  ','CH3OH','AONE ','CH4  ','NH3  ','NR   ','NO   ','ALD2 ','ANOL ',&
+'HCOOH','HCHO ','RCOOH','ALD2 ','PAR  ','HCHO ','PAR  ','TOL  ','AONE ','PAR  ','ALD2 ','PAR  ','OLET ','PAR  ','ISOP ','ALD2 ',&
+'PAR  ','PAR  ','PAR  ','TOL  ','AONE ','PAR  ','OLET ','AONE ','PAR  ','OLEI ','ALD2 ','PAR  ','ALD2 ','PAR  ','OLEI ','ALD2 ',&
+'PAR  ','PAR  ','PAR  ','OLET ','PAR  ','ALD2 ','PAR  ','ALD2 ','TOL  ','HCOOH','AONE ','ISOP ','PAR  ','OLET ','TOL  ','CO   ',&
+'OLET ','PAR  ','C2H6 ','ETH  ','NR   ','PAR  ','OLET ','PAR  ','NR   ','NR   ','DMS  ','PAR  ','OLET ','DMS  ','DMS  ','NR   ',&
+'NR   ','NR   ','NR   ','PAR  ','DMS  ','OLEI ','DMS  ','PAR  ','OLEI ','ISOP ','TOL  ','TOL  ','ISOP ','ISOP ','ISOP ','ALD2 ',&
+'PAR  ','PAR  ','ALD2 ','PAR  ','OLEI ','ALD2 ','PAR  ','OLEI ','PAR  ','OLEI ','AONE ','PAR  ','OLEI ','ISOP ','ISOP ','ALD2 ',&
+'AONE ','TOL  ','ISOP ','TOL  ','ISOP ','TOL  ','ISOP ','ISOP ','TOL  '/)
+
+INTEGER, PARAMETER, DIMENSION(N_CBMZ) :: NMECH_MAP_CBMZ=(/&   ! mechanism species mapped
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,&
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,&
+ 1, 1, 1, 1, 1, 1,15,13, 5,18,11,22,23, 2, 7, 6, 9, 8,10, 7,13, 8,13,19,18,13, 7,13,15,13, 1, 7,&
+13,13,13,19,18,13,15,18,13,16, 7,13, 7,13,16, 7,13,13,13,15,13, 7,13, 7,19, 9,18, 1,13,15,19, 4,&
+15,13,12,14,23,13,15,13,23,23,21,13,15,21,21,23,23,23,23,13,21,16,21,13,16, 1,19,19, 1, 1, 1, 7,&
+13,13, 7,13,16, 7,13,16,13,16,18,13,16, 1, 1, 7,18,19, 1,19, 1,19, 1, 1,19/)
+
+REAL, PARAMETER, DIMENSION(N_CBMZ) :: XCONV_FAC_CBMZ=(/&   ! conversion factor
+  1.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,&
+  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,&
+  2.,  2.,  2.,  2.,  3.,  2.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,&
+  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,&
+  3.,  3.,  3.,  3.,  3.,  3.,  1.,  3.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,&
+  1.,  1.,  1.,  1.,  3.,  1.,  4.,  1.,  1.,  1.,  1.,  8.,  1., 10.,  3.,  1.,&
+  5.,  7.,  6.,  1.,  1.,  3.,  1.,  1.,  8.,  2.,  1.,  7.,  1.,  6.,  1.,  1.,&
+  6.,  8.,  6.,  1.,  3.,  1.,  5.,  1.,  1.,  1.,  1.,  2., 12.,  1.,  1.,  1.,&
+  1.,  2.,  1.,  1.,  1.,  3.,  1.,  1.,  1.,  1.,  1.,  2.,  2.,  1.,  1.,  1.,&
+  1.,  1.,  1.,  1.,  1.,  1.,  1.,  2.,  1.,  2.,  1.,  1.,  2.,  3.,  3.,  1.,&
+  4.,  6.,  1.,  3.,  1.,  1.,  6.,  1.,  5.,  1.,  1.,  3.,  1.,  1.,  1.,  1.,&
+  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1./)
+
+!****************************************************************************************************************
+!****************************************************************************************************************
+
+INTEGER, PARAMETER :: N_SAPRC99_SPC=28
+
+CHARACTER(LEN=8), DIMENSION(N_SAPRC99_SPC) :: CMECH_SPC_SAPRC99=(/&  ! Mechanism species name
+'ISOPRENE','TRP1    ','MEOH    ','ACET    ','CH4     ','NO      ','NO2     ','NH3     ','CCHO    ','HCOOH   ',&
+'HCHO    ','CCO_OH  ','BALD    ','MEK     ','RCO_OH  ','CO      ','ETHENE  ','ALK1    ','ALK2    ','ALK3    ',&
+'ALK4    ','ALK5    ','ARO1    ','ARO2    ','OLE1    ','OLE2    ','RCHO    ','NONR    '/)
+
+
+REAL, DIMENSION(N_SAPRC99_SPC) :: XMECH_MWT_SAPRC99=(/&  ! Mechanism species molecular weight
+ 68.0,136.0, 32.0, 58.0, 16.0, 30.0,44.01, 17.0, 44.0, 46.0, 30.0, 60.0,106.0, 72.0, 74.0, 28.0,&
+ 28.0, 30.1, 36.7, 58.6, 77.6,118.9, 98.6,118.7, 72.3, 75.8, 58.0,  1.0/)
+
+
+INTEGER, PARAMETER :: N_SAPRC99=150
+
+CHARACTER(LEN=16), DIMENSION(N_SAPRC99) :: CSPMH_NAM_SAPRC99=(/&   ! speciated species name
+'isoprene        ','myrcene         ','sabinene        ','limonene        ','carene_3        ','ocimene_t_b     ',&
+'pinene_b        ','pinene_a        ','2met_styrene    ','cymene_p        ','cymene_o        ','phellandrene_a  ',&
+'thujene_a       ','terpinene_a     ','terpinene_g     ','terpinolene     ','phellandrene_b  ','camphene        ',&
+'bornene         ','fenchene_a      ','ocimene_al      ','ocimene_c_b     ','tricyclene      ','estragole       ',&
+'camphor         ','fenchone        ','piperitone      ','thujone_a       ','thujone_b       ','cineole_1_8     ',&
+'borneol         ','linalool        ','terpineol_4     ','terpineol_a     ','linalool_OXD_c  ','linalool_OXD_t  ',&
+'ionone_b        ','bornyl_ACT      ','farnescene_a    ','caryophyllene_b ','acoradiene      ','aromadendrene   ',&
+'bergamotene_a   ','bergamotene_b   ','bisabolene_a    ','bisabolene_b    ','bourbonene_b    ','cadinene_d      ',&
+'cadinene_g      ','cedrene_a       ','copaene_a       ','cubebene_a      ','cubebene_b      ','elemene_b       ',&
+'farnescene_b    ','germacrene_B    ','germacrene_D    ','gurjunene_b     ','humulene_a      ','humulene_g      ',&
+'isolongifolene  ','longifolene     ','longipinene     ','muurolene_a     ','muurolene_g     ','selinene_b      ',&
+'selinene_d      ','nerolidol_c     ','nerolidol_t     ','cedrol          ','MBO_2m3e2ol     ','methanol        ',&
+'acetone         ','methane         ','ammonia         ','nitrous_OXD     ','nitric_OXD      ','acetaldehyde    ',&
+'ethanol         ','formic_acid     ','formaldehyde    ','acetic_acid     ','MBO_3m2e1ol     ','MBO_3m3e1ol     ',&
+'benzaldehyde    ','butanone_2      ','decanal         ','dodecene_1      ','geranyl_acetone ','heptanal        ',&
+'heptane         ','hexane          ','met_benzoate    ','met_heptenone   ','neryl_acetone   ','nonanal         ',&
+'nonenal         ','octanal         ','octanol         ','octenol_1e3ol   ','oxopentanal     ','pentane         ',&
+'phenyl_CCO      ','pyruvic_acid    ','terpinyl_ACT_a  ','tetradecene_1   ','toluene         ','carbon_monoxide ',&
+'butene          ','ethane          ','ethene          ','hydrogen_cyanide','propane         ','propene         ',&
+'carbon_2s       ','carbonyl_s      ','diallyl_2s      ','2met_2s         ','2met_s          ','met_chloride    ',&
+'met_bromide     ','met_iodide      ','hydrogen_s      ','met_mercaptan   ','met_propenyl_2s ','PPPP_2s         ',&
+'2met_nonatriene ','met_salicylate  ','indole          ','jasmone         ','met_jasmonate   ','3met_3DCTT      ',&
+'hexanal         ','hexanol_1       ','hexenal_c3      ','hexenal_t2      ','hexenol_c3      ','hexenyl_ACT_c3  ',&
+'homosalate      ','Ehsalate        ','pentanal        ','heptanone       ','anisole         ','verbenene       ',&
+'benzyl-acetate  ','myrtenal        ','benzyl-alcohol  ','meta-cymenene   ','ipsenol         ','Napthalene      '/)
+
+INTEGER, DIMENSION(N_SAPRC99) :: NSPMH_MAP_SAPRC99=(/&   ! speciated species name
+  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,&
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,&
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,&
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,&
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,&
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,&
+ 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,112,&
+113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,&
+129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,&
+145,146,147,148,149,150/)
+
+CHARACTER(LEN=8), DIMENSION(N_SAPRC99) :: CMECH_NAM_SAPRC99=(/&   ! mechanism species
+'ISOPRENE','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','OLE2    ','ARO2    ',&
+'ARO2    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ',&
+'TRP1    ','TRP1    ','ALK5    ','TRP1    ','TRP1    ','ALK5    ','TRP1    ','ALK5    ','ALK5    ','ALK5    ',&
+'ALK5    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','ALK5    ','TRP1    ','TRP1    ',&
+'TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ',&
+'TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ',&
+'TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','ALK5    ',&
+'ISOPRENE','MEOH    ','ACET    ','CH4     ','NH3     ','NONR    ','NO      ','CCHO    ','ALK3    ','HCOOH   ',&
+'HCHO    ','CCO_OH  ','ISOPRENE','ISOPRENE','BALD    ','MEK     ','RCHO    ','OLE1    ','TRP1    ','RCHO    ',&
+'ALK5    ','ALK4    ','ARO1    ','OLE2    ','OLE2    ','RCHO    ','OLE1    ','RCHO    ','ALK5    ','OLE1    ',&
+'RCHO    ','ALK4    ','ARO1    ','RCO_OH  ','TRP1    ','OLE1    ','ARO1    ','CO      ','OLE1    ','ALK1    ',&
+'ETHENE  ','NONR    ','ALK2    ','OLE1    ','NONR    ','NONR    ','OLE1    ','ALK5    ','ALK4    ','NONR    ',&
+'NONR    ','NONR    ','NONR    ','ALK5    ','OLE1    ','OLE1    ','TRP1    ','ARO1    ','ARO2    ','TRP1    ',&
+'TRP1    ','TRP1    ','RCHO    ','ALK5    ','OLE2    ','OLE2    ','OLE2    ','OLE2    ','TRP1    ','TRP1    ',&
+'RCHO    ','OLE2    ','BALD    ','ARO2    ','ARO1    ','TRP1    ','ARO1    ','ARO2    ','TRP1    ','ARO2    '/)
+
+INTEGER, DIMENSION(N_SAPRC99) :: NMECH_MAP_SAPRC99=(/&   ! mechanism species mapped
+ 1, 2, 2, 2, 2, 2, 2, 2,26,24,24, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,22, 2, 2,22, 2,22,22,22,22, 2,&
+ 2, 2, 2, 2, 2,22, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,&
+ 2, 2, 2, 2, 2,22, 1, 3, 4, 5, 8,28, 6, 9,20,10,11,12, 1, 1,13,14,27,25, 2,27,22,21,23,26,26,27,&
+25,27,22,25,27,21,23,15, 2,25,23,16,25,18,17,28,19,25,28,28,25,22,21,28,28,28,28,22,25,25, 2,23,&
+24, 2, 2, 2,27,22,26,26,26,26, 2, 2,27,26,13,24,23, 2,23,24, 2,24/)
+
+REAL, DIMENSION(N_SAPRC99) :: XCONV_FAC_SAPRC99=(/&   ! conversion factor
+ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,&
+ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,&
+ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,&
+ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,&
+ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1./)
+
+
+!****************************************************************************************************************
+!****************************************************************************************************************
+
+INTEGER, PARAMETER :: N_SAPRC99_Q_SPC=27
+
+CHARACTER(LEN=8), DIMENSION(N_SAPRC99_Q_SPC) :: CMECH_SPC_SAPRC99_Q=(/&  ! Mechanism species name
+'ISOPRENE','TRP1    ','OLE2    ','ARO2    ','ALK5    ','XC      ','OLE1    ','MEOH    ','ACET    ','CH4     ','NH3     ',&
+'NO      ','CCHO    ','ALK3    ','HCOOH   ','HCHO    ','CCO_OH  ','BALD    ','MEK     ','RCHO    ','ALK4    ','ARO1    ',&
+'BACL    ','CO      ','ALK1    ','ETHENE  ','ALK2    '/)
+
+
+REAL, DIMENSION(N_SAPRC99_Q_SPC) :: XMECH_MWT_SAPRC99_Q=(/&  ! Mechanism species molecular weight
+ 68.0,136.0, 75.8,118.7,118.9, 12.0, 72.3, 32.0, 58.0, 16.0, 17.0, 30.0, 44.0, 58.6, 46.0, 30.0,&
+ 75.0,106.0, 72.0, 58.0, 77.6, 98.6, 86.0, 28.0, 30.1, 92.0, 36.7/)
+
+
+INTEGER, PARAMETER :: N_SAPRC99_Q=145
+
+CHARACTER(LEN=15), DIMENSION(N_SAPRC99_Q) :: CSPMH_NAM_SAPRC99_Q=(/&   ! speciated species name
+'isoprene       ','myrcene        ','sabinene       ','limonene       ','carene_3       ','ocimene_t_b    ',&
+'pinene_b       ','pinene_a       ','2met_styrene   ','cymene_p       ','cymene_o       ','phellandrene_a ',&
+'thujene_a      ','terpinene_a    ','terpinene_g    ','terpinolene    ','phellandrene_b ','camphene       ',&
+'bornene        ','fenchene_a     ','ocimene_al     ','ocimene_c_b    ','tricyclene     ','estragole      ',&
+'camphor        ','fenchone       ','piperitone     ','thujone_a      ','thujone_b      ','cineole_1_8    ',&
+'borneol        ','linalool       ','terpineol_4    ','terpineol_a    ','linalool_OXD_c ','linalool_OXD_t ',&
+'ionone_b       ','bornyl_ACT     ','farnescene_a   ','caryophyllene_b','acoradiene     ','aromadendrene  ',&
+'bergamotene_a  ','bergamotene_b  ','bisabolene_a   ','bisabolene_b   ','bourbonene_b   ','cadinene_d     ',&
+'cadinene_g     ','cedrene_a      ','copaene_a      ','cubebene_a     ','cubebene_b     ','elemene_b      ',&
+'farnescene_b   ','germacrene_B   ','germacrene_D   ','gurjunene_b    ','humulene_a     ','humulene_g     ',&
+'isolongifolene ','longifolene    ','longipinene    ','muurolene_a    ','muurolene_g    ','selinene_b     ',&
+'selinene_d     ','nerolidol_c    ','nerolidol_t    ','cedrol         ','MBO_2m3e2ol    ','methanol       ',&
+'acetone        ','methane        ','ammonia        ','nitric_OXD     ','acetaldehyde   ','ethanol        ',&
+'formic_acid    ','formaldehyde   ','acetic_acid    ','MBO_3m2e1ol    ','MBO_3m3e1ol    ','benzaldehyde   ',&
+'butanone_2     ','decanal        ','dodecene_1     ','geranyl_acetone','heptanal       ','heptane        ',&
+'hexane         ','met_benzoate   ','met_heptenone  ','neryl_acetone  ','nonanal        ','nonenal        ',&
+'octanal        ','octanol        ','octenol_1e3ol  ','oxopentanal    ','pentane        ','phenyl_CCO     ',&
+'pyruvic_acid   ','terpinyl_ACT_a ','tetradecene_1  ','toluene        ','carbon_monoxide','butene         ',&
+'ethane         ','ethene         ','propane        ','propene        ','diallyl_2s     ','2met_2s        ',&
+'2met_s         ','met_chloride   ','met_bromide    ','met_iodide     ','met_mercaptan  ','met_propenyl_2s',&
+'PPPP_2s        ','2met_nonatriene','met_salicylate ','indole         ','jasmone        ','met_jasmonate  ',&
+'3met_3DCTT     ','hexanal        ','hexanol_1      ','hexenal_c3     ','hexenal_t2     ','hexenol_c3     ',&
+'hexenyl_ACT_c3 ','homosalate     ','Ehsalate       ','pentanal       ','heptanone      ','anisole        ',&
+'verbenene      ','benzyl-acetate ','myrtenal       ','benzyl-alcohol ','meta-cymenene  ','ipsenol        ',&
+'Napthalene     '/)
+
+INTEGER, DIMENSION(N_SAPRC99_Q) :: NSPMH_MAP_SAPRC99_Q=(/&   ! speciated species name
+  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,&
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,&
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,&
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,&
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 77, 78, 79, 80, 81,&
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,&
+ 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,113,114,&
+117,118,119,120,121,122,124,125,126,127,128,129,130,131,132,133,&
+134,135,136,137,138,134,135,136,137,138,139,140,141,142,143,144,&
+145/)
+
+CHARACTER(LEN=8), DIMENSION(N_SAPRC99_Q) :: CMECH_NAM_SAPRC99_Q=(/&   ! mechanism species
+'ISOPRENE','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','OLE2    ','ARO2    ',&
+'ARO2    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ',&
+'TRP1    ','TRP1    ','ALK5    ','TRP1    ','TRP1    ','ALK5    ','TRP1    ','ALK5    ','ALK5    ','ALK5    ',&
+'ALK5    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','TRP1    ','ALK5    ','XC      ','XC      ',&
+'XC      ','XC      ','XC      ','XC      ','XC      ','XC      ','XC      ','XC      ','XC      ','XC      ',&
+'XC      ','XC      ','XC      ','XC      ','XC      ','XC      ','XC      ','XC      ','XC      ','XC      ',&
+'XC      ','XC      ','XC      ','XC      ','XC      ','XC      ','XC      ','XC      ','XC      ','ALK5    ',&
+'OLE1    ','MEOH    ','ACET    ','CH4     ','NH3     ','NO      ','CCHO    ','ALK3    ','HCOOH   ','HCHO    ',&
+'CCO_OH  ','OLE2    ','OLE1    ','BALD    ','MEK     ','RCHO    ','OLE1    ','TRP1    ','RCHO    ','ALK5    ',&
+'ALK4    ','ARO1    ','OLE2    ','OLE2    ','RCHO    ','OLE1    ','RCHO    ','ALK5    ','OLE1    ','RCHO    ',&
+'ALK4    ','ARO1    ','BACL    ','TRP1    ','OLE1    ','ARO1    ','CO      ','OLE1    ','ALK1    ','ETHENE  ',&
+'ALK2    ','OLE1    ','OLE1    ','ALK3    ','ALK4    ','ALK2    ','ALK2    ','ALK2    ','ALK2    ','OLE1    ',&
+'OLE1    ','TRP1    ','ARO1    ','ARO2    ','TRP1    ','TRP1    ','XC      ','RCHO    ','ALK5    ','OLE2    ',&
+'OLE2    ','OLE2    ','OLE2    ','TRP1    ','TRP1    ','RCHO    ','OLE2    ','BALD    ','ARO2    ','ARO1    ',&
+'TRP1    ','ARO1    ','ARO2    ','TRP1    ','ARO2    '/)
+
+INTEGER, DIMENSION(N_SAPRC99_Q) :: NMECH_MAP_SAPRC99_Q=(/&   ! mechanism species mapped
+ 1, 2, 2, 2, 2, 2, 2, 2, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 2, 2, 5, 2, 5, 5, 5, 5, 2,&
+ 2, 2, 2, 2, 2, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,&
+ 6, 6, 6, 6, 6, 5, 7, 8, 9,10,11,12,13,14,15,16,17, 3, 7,18,19,20, 7, 2,20, 5,21,22, 3, 3,20, 7,&
+20, 5, 7,20,21,22,23, 2, 7,22,24, 7,25,26,27, 7, 7,14,21,27,27,27,27, 7, 7, 2,22, 4, 2, 2, 6,20,&
+ 5, 3, 3, 3, 3, 2, 2,27,26,13,24,23, 2,23,24, 2,24/)
+
+REAL, DIMENSION(N_SAPRC99_Q) :: XCONV_FAC_SAPRC99_Q=(/&   ! conversion factor
+ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,&
+ 1., 1., 1., 1., 1., 1.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,&
+15.,15.,15.,15.,15., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,&
+ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,16., 1.,&
+ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1./)
+
+!****************************************************************************************************************
+!****************************************************************************************************************
+
+INTEGER, PARAMETER :: N_SAPRC99_X_SPC=27
+
+CHARACTER(LEN=4), DIMENSION(N_SAPRC99_X_SPC) :: CMECH_SPC_SAPRC99_X=(/&  ! Mechanism species name
+'ISOP','TERP','OLE2','ARO2','ALK5','XC  ','OLE1','MEOH','ACET','CH4 ','NH3 ','NO  ','CCHO','ALK3','HC2H','HCHO',&
+'CO2H','BALD','MEK ','RCHO','ALK4','ARO1','BACL','CO  ','ALK1','ETHE','ALK2'/)
+
+
+REAL, DIMENSION(N_SAPRC99_X_SPC) :: XMECH_MWT_SAPRC99_X=(/&  ! Mechanism species molecular weight
+ 68.0,136.0, 75.8,118.7,118.9, 12.0, 72.3, 32.0, 58.0, 16.0, 17.0, 30.0, 44.0, 58.6, 46.0, 30.0,&
+ 75.0,106.0, 72.0, 58.0, 77.6, 98.6, 86.0, 28.0, 30.1, 92.0, 36.7/)
+
+
+INTEGER, PARAMETER :: N_SAPRC99_X=145
+
+CHARACTER(LEN=15), DIMENSION(N_SAPRC99_X) :: CSPMH_NAM_SAPRC99_X=(/&   ! speciated species name
+'isoprene       ','myrcene        ','sabinene       ','limonene       ','carene_3       ','ocimene_t_b    ',&
+'pinene_b       ','pinene_a       ','2met_styrene   ','cymene_p       ','cymene_o       ','phellandrene_a ',&
+'thujene_a      ','terpinene_a    ','terpinene_g    ','terpinolene    ','phellandrene_b ','camphene       ',&
+'bornene        ','fenchene_a     ','ocimene_al     ','ocimene_c_b    ','tricyclene     ','estragole      ',&
+'camphor        ','fenchone       ','piperitone     ','thujone_a      ','thujone_b      ','cineole_1_8    ',&
+'borneol        ','linalool       ','terpineol_4    ','terpineol_a    ','linalool_OXD_c ','linalool_OXD_t ',&
+'ionone_b       ','bornyl_ACT     ','farnescene_a   ','caryophyllene_b','acoradiene     ','aromadendrene  ',&
+'bergamotene_a  ','bergamotene_b  ','bisabolene_a   ','bisabolene_b   ','bourbonene_b   ','cadinene_d     ',&
+'cadinene_g     ','cedrene_a      ','copaene_a      ','cubebene_a     ','cubebene_b     ','elemene_b      ',&
+'farnescene_b   ','germacrene_B   ','germacrene_D   ','gurjunene_b    ','humulene_a     ','humulene_g     ',&
+'isolongifolene ','longifolene    ','longipinene    ','muurolene_a    ','muurolene_g    ','selinene_b     ',&
+'selinene_d     ','nerolidol_c    ','nerolidol_t    ','cedrol         ','MBO_2m3e2ol    ','methanol       ',&
+'acetone        ','methane        ','ammonia        ','nitric_OXD     ','acetaldehyde   ','ethanol        ',&
+'formic_acid    ','formaldehyde   ','acetic_acid    ','MBO_3m2e1ol    ','MBO_3m3e1ol    ','benzaldehyde   ',&
+'butanone_2     ','decanal        ','dodecene_1     ','geranyl_acetone','heptanal       ','heptane        ',&
+'hexane         ','met_benzoate   ','met_heptenone  ','neryl_acetone  ','nonanal        ','nonenal        ',&
+'octanal        ','octanol        ','octenol_1e3ol  ','oxopentanal    ','pentane        ','phenyl_CCO     ',&
+'pyruvic_acid   ','terpinyl_ACT_a ','tetradecene_1  ','toluene        ','carbon_monoxide','butene         ',&
+'ethane         ','ethene         ','propane        ','propene        ','diallyl_2s     ','2met_2s        ',&
+'2met_s         ','met_chloride   ','met_bromide    ','met_iodide     ','met_mercaptan  ','met_propenyl_2s',&
+'PPPP_2s        ','2met_nonatriene','met_salicylate ','indole         ','jasmone        ','met_jasmonate  ',&
+'3met_3DCTT     ','hexanal        ','hexanol_1      ','hexenal_c3     ','hexenal_t2     ','hexenol_c3     ',&
+'hexenyl_ACT_c3 ','homosalate     ','Ehsalate       ','pentanal       ','heptanone      ','anisole        ',&
+'verbenene      ','benzyl-acetate ','myrtenal       ','benzyl-alcohol ','meta-cymenene  ','ipsenol        ',&
+'Napthalene     '/)
+
+
+INTEGER, DIMENSION(N_SAPRC99_X) :: NSPMH_MAP_SAPRC99_X=(/&   ! speciated species name
+  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,&
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,&
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,&
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,&
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 77, 78, 79, 80, 81,&
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,&
+ 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,113,114,&
+117,118,119,120,121,122,124,125,126,127,128,129,130,131,132,133,&
+134,135,136,137,138,134,135,136,137,138,139,140,141,142,143,144,&
+145/)
+
+
+CHARACTER(LEN=4), DIMENSION(N_SAPRC99_X) :: CMECH_NAM_SAPRC99_X=(/&   ! mechanism species
+'ISOP','TERP','TERP','TERP','TERP','TERP','TERP','TERP','OLE2','ARO2','ARO2','TERP','TERP','TERP','TERP','TERP',&
+'TERP','TERP','TERP','TERP','TERP','TERP','ALK5','TERP','TERP','ALK5','TERP','ALK5','ALK5','ALK5','ALK5','TERP',&
+'TERP','TERP','TERP','TERP','TERP','ALK5','XC  ','XC  ','XC  ','XC  ','XC  ','XC  ','XC  ','XC  ','XC  ','XC  ',&
+'XC  ','XC  ','XC  ','XC  ','XC  ','XC  ','XC  ','XC  ','XC  ','XC  ','XC  ','XC  ','XC  ','XC  ','XC  ','XC  ',&
+'XC  ','XC  ','XC  ','XC  ','XC  ','ALK5','OLE1','MEOH','ACET','CH4 ','NH3 ','NO  ','CCHO','ALK3','HC2H','HCHO',&
+'CO2H','OLE2','OLE1','BALD','MEK ','RCHO','OLE1','TERP','RCHO','ALK5','ALK4','ARO1','OLE2','OLE2','RCHO','OLE1',&
+'RCHO','ALK5','OLE1','RCHO','ALK4','ARO1','BACL','TERP','OLE1','ARO1','CO  ','OLE1','ALK1','ETHE','ALK2','OLE1',&
+'OLE1','ALK3','ALK4','ALK2','ALK2','ALK2','ALK2','OLE1','OLE1','TERP','ARO1','ARO2','TERP','TERP','XC  ','RCHO',&
+'ALK5','OLE2','OLE2','OLE2','OLE2','TERP','TERP','RCHO','OLE2','BALD','ARO2','ARO1','TERP','ARO1','ARO2','TERP',&
+'ARO2'/)
+
+INTEGER, DIMENSION(N_SAPRC99_X) :: NMECH_MAP_SAPRC99_X=(/&   ! mechanism species mapped
+ 1, 2, 2, 2, 2, 2, 2, 2, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 2, 2, 5, 2, 5, 5, 5, 5, 2,&
+ 2, 2, 2, 2, 2, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,&
+ 6, 6, 6, 6, 6, 5, 7, 8, 9,10,11,12,13,14,15,16,17, 3, 7,18,19,20, 7, 2,20, 5,21,22, 3, 3,20, 7,&
+20, 5, 7,20,21,22,23, 2, 7,22,24, 7,25,26,27, 7, 7,14,21,27,27,27,27, 7, 7, 2,22, 4, 2, 2, 6,20,&
+ 5, 3, 3, 3, 3, 2, 2,27,26,13,24,23, 2,23,24, 2,24/)
+
+REAL, DIMENSION(N_SAPRC99_X) :: XCONV_FAC_SAPRC99_X=(/&   ! conversion factor
+ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,&
+ 1., 1., 1., 1., 1., 1.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,15.,&
+15.,15.,15.,15.,15., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,&
+ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,16., 1.,&
+ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1./)
+
+!****************************************************************************************************************
+!****************************************************************************************************************
+
+INTEGER, PARAMETER :: N_SOAX_SPC=8
+
+CHARACTER(LEN=4), DIMENSION(N_SOAX_SPC) :: CMECH_SPC_SOAX=(/&  ! Mechanism species name
+'ISP ','TRP ','XYLA','CG5 ','SQT ','TOLA','CG6 ','CG4 '/)
+
+REAL, DIMENSION(N_SOAX_SPC) :: XMECH_MWT_SOAX=(/&  ! Mechanism species molecular weight
+ 68.,136.,106.,180.,204., 92., 80.,130./)
+
+ 
+INTEGER, PARAMETER :: N_SOAX=110
+
+CHARACTER(LEN=15), DIMENSION(N_SOAX) :: CSPMH_NAM_SOAX=(/&   ! speciated species name
+'isoprene       ','myrcene        ','sabinene       ','limonene       ','carene_3       ','ocimene_t_b    ',&
+'pinene_b       ','pinene_a       ','2met_styrene   ','cymene_p       ','cymene_o       ','phellandrene_a ',&
+'thujene_a      ','terpinene_a    ','terpinene_g    ','terpinolene    ','phellandrene_b ','camphene       ',&
+'bornene        ','fenchene_a     ','ocimene_al     ','ocimene_c_b    ','estragole      ','camphor        ',&
+'fenchone       ','piperitone     ','thujone_a      ','thujone_b      ','cineole_1_8    ','borneol        ',&
+'linalool       ','terpineol_4    ','terpineol_a    ','linalool_OXD_c ','linalool_OXD_t ','ionone_b       ',&
+'bornyl_ACT     ','farnescene_a   ','caryophyllene_b','acoradiene     ','aromadendrene  ','bergamotene_a  ',&
+'bergamotene_b  ','bisabolene_a   ','bisabolene_b   ','bourbonene_b   ','cadinene_d     ','cadinene_g     ',&
+'cedrene_a      ','copaene_a      ','cubebene_a     ','cubebene_b     ','elemene_b      ','farnescene_b   ',&
+'germacrene_B   ','germacrene_D   ','gurjunene_b    ','humulene_a     ','humulene_g     ','isolongifolene ',&
+'longifolene    ','longipinene    ','muurolene_a    ','muurolene_g    ','selinene_b     ','selinene_d     ',&
+'nerolidol_c    ','nerolidol_t    ','cedrol         ','benzaldehyde   ','decanal        ','geranyl_acetone',&
+'heptanal       ','met_benzoate   ','met_heptenone  ','neryl_acetone  ','nonanal        ','nonenal        ',&
+'octanal        ','octanol        ','octenol_1e3ol  ','oxopentanal    ','phenyl_CCO     ','pyruvic_acid   ',&
+'terpinyl_ACT_a ','toluene        ','2met_nonatriene','met_salicylate ','indole         ','jasmone        ',&
+'met_jasmonate  ','3met_3DCTT     ','hexanal        ','hexanol_1      ','hexenal_c3     ','hexenal_t2     ',&
+'hexenol_c3     ','hexenyl_ACT_c3 ','homosalate     ','Ehsalate       ','pentanal       ','heptanone      ',&
+'anisole        ','verbenene      ','benzyl-acetate ','myrtenal       ','benzyl-alcohol ','meta-cymenene  ',&
+'ipsenol        ','Napthalene     '/)
+
+INTEGER, DIMENSION(N_SOAX) :: NSPMH_MAP_SOAX=(/&   ! speciated species name
+  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,&
+ 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,&
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,&
+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,&
+ 66, 67, 68, 69, 70, 85, 87, 89, 90, 93, 94, 95, 96, 97, 98, 99,&
+100,101,103,104,105,107,127,128,129,130,131,132,133,134,135,136,&
+137,138,139,140,141,142,143,144,145,146,147,148,149,150/)
+
+CHARACTER(LEN=16), DIMENSION(N_SOAX) :: CMECH_NAM_SOAX=(/&   ! mechanism species
+'ISP ','TRP ','TRP ','TRP ','TRP ','TRP ','TRP ','TRP ','XYLA','XYLA','XYLA','TRP ','TRP ','TRP ','TRP ','TRP ',&
+'TRP ','TRP ','TRP ','TRP ','TRP ','TRP ','TRP ','CG5 ','CG5 ','TRP ','CG5 ','CG5 ','CG5 ','CG5 ','TRP ','TRP ',&
+'TRP ','TRP ','TRP ','TRP ','CG5 ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ',&
+'SQT ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ','SQT ',&
+'SQT ','SQT ','SQT ','SQT ','CG5 ','TOLA','CG5 ','TRP ','CG6 ','TOLA','CG6 ','CG5 ','CG6 ','CG6 ','CG6 ','CG6 ',&
+'CG6 ','CG4 ','TOLA','CG4 ','TRP ','TOLA','TRP ','TOLA','TOLA','TRP ','TRP ','SQT ','CG4 ','CG4 ','CG4 ','CG4 ',&
+'CG4 ','CG6 ','SQT ','SQT ','CG4 ','CG6 ','TOLA','TRP ','TOLA','TRP ','TOLA','XYLA','TRP ','XYLA'/)
+
+INTEGER, DIMENSION(N_SOAX) :: NMECH_MAP_SOAX=(/&   ! mechanism species mapped
+ 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 4, 4, 4, 4, 2, 2,&
+ 2, 2, 2, 2, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,&
+ 5, 5, 5, 5, 4, 6, 4, 2, 7, 6, 7, 4, 7, 7, 7, 7, 7, 8, 6, 8, 2, 6, 2, 6, 6, 2, 2, 5, 8, 8, 8, 8,&
+ 8, 7, 5, 5, 8, 7, 6, 2, 6, 2, 6, 3, 2, 3/)
+
+REAL, DIMENSION(N_SOAX) :: XCONV_FAC_SOAX=(/&   ! conversion factor
+ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,&
+ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,0.85,0.85, 1.0,0.85,0.85,0.86,0.86, 1.0, 1.0,&
+ 1.0, 1.0, 1.0, 1.0,1.09, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,&
+ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,&
+ 1.0, 1.0, 1.0, 1.0,1.24, 1.0,0.87, 1.0,0.63, 1.0,0.70,1.08,0.79,0.78,0.71,0.72,&
+0.71,0.77, 1.0,0.68, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,0.77,0.79,0.76,0.76,&
+0.77,0.79, 1.0, 1.0,0.77,0.70, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0/)
+
+!****************************************************************************************************************
+!****************************************************************************************************************
+
+INTEGER,PARAMETER :: N_SPCA_SPC = 150                   ! Number of speciated species
+
+CHARACTER(LEN=17), DIMENSION(N_SPCA_SPC) :: CSPCA_SPC=(/&   ! speciated species name
+'isoprene         ','myrcene          ','sabinene         ','limonene         ','carene_3         ','ocimene_t_b      ',&
+'pinene_b         ','pinene_a         ','A_2met_styrene   ','cymene_p         ','cymene_o         ','phellandrene_a   ',&
+'thujene_a        ','terpinene_a      ','terpinene_g      ','terpinolene      ','phellandrene_b   ','camphene         ',&
+'bornene          ','fenchene_a       ','ocimene_al       ','ocimene_c_b      ','tricyclene       ','estragole        ',&
+'camphor          ','fenchone         ','piperitone       ','thujone_a        ','thujone_b        ','cineole_1_8      ',&
+'borneol          ','linalool         ','terpineol_4      ','terpineol_a      ','linalool_OXD_c   ','linalool_OXD_t   ',&
+'ionone_b         ','bornyl_ACT       ','farnescene_a     ','caryophyllene_b  ','acoradiene       ','aromadendrene    ',&
+'bergamotene_a    ','bergamotene_b    ','bisabolene_a     ','bisabolene_b     ','bourbonene_b     ','cadinene_d       ',&
+'cadinene_g       ','cedrene_a        ','copaene_a        ','cubebene_a       ','cubebene_b       ','elemene_b        ',&
+'farnescene_b     ','germacrene_B     ','germacrene_D     ','gurjunene_b      ','humulene_a       ','humulene_g       ',&
+'isolongifolene   ','longifolene      ','longipinene      ','muurolene_a      ','muurolene_g      ','selinene_b       ',&
+'selinene_d       ','nerolidol_c      ','nerolidol_t      ','cedrol           ','MBO_2m3e2ol      ','methanol         ',&
+'acetone          ','methane          ','ammonia          ','nitrous_OXD      ','nitric_OXD       ','acetaldehyde     ',&
+'ethanol          ','formic_acid      ','formaldehyde     ','acetic_acid      ','MBO_3m2e1ol      ','MBO_3m3e1ol      ',&
+'benzaldehyde     ','butanone_2       ','decanal          ','dodecene_1       ','geranyl_acetone  ','heptanal         ',&
+'heptane          ','hexane           ','met_benzoate     ','met_heptenone    ','neryl_acetone    ','nonanal          ',&
+'nonenal          ','octanal          ','octanol          ','octenol_1e3ol    ','oxopentanal      ','pentane          ',&
+'phenyl_CCO       ','pyruvic_acid     ','terpinyl_ACT_a   ','tetradecene_1    ','toluene          ','carbon_monoxide  ',&
+'butene           ','ethane           ','ethene           ','hydrogen_cyanide ','propane          ','propene          ',&
+'carbon_2s        ','carbonyl_s       ','diallyl_2s       ','A_2met_2s        ','A_2met_s         ','met_chloride     ',&
+'met_bromide      ','met_iodide       ','hydrogen_s       ','met_mercaptan    ','met_propenyl_2s  ','PPPP_2s          ',&
+'A_2met_nonatriene','met_salicylate   ','indole           ','jasmone          ','met_jasmonate    ','A_3met_3DCTT     ',&
+'hexanal          ','hexanol_1        ','hexenal_c3       ','hexenal_t2       ','hexenol_c3       ','hexenyl_ACT_c3   ',&
+'homosalate       ','Ehsalate         ','pentanal         ','heptanone        ','anisole          ','verbenene        ',&
+'benzyl-acetate   ','myrtenal         ','benzyl-alcohol   ','meta-cymenene    ','ipsenol          ','Napthalene       '/)
+
+REAL, DIMENSION(N_SPCA_SPC) :: XSPCA_MWT=(/&                ! Mechanism species molecular weight
+ 68.12,136.23,136.23,136.23,136.23,136.23,136.23,136.23,132.20,134.22,134.22,136.23,136.23,136.23,136.23,136.23,&
+136.23,136.23,136.23,136.23,136.23,136.23,136.23,148.20,152.23,152.23,152.23,152.23,152.23,154.25,154.25,154.25,&
+154.25,154.25,170.25,170.25,192.30,196.29,204.35,204.35,204.35,204.35,204.35,204.35,204.35,204.35,204.35,204.35,&
+204.35,204.35,204.35,204.35,204.35,204.35,204.35,204.35,204.35,204.35,204.35,204.35,204.35,204.35,204.35,204.35,&
+204.35,204.35,204.35,222.37,222.37,222.37, 86.13, 32.04, 58.08, 16.04, 17.03, 44.01, 30.01, 44.05, 46.07, 46.03,&
+ 30.03, 60.05, 86.13, 86.13,106.12, 72.11,156.27,168.32,194.31,114.19,100.20, 86.18,136.15,126.20,194.31,142.24,&
+140.22,128.21,130.23,128.21,100.12, 72.15,120.15, 88.06,196.29,196.37, 92.14, 28.01, 56.11, 30.07, 28.05, 27.03,&
+ 44.10, 42.08, 76.14, 60.08,146.28, 94.20, 62.14, 50.49, 94.94,141.94, 34.08, 48.11,120.24,148.29,150.26,152.15,&
+117.15,164.24,224.30,218.38,100.16,102.17, 98.14, 98.14,100.16,142.20,  131.,  131.,  133.,   94.,   85.,   10.,&
+   85.,   32.,   85.,   10.,   32.,  129./)
+
+!****************************************************************************************************************
+!****************************************************************************************************************
+      
+INTEGER,PARAMETER :: N_SMAP_SPC = 150   ! Number of map species
+
+CHARACTER(LEN=17), DIMENSION(N_SMAP_SPC) :: CSPCA_NAM=(/&  ! speciated species name
+'isoprene         ','myrcene          ','sabinene         ','limonene         ','carene_3         ','ocimene_t_b      ',&
+'pinene_b         ','pinene_a         ','A_2met_styrene   ','cymene_p         ','cymene_o         ','phellandrene_a   ',&
+'thujene_a        ','terpinene_a      ','terpinene_g      ','terpinolene      ','phellandrene_b   ','camphene         ',&
+'bornene          ','fenchene_a       ','ocimene_al       ','ocimene_c_b      ','tricyclene       ','estragole        ',&
+'camphor          ','fenchone         ','piperitone       ','thujone_a        ','thujone_b        ','cineole_1_8      ',&
+'borneol          ','linalool         ','terpineol_4      ','terpineol_a      ','linalool_OXD_c   ','linalool_OXD_t   ',&
+'ionone_b         ','bornyl_ACT       ','farnescene_a     ','caryophyllene_b  ','acoradiene       ','aromadendrene    ',&
+'bergamotene_a    ','bergamotene_b    ','bisabolene_a     ','bisabolene_b     ','bourbonene_b     ','cadinene_d       ',&
+'cadinene_g       ','cedrene_a        ','copaene_a        ','cubebene_a       ','cubebene_b       ','elemene_b        ',&
+'farnescene_b     ','germacrene_B     ','germacrene_D     ','gurjunene_b      ','humulene_a       ','humulene_g       ',&
+'isolongifolene   ','longifolene      ','longipinene      ','muurolene_a      ','muurolene_g      ','selinene_b       ',&
+'selinene_d       ','nerolidol_c      ','nerolidol_t      ','cedrol           ','MBO_2m3e2ol      ','methanol         ',&
+'acetone          ','methane          ','ammonia          ','nitrous_OXD      ','nitric_OXD       ','acetaldehyde     ',&
+'ethanol          ','formic_acid      ','formaldehyde     ','acetic_acid      ','MBO_3m2e1ol      ','MBO_3m3e1ol      ',&
+'benzaldehyde     ','butanone_2       ','decanal          ','dodecene_1       ','geranyl_acetone  ','heptanal         ',&
+'heptane          ','hexane           ','met_benzoate     ','met_heptenone    ','neryl_acetone    ','nonanal          ',&
+'nonenal          ','octanal          ','octanol          ','octenol_1e3ol    ','oxopentanal      ','pentane          ',&
+'phenyl_CCO       ','pyruvic_acid     ','terpinyl_ACT_a   ','tetradecene_1    ','toluene          ','carbon_monoxide  ',&
+'butene           ','ethane           ','ethene           ','hydrogen_cyanide ','propane          ','propene          ',&
+'carbon_2s        ','carbonyl_s       ','diallyl_2s       ','A_2met_2s        ','A_2met_s         ','met_chloride     ',&
+'met_bromide      ','met_iodide       ','hydrogen_s       ','met_mercaptan    ','met_propenyl_2s  ','PPPP_2s          ',&
+'A_2met_nonatriene','met_salicylate   ','indole           ','jasmone          ','met_jasmonate    ','3met_3DCTT       ',&
+'hexanal          ','hexanol_1        ','hexenal_c3       ','hexenal_t2       ','hexenol_c3       ','hexenyl_ACT_c3   ',&
+'homosalate       ','Ehsalate         ','pentanal         ','heptanone        ','anisole          ','verbenene        ',&
+'benzyl-acetate   ','myrtenal         ','benzyl-alcohol   ','meta-cymenene    ','ipsenol          ','Napthalene       '/)
+
+INTEGER, DIMENSION(N_SMAP_SPC) :: NSPCA_MAP=(/&             ! speciated species name
+  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,&
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,&
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,&
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,&
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,&
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,&
+ 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,112,&
+113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,&
+129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,&
+145,146,147,148,149,150/)
+                                                      
+CHARACTER(LEN=6), DIMENSION(N_SMAP_SPC) :: CMG20_NAM=(/&   ! MEGAN species
+'ISOP  ','MYRC  ','SABI  ','LIMO  ','3CAR  ','OCIM  ','BPIN  ','APIN  ','OMTP  ','OMTP  ',&
+'OMTP  ','OMTP  ','OMTP  ','OMTP  ','OMTP  ','OMTP  ','OMTP  ','OMTP  ','OMTP  ','OMTP  ',&
+'OMTP  ','OMTP  ','OMTP  ','OMTP  ','OMTP  ','OMTP  ','OMTP  ','OMTP  ','OMTP  ','OMTP  ',&
+'OMTP  ','OMTP  ','OMTP  ','OMTP  ','OMTP  ','OMTP  ','OMTP  ','OMTP  ','FARN  ','BCAR  ',&
+'OSQT  ','OSQT  ','OSQT  ','OSQT  ','OSQT  ','OSQT  ','OSQT  ','OSQT  ','OSQT  ','OSQT  ',&
+'OSQT  ','OSQT  ','OSQT  ','OSQT  ','OSQT  ','OSQT  ','OSQT  ','OSQT  ','OSQT  ','OSQT  ',&
+'OSQT  ','OSQT  ','OSQT  ','OSQT  ','OSQT  ','OSQT  ','OSQT  ','OSQT  ','OSQT  ','OSQT  ',&
+'MBO   ','MEOH  ','ACTO  ','OTHER ','NO    ','NO    ','NO    ','BIDIR ','BIDIR ','BIDIR ',&
+'BIDIR ','BIDIR ','OTHER ','OTHER ','OTHER ','OTHER ','OTHER ','OTHER ','OTHER ','OTHER ',&
+'OTHER ','OTHER ','OTHER ','OTHER ','OTHER ','OTHER ','OTHER ','OTHER ','OTHER ','OTHER ',&
+'OTHER ','OTHER ','OTHER ','OTHER ','OTHER ','OTHER ','STRESS','CO    ','OTHER ','OTHER ',&
+'STRESS','STRESS','OTHER ','OTHER ','OTHER ','OTHER ','OTHER ','OTHER ','OTHER ','OTHER ',&
+'OTHER ','OTHER ','OTHER ','OTHER ','OTHER ','OTHER ','STRESS','STRESS','STRESS','STRESS',&
+'STRESS','STRESS','STRESS','STRESS','STRESS','STRESS','STRESS','STRESS','OTHER ','OTHER ',&
+'OTHER ','OTHER ','OTHER ','OMTP  ','OTHER ','OMTP  ','OTHER ','OMTP  ','OMTP  ','OTHER '/)
+
+INTEGER, DIMENSION(N_SMAP_SPC) :: NMG20_MAP=(/&            ! MEGAN species mapped to
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,&
+ 9, 9, 9, 9, 9, 9,10,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,&
+12,12,12,12,12,12,13,14,15,20,17,17,17,18,18,18,18,18,20,20,20,20,20,20,20,20,20,20,20,20,20,20,&
+20,20,20,20,20,20,20,20,20,20,19,16,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,&
+19,19,19,19,19,19,19,19,19,19,20,20,20,20,20, 9,20, 9,20, 9, 9,20/)
+
+END MODULE MODD_MGN2MECH
diff --git a/src/LIB/MEGAN/mode_gamma_etc.F90 b/src/LIB/MEGAN/mode_gamma_etc.F90
new file mode 100644
index 000000000..098c29df7
--- /dev/null
+++ b/src/LIB/MEGAN/mode_gamma_etc.F90
@@ -0,0 +1,553 @@
+!=======================================================================
+!     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, 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
+IF ( PTEMP_D.LE.303. ) THEN 
+  ZTI = 5.0 + 0.7*(300.-PTEMP_D)
+ELSE 
+  ZTI = 2.9
+ENDIF
+ZTM = 2.3 * ZTI
+!
+DO JJ = 1,SIZE(PLAIARP)
+
+!... 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
new file mode 100644
index 000000000..b2a1ac523
--- /dev/null
+++ b/src/LIB/MEGAN/mode_megan.F90
@@ -0,0 +1,1220 @@
+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, INTENT(IN) :: PPFD24, PPFD240
+REAL, INTENT(IN) :: PT24, PT240, 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
+!
+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))
+
+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
+          ! DAYTIME
+    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, INTENT(IN) :: PT24, PT240
+REAL, DIMENSION(:), INTENT(IN) :: PT1
+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 - 297)
+    ZX    = ((1 / ZTOPT) - (1 / PT1(JJ))) / 0.00831
+
+    ! MAXIMUM EMISSION (RELATIVE TO EMISSION AT 30 C)
+    ZEOPT = XCLEO(ISPCNUM) * EXP(0.05 * (PT24 - 297)) * EXP(0.05*(PT240-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, PPFD24, PPFD240
+REAL, DIMENSION(:), INTENT(IN) :: PPFD1
+REAL, DIMENSION(SIZE(PPFD1)) :: PEA1P99
+REAL :: ZALPHA, ZC1
+INTEGER :: JJ
+!--------------------------------------------------------------------
+
+DO JJ = 1,SIZE(PPFD1)
+
+  IF ( PPFD240<0.01 ) THEN
+    PEA1P99(JJ) = 0.
+  ELSE
+    ZALPHA  = 0.004 - 0.0005 * LOG(PPFD240)
+    ZC1     = 0.0468 * EXP(0.0005 * (PPFD24 - PSTD)) * (PPFD240**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
new file mode 100644
index 000000000..226c006ed
--- /dev/null
+++ b/src/LIB/MEGAN/mode_soilnox.F90
@@ -0,0 +1,255 @@
+!=======================================================================
+!     MODULE SOILNOX_FX
+!
+!     This module contain functions to assist soil NOx calculation.
+!     
+!
+!     CONTAINS: 1)FERTLZ_ADJ
+!               2)VEG_ADJ
+!               3)GROWSEASON
+!
+!     Note:
+!
+!     Requirement:
+!
+!
+!     Imported from SMOKE-BEIS v3.14 and modified
+!          by Tan 07/21/11 for MEGAN v2.10
+!
+!     Function PRECADJ is moved to MET2MGN
+!              PULSETYPE is moved to MET2MGN
+!              PRECIPFAC is moved to MET2MGN
+!
+!     History:
+!
+!=======================================================================
+
+MODULE MODE_SOILNOX
+
+USE MODI_JULIAN
+
+IMPLICIT NONE
+
+!...  Program I/O parameters
+
+!...  External parameters
+
+CONTAINS
+
+!=======================================================================
+!=======================================================================
+FUNCTION FERTLZ_ADJ(KDATE, PLAT) RESULT(PFERTLZ_ADJ)
+
+!***********************************************************************
+!  DESCRIPTION:
+!    This internal function computes a fertilizer adjustment factor
+!    for the given date in yyyyddd format. If it is not growing 
+!    season, the adjustment factor is 0; otherwise, it ranges from
+!    0.0 to 1.0.
+!
+!  CALL:
+!    GROWSEASON
+!
+!  HISTORY:
+!    07/21/11 : Imported from SMOKE-BEIS v3.14 and modified  (Tan)
+!***********************************************************************
+
+IMPLICIT NONE
+      
+!.... Function arguments
+INTEGER, INTENT(IN) :: KDATE
+REAL, DIMENSION(:), INTENT(IN) :: PLAT
+REAL, DIMENSION(SIZE(PLAT)) :: PFERTLZ_ADJ
+
+!.... Local variables
+INTEGER, DIMENSION(SIZE(PLAT)) :: IDAY, ILEN
+
+!-----------------------------------------------------------------------------
+
+CALL GROWSEASON(KDATE, PLAT, IDAY, ILEN)
+
+IF (ANY(IDAY(:)<0).OR.ANY(IDAY(:)>366)) THEN
+  WRITE(*,*) "MODE_SOILNOX: FERTLZ_ADJ: Invalid date specified"
+  STOP
+ENDIF
+
+WHERE ( IDAY(:)==0 )
+  PFERTLZ_ADJ(:) = 0.
+ELSE WHERE( IDAY(:)>=1 .AND. IDAY(:)<30 )
+  ! first month of growing season
+  PFERTLZ_ADJ(:) = 1.
+ELSE WHERE( IDAY(:)>=30 .AND. IDAY(:)<=366 )
+  ! later month of growing season
+  PFERTLZ_ADJ(:) = 1. + (30.-FLOAT(IDAY(:)))/(FLOAT(ILEN(:)))
+END WHERE
+
+END FUNCTION FERTLZ_ADJ
+!=======================================================================
+!=======================================================================
+
+
+!=======================================================================
+!=======================================================================
+FUNCTION VEG_ADJ(PLAI) RESULT(PVEG_ADJ)
+
+!***********************************************************************
+!  DESCRIPTION
+!    This internal function computes a vegetation adjustment factor
+!    based on LAIv.  See Yienger and Levy 1995
+!    VEG_ADJ = (EXP(-0.24*LAIv)+EXP(-0.0525*LAIv))*0.5 
+!
+!  CALL
+!    NONE
+!
+!  HISTORY:
+!***********************************************************************
+
+IMPLICIT NONE
+
+!...  Function arguments
+REAL, DIMENSION(:), INTENT(IN) :: PLAI
+!
+REAL, DIMENSION(SIZE(PLAI)) :: PVEG_ADJ
+!
+!-----------------------------------------------------------------------------
+
+PVEG_ADJ = (EXP(-0.24*PLAI)+EXP(-0.0525*PLAI))*0.5 
+
+!******************  FORMAT  STATEMENTS   ******************************
+
+END FUNCTION VEG_ADJ
+!=======================================================================
+!=======================================================================
+      
+
+!=======================================================================
+!=======================================================================
+SUBROUTINE GROWSEASON(KDATE, PLAT, KDAY, KLEN)
+
+!***********************************************************************
+!  DESCRIPTION
+!    This internal function computes the day of the growing season
+!    corresponding to the given date in yyyyddd format.
+!
+!  CALL
+!    JULIAN
+!
+!  HISTORY:
+!    07/21/11 : Imported from SMOKE-BEIS v3.14 and modified  (Tan)
+!               Variation of growing season depends on latitude
+!               (Guenther)
+!***********************************************************************
+
+IMPLICIT NONE
+
+!.......  Function arguments
+INTEGER, INTENT(IN) :: KDATE
+REAL, DIMENSION(:), INTENT(IN) :: PLAT
+!
+INTEGER, DIMENSION(:), INTENT(OUT) :: KDAY
+INTEGER, DIMENSION(:), INTENT(OUT) :: KLEN
+
+!.......  Local parameters
+INTEGER   :: ISEASON_START
+INTEGER   :: ISEASON_END
+
+!.......  Local variables
+INTEGER, DIMENSION(SIZE(PLAT)) :: ISJULIAN_START, ISJULIAN_END
+INTEGER :: ISJULIAN_START0, ISJULIAN_START1, ISJULIAN_START2
+INTEGER :: ISJULIAN_END1, ISJULIAN_END2
+INTEGER :: IYEAR, IDAY, IDAY_ADD
+!
+!-----------------------------------------------------------------------------
+
+IYEAR = INT(KDATE/1000.)
+IDAY = KDATE - IYEAR*1000.
+
+IF( IDAY.LT.1 .OR. IDAY.GT.366 ) THEN
+  WRITE(*,*) "MODE_SOILNOX: GROWSEASON: Invalid date specified"
+  STOP 
+ENDIF
+    
+ISJULIAN_START1 = G2J(IYEAR, 0101)
+ISJULIAN_END1   = G2J(IYEAR, 0531)
+ISJULIAN_START2 = G2J(IYEAR, 1101)
+ISJULIAN_END2   = G2J(IYEAR, 1231)
+
+IF ( IDAY.GE.1101 .AND. IDAY.LE.1231 ) THEN
+  ISJULIAN_START0 = ISJULIAN_START2
+  IDAY_ADD = 0
+ELSE IF ( IDAY.GE.0101 .AND. IDAY.LE.0531 ) THEN
+  ISJULIAN_START0 = ISJULIAN_START1
+  IDAY_ADD = 61
+ELSE
+  ISJULIAN_START0 = IDAY
+  IDAY_ADD = -1
+ENDIF
+
+WHERE ( PLAT(:).LT.-60. .OR. PLAT(:).GT.65. )
+
+  ! antarctic start = 0 end = 0, no growing
+  KDAY(:) = 0
+  KLEN(:) = 0
+
+ELSE WHERE ( PLAT(:).LE.23. .AND. PLAT(:).GE.-23. ) 
+
+  ! tropical regions, year round
+  KDAY(:) = IDAY - ISJULIAN_START1 + 1
+  KLEN(:) = ISJULIAN_END2 - ISJULIAN_START1 + 1
+
+ELSE WHERE ( PLAT(:).LT.-23. )
+
+! southern hemisphere
+    KDAY(:) = IDAY - ISJULIAN_START0 + 1 + IDAY_ADD
+    KLEN(:) = 30 + 31 + ISJULIAN_END1 - ISJULIAN_START1 + 1
+
+ELSE WHERE ( PLAT.GT.23. )
+
+  ! northern hemisphere temperate
+  ! start= (lat-23)*4.5            189
+  ! end = 365 -((lat-23)*3.3)      226
+
+  ISJULIAN_START(:) = INT( (PLAT(:)-23.0)*4.5 )
+  ISJULIAN_END  (:) = ISJULIAN_END2 - INT( (PLAT(:)-23.0)*3.3 )
+
+  WHERE ( IDAY.GE.ISJULIAN_START(:) .AND. IDAY.LE.ISJULIAN_END(:) )
+    KDAY(:) = IDAY - ISJULIAN_START(:) + 1
+  ELSE WHERE
+    KDAY(:) = 0
+  END WHERE
+  KLEN(:) = ISJULIAN_END(:) - ISJULIAN_START(:) + 1
+
+END WHERE
+
+!******************  FORMAT  STATEMENTS   ******************************
+
+END SUBROUTINE GROWSEASON
+!=======================================================================
+!=======================================================================
+
+
+!=======================================================================
+!=======================================================================
+FUNCTION G2J(KYYYY, KMMDD) RESULT(KG2J)
+
+IMPLICIT NONE
+
+!.......  Function arguments
+INTEGER, INTENT(IN) :: KYYYY
+INTEGER, INTENT(IN) :: KMMDD
+
+INTEGER :: KG2J
+
+!.......  Local parameters
+INTEGER :: IMM
+INTEGER :: IDD
+
+IMM  = INT(KMMDD/100.)
+IDD  = KMMDD - IMM*100
+KG2J = JULIAN(KYYYY, IMM, IDD)
+
+END FUNCTION G2J
+
+!=======================================================================
+!=======================================================================
+END MODULE MODE_SOILNOX
diff --git a/src/LIB/MEGAN/soilnox.F90 b/src/LIB/MEGAN/soilnox.F90
new file mode 100644
index 000000000..0435a01a2
--- /dev/null
+++ b/src/LIB/MEGAN/soilnox.F90
@@ -0,0 +1,172 @@
+SUBROUTINE SOILNOX(KDATE, KTIME, OSOIL, KSLTYP, PRECADJ, &
+                   PLAT, PTA, PSOILM, PSOILT, PLAIC, PCFNO, PCFNOG )
+
+!***********************************************************************
+!  DESCRIPTION:
+!  
+!     Uses new NO algorithm NO = Normalized*Tadj*Padj*Fadj*Cadj
+!     to estimate NO emissions 
+!     Information needed to estimate NO emissions
+!     Julian Day          (integer)    JDATE
+!     Surface Temperature (MCIP field) TA    (K)
+!     Soil Moisture       (MCIP field) SOILM (M**3/M**3) (LSOIL)
+!          (ratio of volume of water per volume of soil)
+!     Soil Temperature    (MCIP field) SOILT (K)         (LSOIL)
+!     Soil Type           (MCIP field) ISLTYP            (LSOIL)
+!
+!     saturation values for soil types (constants)       (LSOIL)
+!     FOR PX Version, the Temperature adjustment factor accounts for wet and dry soils
+!                and  the precipitation adjustment factor accounts for saturated soils
+!     FOR the non-PX version, the basic algorithm remains with a temperature adjustment factor (dry soil)
+!                     and no adjustment for saturated soils
+!
+!
+!     The following arrays are updated after each call to SOILNOX
+!     PULTYPE   type of NO emission pulse 
+!     PULSEDATE julian date for the beginning of an NO pulse 
+!     PULSETIME        time for the beginning of an NO pulse
+!  
+!     The calculation are based on the following paper by J.J. Yienger and H. Levy II
+!     J.J. Yienger and H. Levy II, Journal of Geophysical Research, vol 100,11447-11464,1995
+!
+!     The Temperature Adjustment Factor is based on section 4.2 for wet and dry soils with
+!       the following modification (PX version):
+!       Instead of classifying soils as either 'wet' or 'dry', the wet and dry adjustment is 
+!       calculated at each grid cell.  A linear interpolation between the wet and dry adjustment
+!       factor is made using the relative amount of soil moisture in the top layer (1cm)
+!       as the interpolating factor.  The relative amount of soil moisture is determined by
+!       taking the MCIP soil moisture field and dividing by the saturation value defined for each
+!       soil type in the PX version of MCIP
+!       the soil temperature is used in PX version
+!
+!     The Precipation Adjustment factor is based on section 4.1 with the following modifications.
+!       The rainrate is computed from the MCIP directly using a 24 hr daily total. 
+!       THe types of Pulses as described in YL95 were used to estimate the NO emission
+!       rate.  
+!
+!    Also see the following paper for more information:
+!    Proceedings of the Air and Waste Management Association/U.S. Environmental Protection
+!    Agency EMission Inventory Conference, Raleigh October 26-28, 1999 Raleigh NC
+!    by Tom Pierce and Lucille Bender       
+!
+!    REFERENCES
+!
+!    JACQUEMIN B. AND NOILHAN J. (1990), BOUND.-LAYER METEOROL., 52, 93-134.
+!    J.J. Yienger and H. Levy II, Journal of Geophysical Research, vol 100,11447-11464,1995
+!    T. Pierce and L. Bender, Examining the Temporal Variability of Ammonia and Nitric Oxide Emissions from Agricultural Processes
+!       Proceedings of the Air and Waste Management Association/U.S. Environmental Protection
+!        Agency EMission Inventory Conference, Raleigh October 26-28, 1999 Raleigh NC
+!
+!  PRECONDITIONS REQUIRED:
+!     Normalized NO emissions, Surface Temperature, Soil Moisture, Soil type,
+!     NO emission pulse type, soil moisture from previous time step, julian date
+!     of NO emission pulse start, time of NO emission pulse start,
+!     soil type, SOIL TYPES, Land use data
+!
+!  SUBROUTINES AND FUNCTIONS CALLED (directly or indirectly):
+!     FERTILIZER_ADJ computes fertlizer adjustment factor
+!     VEG_ADJ        computes vegatation adjustment factor
+!     GROWSEASON     computes day of growing season
+!     
+!  REVISION  HISTORY:
+!    10/01 : Prototype by GAP
+!    10/03 : modified transition to non growing season for jul-oct of the year
+!    08/04 : Converted to SMOKE code style by C. Seppanen
+!    07/21/11 : Imported form SMOKE-BEIS v3.14 for MEGAN v2.10
+! 
+!***********************************************************************
+
+USE MODE_SOILNOX
+
+USE MODD_MEGAN
+
+IMPLICIT NONE
+
+!.........  ARGUMENTS and their descriptions
+INTEGER, INTENT(IN) :: KDATE   !  current simulation date (YYYYDDD)
+INTEGER, INTENT(IN) :: KTIME   !  current simulation time (HHMMSS)
+LOGICAL, INTENT(IN) :: OSOIL              ! true: using PX version of MCIP
+!
+INTEGER, DIMENSION(:), INTENT(IN) :: KSLTYP      !  soil type
+!
+REAL, INTENT(IN) :: PRECADJ     !  precip adjustment
+!
+REAL, DIMENSION(:), INTENT(IN)    :: PLAT        !  Latitude
+REAL, DIMENSION(:), INTENT(IN)    :: PTA         !  air temperature (K)
+REAL, DIMENSION(:), INTENT(IN)    :: PSOILM      !  soil moisture (m3/m3)
+REAL, DIMENSION(:), INTENT(IN)    :: PSOILT      !  soil temperature (K)
+REAL, DIMENSION(:), INTENT(IN)    :: PLAIC       !  soil temperature (K)
+REAL, DIMENSION(:), INTENT(INOUT) :: PCFNO       !  NO correction factor
+REAL, DIMENSION(:), INTENT(INOUT) :: PCFNOG      !  NO correction factor for grass
+
+!.......  Local ARRAYS
+! Saturation values for 11 soil types from pxpbl.F  (MCIP PX version)
+!       PLEIM-XIU LAND-SURFACE AND PBL MODEL (PX-LSM)
+! See JACQUEMIN B. AND NOILHAN J. (1990), BOUND.-LAYER METEOROL., 52, 93-134.
+
+!.........  SCRATCH LOCAL VARIABLES and their descriptions:
+REAL, DIMENSION(SIZE(PLAT)) :: ZCF           ! NO correction factor
+REAL :: ZTAIR         ! surface temperature
+REAL :: ZTSOI         ! soil temperature
+REAL :: ZCFNOWET, ZCFNODRY, ZRATIO
+
+INTEGER :: JJ, JL      ! counters
+INTEGER :: ISOILCAT      ! soil category
+
+!HARACTER(256)  MESG         ! message buffer
+
+!HARACTER(16) :: PROGNAME = 'SOILNOX'   !  program name
+
+!***********************************************************************
+
+!.....  Loop through cells
+DO JJ = 1,SIZE(PTA)
+
+  ZTAIR = MIN(PTA(JJ),303.)        ! unit in degree K
+
+  IF ( ZTAIR>268.8690 ) THEN  
+    PCFNOG(JJ) = EXP( 0.04686 * ZTAIR - 14.30579 ) ! grass (from BEIS2)
+  ELSE
+    PCFNOG(JJ) = 0.0
+  END IF
+
+!.......  CFNO
+  IF( .NOT.OSOIL ) THEN
+    ZTSOI = 0.72 * ZTAIR + 82.28
+  ELSE
+    ZTSOI = PSOILT(JJ)
+  ENDIF
+
+  ZTSOI = MIN(MAX(ZTSOI,273.16),303.16)
+  ZCFNODRY = (1./3.) * (1./30.) * (ZTSOI-273.16)  ! see YL 1995 Equa 9a p. 11452
+  IF ( ZTSOI<=283.16 ) THEN         ! linear cold case
+    ZCFNOWET = (ZTSOI-273.16)*EXP(-0.103*30.0)*0.28 ! see YL 1995 Equ 7b
+  ELSE                             ! exponential case
+    ZCFNOWET = EXP(0.103 * (ZTSOI-273.16)) * EXP(-0.103 * 30.0)
+  END IF
+
+  IF( .NOT.OSOIL ) THEN
+
+    ZCF(JJ) = 0.5 * ZCFNOWET + 0.5 * ZCFNODRY
+
+  ELSE
+
+    ! soil
+    ISOILCAT = KSLTYP(JJ)
+    IF( ISOILCAT>0 .AND. ISOILCAT<=NMAXSTYPES ) THEN
+      ZRATIO = PSOILM(JJ) / XSATURATION(ISOILCAT)
+      ZCF(JJ) = ZRATIO * ZCFNOWET + (1.-ZRATIO) * ZCFNODRY
+    ELSE
+      ZCF(JJ) = 0.
+    END IF
+    
+  END IF  ! Endif LSOIL
+
+ENDDO
+
+PCFNO(:) = ZCF(:) * FERTLZ_ADJ(KDATE,PLAT) * VEG_ADJ(PLAIC) * PRECADJ
+
+!******************  FORMAT  STATEMENTS   ******************************
+
+END SUBROUTINE SOILNOX
+
diff --git a/src/LIB/MEGAN/solarangle.F90 b/src/LIB/MEGAN/solarangle.F90
new file mode 100644
index 000000000..60ac5815a
--- /dev/null
+++ b/src/LIB/MEGAN/solarangle.F90
@@ -0,0 +1,56 @@
+!-----------------------------------------------------------------------
+!   SUBROUTINE: SOLARANGLE
+!
+!   DESCRIPTION: TO CALCULATE THE SOLAR ZENITH ANGLE.  THIS WILL GIVE
+!                SIN(BETA), NOT THE BETA.
+!
+!   CALL: NONE
+!
+!   REQUIRE: NONE
+!
+!   INPUT:
+!            1) DAY OF YEAR
+!            2) LATITUDE
+!            3) HOUR
+!
+!   OUTPUT: CALCBETA (SOLAR ZENITH ANGLE)
+!
+!   CREATED BY TAN 11/15/06  (BASED ON XXXX'S PROGRAM)
+!
+!-----------------------------------------------------------------------
+SUBROUTINE SOLARANGLE(KDAY, PSHOUR, PLAT, PSINBETA)
+
+USE MODD_MEGAN
+
+IMPLICIT NONE
+
+! INPUT
+INTEGER, DIMENSION(:), INTENT(IN) :: KDAY     ! DOY OR JULIAN DAY
+REAL, DIMENSION(:), INTENT(IN) :: PSHOUR      ! SOLAR HOUR
+REAL, DIMENSION(:), INTENT(IN) :: PLAT        ! LATITUDE
+! OUTPUT
+REAL, DIMENSION(:), INTENT(OUT) :: PSINBETA
+! LOCAL
+!REAL    :: ZBETA                 ! SOLAR ELEVATION ANGLE
+REAL    :: ZSINDELTA, ZCOSDELTA, ZA, ZB
+! CONSTANTS
+INTEGER :: JJ
+
+! CALCULATION
+DO JJ = 1,SIZE(KDAY)
+
+  ZSINDELTA = -SIN(0.40907) * COS( 6.28*(KDAY(JJ)+10.)/365. )
+  ZCOSDELTA = (1.-ZSINDELTA**2)**0.5
+
+  ZA = SIN( PLAT(JJ) / XRPI180 ) * ZSINDELTA
+  ZB = COS( PLAT(JJ) / XRPI180 ) * ZCOSDELTA
+
+  PSINBETA(JJ) = ZA + ZB * COS( 2 * XPI * (PSHOUR(JJ)-12.)/24. )  ! THIS WILL BE TRANSFERED
+                                           ! TO GAMMA_P FUNCTION
+  !ZBETA = ASIN(PSINBETA(JJ)) * XRPI180    ! THIS IS NOT USED.
+
+ENDDO
+
+END SUBROUTINE SOLARANGLE
+!-----------------------------------------------------------------------
+
-- 
GitLab