-
RODIER Quentin authoredRODIER Quentin authored
init_megann.F90 18.73 KiB
!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
!SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
!SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
!SFX_LIC for details. version 1.
! ###############################
SUBROUTINE INIT_MEGAN_n(IO, S, K, NP, MSF, MGN, PLAT, HSV, PMEGAN_FIELDS)
! ###############################
!!
!!*** *BVOCEM*
!!
!! PURPOSE
!! -------
!! Calculate the biogenic emission fluxes upon the MEGAN code
!! http://lar.wsu.edu/megan/
!!
!! METHOD
!! ------
!!
!!
!! AUTHOR
!! ------
!! P. Tulet (LACy)
!!
!! MODIFICATIONS
!! -------------
!! Original: 25/10/14
!! Modified: 06/2017, J. Pianezze, adaptation for SurfEx v8.0
!! Modified: 06/2018, P. Tulet, add PFT and LAI
!! Modified: 11/2021, P. Tulet, update PFT with Ecoclimap-SG
!!
!!
!! EXTERNAL
!! --------
!!
!! IMPLICIT ARGUMENTS
!! ------------------
!
USE MODD_MEGAN_SURF_FIELDS_n, ONLY : MEGAN_SURF_FIELDS_t
USE MODD_MEGAN_n, ONLY : MEGAN_t
!
USE MODD_ISBA_OPTIONS_n, ONLY : ISBA_OPTIONS_t
USE MODD_ISBA_n, ONLY : ISBA_S_t, ISBA_P_t, ISBA_K_t, ISBA_NP_t
!
USE MODD_DATA_COVER_PAR
!
USE MODD_SURF_PAR, ONLY : XUNDEF
USE MODD_DATA_COVER, ONLY : XDATA_LAI
!
USE MODI_VEGTYPE_TO_PATCH
#ifdef MNH_MEGAN
USE MODD_MEGAN
USE MODI_INIT_MGN2MECH
#endif
USE MODI_ABOR1_SFX
!
!
!------------------------------------------------------------------------------
!
!* 0. DECLARATIONS
! -----------------
!
IMPLICIT NONE
!
TYPE(ISBA_OPTIONS_t), INTENT(INOUT) :: IO
TYPE(ISBA_S_t), INTENT(INOUT) :: S
TYPE(ISBA_K_t), INTENT(INOUT) :: K
TYPE(ISBA_NP_t), INTENT(INOUT) :: NP
TYPE(MEGAN_SURF_FIELDS_t), INTENT(INOUT) :: MSF
TYPE(MEGAN_t), INTENT(INOUT) :: MGN
!
!* 0.1 declaration of arguments
!
REAL, DIMENSION(:), INTENT(IN) :: PLAT ! Lat of the grid cell
CHARACTER(LEN=6), DIMENSION(:),INTENT(IN) :: HSV ! name of all scalar variables
REAL, DIMENSION(:,:),INTENT(IN) :: PMEGAN_FIELDS ! EF factors
!
!* 0.1 Declaration of local variables
#ifdef MNH_MEGAN
!
INTEGER :: JI, JSV, JP
!
INTEGER:: IP_TRBE, IP_TRBD, IP_TEBE, IP_TEBD, IP_TENE, &
IP_BOBD, IP_BONE, IP_BOND, IP_SHRB
!
REAL, DIMENSION(SIZE(K%XCLAY,1),IO%NPATCH) :: ZH_TREE
REAL,DIMENSION(SIZE(K%XCLAY,1)) :: ZSILT
REAL,DIMENSION(SIZE(K%XCLAY,1)) :: ZLAI
!
!IF (.NOT.IO%LTR_ML) THEN
! CALL ABOR1_SFX('INIT_MEGANN: FATAL ERROR PUT LTR_ML = T in NAM_ISBA (PREP_PGD step)')
!END IF
!
ALLOCATE(MGN%XPFT (N_MGN_PFT,SIZE(K%XCLAY,1)))
ALLOCATE(MGN%XEF (N_MGN_SPC,SIZE(K%XCLAY,1)))
ALLOCATE(MGN%XLAI (SIZE(K%XCLAY,1)))
ALLOCATE(MGN%NSLTYP (SIZE(K%XCLAY,1)))
ALLOCATE(MGN%XBIOFLX(SIZE(K%XCLAY,1)))
MGN%XBIOFLX(:) = 0.
!
! Prepare the mechanism conversion between Megan and MesoNH
MGN%CMECHANISM = "RELACS2" ! scheme default in MesoNH
!
DO JSV=1,SIZE(HSV)
IF (TRIM(HSV(JSV))=="DIEN") MGN%CMECHANISM = "RACM"
IF (TRIM(HSV(JSV))=="ALKA") MGN%CMECHANISM = "RELACS"
IF (TRIM(HSV(JSV))=="ALKA") MGN%CMECHANISM = "RELACS"
IF (TRIM(HSV(JSV))=="OLEH") MGN%CMECHANISM = "CACM"
IF (TRIM(HSV(JSV))=="URG7") MGN%CMECHANISM = "RELACS2"
END DO
!
IF (TRIM(MGN%CMECHANISM)=="RACM" .OR.TRIM(MGN%CMECHANISM)=="RADM2".OR.TRIM(MGN%CMECHANISM)=="SAPRCII" .OR.&
TRIM(MGN%CMECHANISM)=="SAPRC99" .OR.TRIM(MGN%CMECHANISM)=="CBMZ" .OR.TRIM(MGN%CMECHANISM)=="SAPRC99X".OR.&
TRIM(MGN%CMECHANISM)=="SAPRC99Q".OR.TRIM(MGN%CMECHANISM)=="CB05" .OR.TRIM(MGN%CMECHANISM)=="CB6" .OR.&
TRIM(MGN%CMECHANISM)=="SOAX") THEN
MGN%CMECHANISM2 = MGN%CMECHANISM
ELSE
MGN%CMECHANISM2 = "SAPRC99" ! megan default
END IF
!
MGN%LCONVERSION = .TRUE.
!
CALL INIT_MGN2MECH(MGN%CMECHANISM2, MGN%LCONVERSION, MGN%CVNAME3D, MGN%CMECH_SPC, MGN%NSPMH_MAP, &
MGN%NMECH_MAP, MGN%XCONV_FAC, MGN%XMECH_MWT, MGN%NVARS3D, MGN%N_SCON_SPC )
!
DO JSV=1,SIZE(HSV)
IF (TRIM(HSV(JSV)) == "NO") MGN%NNO = JSV ! ReLACS
IF (TRIM(HSV(JSV)) == "ALD") MGN%NALD = JSV ! ReLACS
IF (TRIM(HSV(JSV)) == "BIO") MGN%NBIO = JSV ! ReLACS
IF (TRIM(HSV(JSV)) == "ALKA") MGN%NALKA = JSV ! ReLACS
IF (TRIM(HSV(JSV)) == "ALKE") MGN%NALKE = JSV ! ReLACS
IF (TRIM(HSV(JSV)) == "ARO") MGN%NARO = JSV ! ReLACS
IF (TRIM(HSV(JSV)) == "CARBO") MGN%NCARBO = JSV ! ReLACS
!
IF (TRIM(HSV(JSV)) == "ETHE") MGN%NETHE = JSV ! ReLACS2 or CACM
IF (TRIM(HSV(JSV)) == "OLEL") MGN%NOLEL = JSV ! ReLACS2 or CACM
IF (TRIM(HSV(JSV)) == "OLEH") MGN%NOLEH = JSV ! ReLACS2 or CACM
IF (TRIM(HSV(JSV)) == "ALKL") MGN%NALKL = JSV ! ReLACS2 or CACM
IF (TRIM(HSV(JSV)) == "ALKM") MGN%NALKM = JSV ! ReLACS2 or CACM
IF (TRIM(HSV(JSV)) == "ALKH") MGN%NALKH = JSV ! ReLACS2 or CACM
IF (TRIM(HSV(JSV)) == "AROH") MGN%NAROH = JSV ! ReLACS2 or CACM
IF (TRIM(HSV(JSV)) == "AROL") MGN%NAROL = JSV ! ReLACS2 or CACM
IF (TRIM(HSV(JSV)) == "AROO") MGN%NAROO = JSV ! ReLACS2 or CACM
IF (TRIM(HSV(JSV)) == "AROL") MGN%NAROL = JSV ! ReLACS2 or CACM
IF (TRIM(HSV(JSV)) == "ARAL") MGN%NARAL = JSV ! ReLACS2 or CACM
IF (TRIM(HSV(JSV)) == "ARAC") MGN%NARAC = JSV ! ReLACS2 or CACM
IF (TRIM(HSV(JSV)) == "PAH") MGN%NPAH = JSV ! ReLACS2 or CACM
IF (TRIM(HSV(JSV)) == "ALD2") MGN%NALD2 = JSV ! ReLACS2 or CACM
IF (TRIM(HSV(JSV)) == "KETL") MGN%NKETL = JSV ! ReLACS2 or CACM
IF (TRIM(HSV(JSV)) == "KETH") MGN%NKETH = JSV ! ReLACS2 or CACM
IF (TRIM(HSV(JSV)) == "MEOH") MGN%NMEOH = JSV ! ReLACS2 or CACM
IF (TRIM(HSV(JSV)) == "ETOH") MGN%NETOH = JSV ! ReLACS2 or CACM
IF (TRIM(HSV(JSV)) == "ALCH") MGN%NALCH = JSV ! ReLACS2 or CACM
IF (TRIM(HSV(JSV)) == "ISOP") MGN%NISOP = JSV ! ReLACS2 or CACM
IF (TRIM(HSV(JSV)) == "BIOL") MGN%NBIOL = JSV ! ReLACS2 or CACM
IF (TRIM(HSV(JSV)) == "BIOH") MGN%NBIOH = JSV ! ReLACS2 or CACM
IF (TRIM(HSV(JSV)) == "MTBE") MGN%NMTBE = JSV ! ReLACS2 or CACM
IF (TRIM(HSV(JSV)) == "MVK") MGN%NMVK = JSV ! ReLACS2 or CACM
IF (TRIM(HSV(JSV)) == "MCR") MGN%NMCR = JSV ! ReLACS2 or CACM
IF (TRIM(HSV(JSV)) == "MGLY") MGN%NMGLY = JSV ! ReLACS2 or CACM
IF (TRIM(HSV(JSV)) == "ACID") MGN%NACID = JSV ! ReLACS2 or CACM
IF (TRIM(HSV(JSV)) == "ORA1") MGN%NORA1 = JSV ! ReLACS2 or CACM
IF (TRIM(HSV(JSV)) == "ORA2") MGN%NORA2 = JSV ! ReLACS2 or CACM
END DO
!
DO JSV=1,SIZE(MGN%CVNAME3D) ! megan species (racm family)
IF (TRIM(MGN%CVNAME3D(JSV)) == "ISO") MGN%NISO = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "CH4") MGN%NCH4 = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "ETH") MGN%NETH = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "HC3") MGN%NHC3 = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "HC5") MGN%NHC5 = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "HC8") MGN%NHC8 = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "OL2") MGN%NOL2 = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "OLI") MGN%NOLI = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "OLT") MGN%NOLT = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "ALD") MGN%NALD = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "KET") MGN%NKET = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "TOL") MGN%NTOL = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "HCHO") MGN%NHCHO = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "ORA1") MGN%NORA1 = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "ORA2") MGN%NORA2 = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "API") MGN%NAPI = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "LIM") MGN%NLIM = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "CO") MGN%NCO = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "SO2") MGN%NSO2 = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "NO") MGN%NNO = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "HNO3") MGN%NHNO3 = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "NO2") MGN%NNO2 = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "NR") MGN%NNR = JSV
END DO
!
DO JSV=1,SIZE(MGN%CVNAME3D) ! megan species (soax family)
IF (TRIM(MGN%CVNAME3D(JSV)) == "ISP") MGN%NISP = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "TRP") MGN%NTRP = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "XYLA") MGN%NXYLA = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "CG5") MGN%NCG5 = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "SQT") MGN%NSQT = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "TOLA") MGN%NTOLA = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "CG6") MGN%NCG6 = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "CG4") MGN%NCG4 = JSV
END DO
!
DO JSV=1,SIZE(MGN%CVNAME3D) !megan species (saprc family)
IF (TRIM(MGN%CVNAME3D(JSV)) == "ISOPRENE") MGN%NISOPRENE = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "TRP1") MGN%NTRP1 = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "ACET") MGN%NACET = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "MEK") MGN%NMEK = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "HCOOH") MGN%NHCOOH = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "CCO_OH") MGN%NCCO_OH = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "CCHO") MGN%NCCHO = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "RCHO") MGN%NRCHO = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "RCO_OH") MGN%NRCO_OH = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "BALD") MGN%NBALD = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "ETHENE") MGN%NETHENE = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "ALK4") MGN%NALK4 = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "ALK5") MGN%NALK5 = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "ARO1") MGN%NARO1 = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "ARO2") MGN%NARO2 = JSV
IF (TRIM(MGN%CVNAME3D(JSV)) == "OLE1") MGN%NOLE1 = JSV
END DO
!
! Compute soil USDA type
!
! CLAY : CLAY >= 0.40 SILT < 0.40 SAND < 0.45
! SANDY CLAY : CLAY >= 0.36 SAND >= 0.45
! SILTY CLAY : CLAY >= 0.40 SILT >= 0.40
! SILT : SILT >= 0.8 CLAY < 0.12
! SAND : SAND >= 0.3*CLAY + 0.87
! SANDY CLAY LOAM : CLAY >= 0.28 CLAY < 0.36 SAND >= 0.45 | CLAY >= 0.20 CLAY < 0.28 SILT < 0.28
! SILTY CLAY LOAM : CLAY >= 0.28 CLAY < 0.40 SAND < 0.20
! CLAY LOAM : CLAY >= 0.28 CLAY < 0.40 SAND >= 0.20 SAND < 0.45
! SILT LOAM : SILT >= 0.8 CLAY >= 0.12 | SILT >= 0.5 SILT < 0.8 CLAY < 0.28
! LOAMY SAND : SAND >= CLAY + 0.7 SAND < 0.3*CLAY + 0.87
! SANDY LOAM : SAND >= 0.52 CLAY < 0.20 | SAND >= (0.5 - CLAY) CLAY < 0.07
! LOAM : CLAY >= 0.20 CLAY < 0.28 SILT >= 0.28 SILT < 0.5 | SAND >= (0.5 - CLAY) CLAY < 0.20
!
ZSILT(:) = 1. - K%XCLAY(:,1) - K%XSAND(:,1)
!
WHERE (ZSILT(:) <= 0.) ZSILT(:) = 0.0
!
DO JI = 1, SIZE(K%XCLAY,1)
IF ( K%XCLAY(JI,1)>=0.28 ) THEN
IF ( K%XSAND(JI,1)>=0.45 ) THEN
IF (K%XCLAY(JI,1)>=0.36 ) THEN ! Sandy Clay
MGN%NSLTYP(JI) = 9
ELSE ! Sandy Clay Loam
MGN%NSLTYP(JI) = 6
ENDIF
ELSEIF ( K%XCLAY(JI,1)>=0.40 ) THEN
IF ( ZSILT(JI)>=0.40 ) THEN ! Silty Clay
MGN%NSLTYP(JI) = 10
ELSE ! Clay
MGN%NSLTYP(JI) = 11
ENDIF
ELSEIF (K%XSAND(JI,1)>=0.20 ) THEN ! Clay Loam
MGN%NSLTYP(JI) = 8
ELSE ! Silty Clay Loam
MGN%NSLTYP(JI) = 7
ENDIF
ENDIF
!
IF ( ZSILT(JI)>=0.8 .AND. K%XCLAY(JI,1)<0.12 ) THEN ! Silt
MGN%NSLTYP(JI) = 12
ELSEIF ( K%XCLAY(JI,1)<0.28 ) THEN ! ( clay est forcément < 0.28 )
IF ( ZSILT(JI) >= 0.5 ) THEN ! Silt Loam
MGN%NSLTYP(JI) = 4
ELSEIF ( K%XCLAY(JI,1)>=0.20 ) THEN
IF ( ZSILT(JI)>=0.28 ) THEN ! Loam
MGN%NSLTYP(JI) = 5
ELSE ! Sandy Clay Loam
MGN%NSLTYP(JI) = 6
ENDIF
ENDIF
ENDIF
!
IF ( K%XSAND(JI,1)>=(0.3*K%XCLAY(JI,1) + 0.87) ) THEN ! Sand
MGN%NSLTYP(JI) = 1
ELSEIF ( K%XSAND(JI,1)>=(K%XCLAY(JI,1) + 0.7) ) THEN ! Loamy Sand
MGN%NSLTYP(JI) = 2
ELSEIF ( K%XSAND(JI,1)>=0.52 .AND. K%XCLAY(JI,1)<0.20 ) THEN ! Sandy Loam
MGN%NSLTYP(JI) = 3
ELSEIF ( K%XSAND(JI,1)>=(0.5 - K%XCLAY(JI,1)) ) THEN
IF ( K%XCLAY(JI,1)<0.07 ) THEN ! Sandy Loam
MGN%NSLTYP(JI) = 3
ELSEIF ( K%XCLAY(JI,1)<0.20 ) THEN ! Loam
MGN%NSLTYP(JI) = 5
ENDIF
ENDIF
!
ENDDO
!
! Passage des type de végétation isba/vegtype avec ceux de Megan
!
IP_TRBE = VEGTYPE_TO_PATCH(NVT_TRBE, IO%NPATCH)
IP_TRBD = VEGTYPE_TO_PATCH(NVT_TRBD, IO%NPATCH)
IP_TEBE = VEGTYPE_TO_PATCH(NVT_TEBE, IO%NPATCH)
IP_TEBD = VEGTYPE_TO_PATCH(NVT_TEBD, IO%NPATCH)
IP_TENE = VEGTYPE_TO_PATCH(NVT_TENE, IO%NPATCH)
IP_BOBD = VEGTYPE_TO_PATCH(NVT_BOBD, IO%NPATCH)
IP_BONE = VEGTYPE_TO_PATCH(NVT_BONE, IO%NPATCH)
IP_BOND = VEGTYPE_TO_PATCH(NVT_BOND, IO%NPATCH)
IP_SHRB = VEGTYPE_TO_PATCH(NVT_SHRB, IO%NPATCH)
!
MGN%XPFT(:,:) = 0.
!
ZH_TREE(:,:) = XUNDEF
DO JP = 1,IO%NPATCH
DO JI = 1,NP%AL(JP)%NSIZE_P
ZH_TREE(NP%AL(JP)%NR_P(JI),JP) = NP%AL(JP)%XH_TREE(JI)
ENDDO
ENDDO
!
! 1 Needleleaf evergreen temperate tree
! -------------------------------------
! utilisation de la classe NVT_TENE
MGN%XPFT(1,:) = S%XVEGTYPE(:,NVT_TENE)
!
! 2 Needleleaf evergreen boreal tree
! -------------------------------------
!utilisation de la classe NVT_BONE
MGN%XPFT(2,:) = S%XVEGTYPE(:,NVT_BONE)
!
!3 Needleleaf deciduous boreal tree
! -------------------------------------
!utilisation de la classe NVT_BOND
MGN%XPFT(3,:) = S%XVEGTYPE(:,NVT_BOND)
!
!4 Broadleaf evergreen tropical tree
! -------------------------------------
!utilisation de la classe NVT_TRBE
MGN%XPFT(4,:) = S%XVEGTYPE(:,NVT_TRBE)
!
!5 Broadleaf evergreen temperate tree
! -------------------------------------
MGN%XPFT(5,:) = S%XVEGTYPE(:,NVT_TEBE)
!
!6 Broadleaf deciduous tropical tree
! -------------------------------------
MGN%XPFT(6,:) = S%XVEGTYPE(:,NVT_TRBD)
!
!7 Broadleaf deciduous temperate tree
! -------------------------------------
MGN%XPFT(7,:) = S%XVEGTYPE(:,NVT_TEBD)
!
!8 Broadleaf deciduous boreal tree
! -------------------------------------
MGN%XPFT(8,:) = S%XVEGTYPE(:,NVT_BOBD)
!
!9 Broadleaf evergreen shrub
! -------------------------------------
!utilisation de la classe NVT_SHBR pour -30 < LAT < 30
WHERE (((PLAT(:) .GE. -30.) .AND. (PLAT(:) .LE. 30.)))
MGN%XPFT(9,:) = S%XVEGTYPE(:,NVT_SHRB)
ELSE WHERE
MGN%XPFT(9,:) = 0.
END WHERE
!
!10 Broadleaf deciduous temperate shrub
! -------------------------------------
!utilisation de la classe NVT_SHBR pour 30 < LAT < 60
WHERE (((PLAT(:) .GE. 30.) .AND. (PLAT(:) .LT. 60.)).OR.&
((PLAT(:) .LE. -30.) .AND. (PLAT(:) .GT. -60.)))
MGN%XPFT(10,:) = S%XVEGTYPE(:,NVT_SHRB)
ELSE WHERE
MGN%XPFT(10,:) = 0.
END WHERE
!
!11 Broadleaf deciduous boreal_shrub
! -------------------------------------
!utilisation de la classe NVT_SHBR pour LAT > 60
WHERE (((PLAT(:) .GE. 60.) .OR. (PLAT(:) .LE. -60.)))
MGN%XPFT(11,:) = S%XVEGTYPE(:,NVT_SHRB)
ELSE WHERE
MGN%XPFT(11,:) = 0.
END WHERE
!
!12 C3 arctic grass
! -------------------------------------
MGN%XPFT(12,:) = S%XVEGTYPE(:,NVT_BOGR)
!
!13 C3 non-arctic grass
! -------------------------------------
MGN%XPFT(13,:) = S%XVEGTYPE(:,NVT_GRAS)
!
!14 C4 grass
! -------------------------------------
MGN%XPFT(14,:) = S%XVEGTYPE(:,NVT_TROG)
!
!15 Corn
! -------------------------------------
MGN%XPFT(15,:) = S%XVEGTYPE(:,NVT_C4)
!
!16 Wheat
! -------------------------------------
IF (NVT_C3W .NE. 0 ) THEN ! use ecoclimap_sg
MGN%XPFT(16,:) = S%XVEGTYPE(:,NVT_C3W) + S%XVEGTYPE(:,NVT_C3S)
ELSE ! use ecaclimap2.0
MGN%XPFT(16,:) = S%XVEGTYPE(:,NVT_C3)
END IF
!
! Emission factor
MGN%XEF(:,:) = 0.
!
! Default values
! 1: ISOP isoprene
MGN%XEF(1,:) = 6000.
! 2: MYRC myrcene
MGN%XEF(2,:) = 20.
! 3: SABI sabinene
MGN%XEF(3,:) = 300.
! 4: LIMO limonene
MGN%XEF(4,:) = 80.
! 5: A_3CAR carene_3
MGN%XEF(5,:) = 40.
! 6: OCIM ocimene_t_b
MGN%XEF(6,:) = 40.
! 7: BPIN pinene_b
MGN%XEF(7,:) = 125.
! 8: APIN pinene_a
MGN%XEF(8,:) = 300.
! 9: OMTP A_2met_styrene + cymene_p + cymene_o + phellandrene_a + thujene_a + terpinene_a
! + terpinene_g + terpinolene + phellandrene_b + camphene + bornene + fenchene_a
! + ocimene_al + ....
! 10: FARN
! 11: BCAR
! 12: OSQT
! 13: MBO
! 14: MEOH
! 15: ACTO
! 16: CO
! 17: NO
!MGN%XEF(17,:,1) = 30.
! 18: BIDER
! 19: STRESS
! 20: OTHER
! Values from the megan maps fields (to be introduced at the PREP_PGD step - nameliste PRE_PGD1.nam)
DO JSV=1, MSF%NMEGAN_NBR
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "EFISOP") MGN%XEF(1,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "EFMYRC") MGN%XEF(2,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "EFSABI") MGN%XEF(3,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "EFLIMO") MGN%XEF(4,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "EFCARE") MGN%XEF(5,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "EFOCIM") MGN%XEF(6,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "EFBPIN") MGN%XEF(7,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "EFAPIN") MGN%XEF(8,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "EFOMTP") MGN%XEF(9,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "EFFARN") MGN%XEF(10,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "EFBCAR") MGN%XEF(11,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "EFOSQT") MGN%XEF(12,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "EFMBO") MGN%XEF(13,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "EFMEOH") MGN%XEF(14,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "EFACTO") MGN%XEF(15,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "EFCO") MGN%XEF(16,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "EFNO") MGN%XEF(17,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "EFBIDER") MGN%XEF(18,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "EFSTRESS") MGN%XEF(19,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "EFOTHER") MGN%XEF(20,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT1") MGN%XPFT(1,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT2") MGN%XPFT(2,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT3") MGN%XPFT(3,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT4") MGN%XPFT(4,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT5") MGN%XPFT(5,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT6") MGN%XPFT(6,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT7") MGN%XPFT(7,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT8") MGN%XPFT(8,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT9") MGN%XPFT(9,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT10") MGN%XPFT(10,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT11") MGN%XPFT(11,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT12") MGN%XPFT(12,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT13") MGN%XPFT(13,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT14") MGN%XPFT(14,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT15") MGN%XPFT(15,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT16") MGN%XPFT(16,:) = PMEGAN_FIELDS(:,JSV)
IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "LAI") MGN%XLAI(:) = PMEGAN_FIELDS(:,JSV)
END DO
#endif
!
!---------------------------------------------------------------------------
!
END SUBROUTINE INIT_MEGAN_n