SURFEX v7.3
General documentation of Surfex
|
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