SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/modd_gr_biog_greenroofn.F90
Go to the documentation of this file.
00001 !     #####################
00002       MODULE MODD_GR_BIOG_GREENROOF_n
00003 !     ######################
00004 !
00005 !!
00006 !!!!****  *MODD_GR_BIOG_GREENROOF_n* - Declaration of variables for biogenic emissions 
00007 !
00008 !!
00009 !!**  IMPLICIT ARGUMENTS
00010 !!    ------------------
00011 !!      None 
00012 !!
00013 !!    REFERENCE
00014 !!    ---------
00015 !!    AUTHOR
00016 !!    ------
00017 !!      F. Solmon  *LA*
00018 !!
00019 !!    MODIFICATIONS
00020 !!    -------------
00021 !!    P. Tulet  30/07/03 externalisation of biogenics fluxes
00022 !!     
00023 !*       0.   DECLARATIONS
00024 !             ----------
00025 !
00026 !
00027 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00028 USE PARKIND1  ,ONLY : JPRB
00029 !
00030 IMPLICIT NONE
00031 
00032 TYPE GR_BIOG_GREENROOF_t
00033 !
00034 !
00035 !
00036 !* Emission potential for isoprene and monoterpenes 
00037   REAL, DIMENSION(:), POINTER :: XISOPOT 
00038   REAL, DIMENSION(:), POINTER :: XMONOPOT 
00039 !
00040 !* Radiation at different level(cf Gauss) in the canopy
00041   REAL, DIMENSION(:), POINTER :: XP_IACAN !pack radiation
00042   REAL, DIMENSION(:,:,:),POINTER ::XIACAN ! PAR at 3 gauss level for each patch
00043 !
00044 !* XFISO  = isoprene emission flux (ppp.m.s-1)
00045 !  XFMONO = monoterpenes emission flux (ppp m s-1)
00046   REAL, DIMENSION(:), POINTER :: XFISO, XFMONO
00047 !
00048 !
00049 END TYPE GR_BIOG_GREENROOF_t
00050 
00051 TYPE(GR_BIOG_GREENROOF_t), ALLOCATABLE, TARGET, SAVE :: GR_BIOG_GREENROOF_MODEL(:)
00052 
00053 REAL, DIMENSION(:), POINTER :: XISOPOT=>NULL()
00054 !$OMP THREADPRIVATE(XISOPOT)
00055 REAL, DIMENSION(:), POINTER :: XMONOPOT=>NULL()
00056 !$OMP THREADPRIVATE(XMONOPOT)
00057 REAL, DIMENSION(:), POINTER :: XP_IACAN=>NULL()
00058 !$OMP THREADPRIVATE(XP_IACAN)
00059 REAL, DIMENSION(:,:,:),POINTER :: XIACAN=>NULL()
00060 !$OMP THREADPRIVATE(XIACAN)
00061 REAL, DIMENSION(:), POINTER :: XFISO=>NULL(), XFMONO=>NULL()
00062 !$OMP THREADPRIVATE(XFISO, XFMONO)
00063 
00064 CONTAINS
00065 
00066 SUBROUTINE GR_BIOG_GREENROOF_GOTO_MODEL(KFROM, KTO, LKFROM)
00067 LOGICAL, INTENT(IN) :: LKFROM
00068 INTEGER, INTENT(IN) :: KFROM, KTO
00069 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00070 !
00071 ! Save current state for allocated arrays
00072 IF (LKFROM) THEN
00073 GR_BIOG_GREENROOF_MODEL(KFROM)%XISOPOT=>XISOPOT
00074 GR_BIOG_GREENROOF_MODEL(KFROM)%XMONOPOT=>XMONOPOT
00075 GR_BIOG_GREENROOF_MODEL(KFROM)%XP_IACAN=>XP_IACAN
00076 GR_BIOG_GREENROOF_MODEL(KFROM)%XIACAN=>XIACAN
00077 GR_BIOG_GREENROOF_MODEL(KFROM)%XFISO=>XFISO
00078 GR_BIOG_GREENROOF_MODEL(KFROM)%XFMONO=>XFMONO
00079 ENDIF
00080 !
00081 ! Current model is set to model KTO
00082 IF (LHOOK) CALL DR_HOOK('MODD_GR_BIOG_GREENROOF_N:GR_BIOG_GREENROOF_GOTO_MODEL',0,ZHOOK_HANDLE)
00083 XISOPOT=>GR_BIOG_GREENROOF_MODEL(KTO)%XISOPOT
00084 XMONOPOT=>GR_BIOG_GREENROOF_MODEL(KTO)%XMONOPOT
00085 XP_IACAN=>GR_BIOG_GREENROOF_MODEL(KTO)%XP_IACAN
00086 XIACAN=>GR_BIOG_GREENROOF_MODEL(KTO)%XIACAN
00087 XFISO=>GR_BIOG_GREENROOF_MODEL(KTO)%XFISO
00088 XFMONO=>GR_BIOG_GREENROOF_MODEL(KTO)%XFMONO
00089 IF (LHOOK) CALL DR_HOOK('MODD_GR_BIOG_GREENROOF_N:GR_BIOG_GREENROOF_GOTO_MODEL',1,ZHOOK_HANDLE)
00090 
00091 END SUBROUTINE GR_BIOG_GREENROOF_GOTO_MODEL
00092 
00093 SUBROUTINE GR_BIOG_GREENROOF_ALLOC(KMODEL)
00094 INTEGER, INTENT(IN) :: KMODEL
00095 INTEGER :: J
00096 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00097 IF (LHOOK) CALL DR_HOOK("MODD_GR_BIOG_GREENROOF_N:GR_BIOG_GREENROOF_ALLOC",0,ZHOOK_HANDLE)
00098 ALLOCATE(GR_BIOG_GREENROOF_MODEL(KMODEL))
00099 DO J=1,KMODEL
00100   NULLIFY(GR_BIOG_GREENROOF_MODEL(J)%XISOPOT)
00101   NULLIFY(GR_BIOG_GREENROOF_MODEL(J)%XMONOPOT)
00102   NULLIFY(GR_BIOG_GREENROOF_MODEL(J)%XP_IACAN)
00103   NULLIFY(GR_BIOG_GREENROOF_MODEL(J)%XIACAN)
00104   NULLIFY(GR_BIOG_GREENROOF_MODEL(J)%XFISO)
00105   NULLIFY(GR_BIOG_GREENROOF_MODEL(J)%XFMONO)
00106 ENDDO
00107 IF (LHOOK) CALL DR_HOOK("MODD_GR_BIOG_GREENROOF_N:GR_BIOG_GREENROOF_ALLOC",1,ZHOOK_HANDLE)
00108 END SUBROUTINE GR_BIOG_GREENROOF_ALLOC
00109 
00110 SUBROUTINE GR_BIOG_GREENROOF_DEALLO
00111 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00112 IF (LHOOK) CALL DR_HOOK("MODD_GR_BIOG_GREENROOF_N:GR_BIOG_GREENROOF_DEALLO",0,ZHOOK_HANDLE)
00113 IF (ALLOCATED(GR_BIOG_GREENROOF_MODEL)) DEALLOCATE(GR_BIOG_GREENROOF_MODEL)
00114 IF (LHOOK) CALL DR_HOOK("MODD_GR_BIOG_GREENROOF_N:GR_BIOG_GREENROOF_DEALLO",1,ZHOOK_HANDLE)
00115 END SUBROUTINE GR_BIOG_GREENROOF_DEALLO
00116 
00117 END MODULE MODD_GR_BIOG_GREENROOF_n