SURFEX v7.3
General documentation of Surfex
|
00001 ! ##################### 00002 MODULE MODD_GR_BIOG_GARDEN_n 00003 ! ###################### 00004 ! 00005 !! 00006 !!!!**** *MODD_GR_BIOG_GARDEN_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_GARDEN_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 ::XIACAN ! PAR at 3 gauss level for each patch 00042 ! 00043 !* XFISO = isoprene emission flux (ppp.m.s-1) 00044 ! XFMONO = monoterpenes emission flux (ppp m s-1) 00045 REAL, DIMENSION(:), POINTER :: XFISO, XFMONO 00046 ! 00047 ! 00048 END TYPE GR_BIOG_GARDEN_t 00049 00050 TYPE(GR_BIOG_GARDEN_t), ALLOCATABLE, TARGET, SAVE :: GR_BIOG_GARDEN_MODEL(:) 00051 00052 REAL, DIMENSION(:), POINTER :: XISOPOT=>NULL() 00053 !$OMP THREADPRIVATE(XISOPOT) 00054 REAL, DIMENSION(:), POINTER :: XMONOPOT=>NULL() 00055 !$OMP THREADPRIVATE(XMONOPOT) 00056 REAL, DIMENSION(:,:,:),POINTER :: XIACAN=>NULL() 00057 !$OMP THREADPRIVATE(XIACAN) 00058 REAL, DIMENSION(:), POINTER :: XFISO=>NULL(), XFMONO=>NULL() 00059 !$OMP THREADPRIVATE(XFISO, XFMONO) 00060 00061 CONTAINS 00062 00063 SUBROUTINE GR_BIOG_GARDEN_GOTO_MODEL(KFROM, KTO, LKFROM) 00064 LOGICAL, INTENT(IN) :: LKFROM 00065 INTEGER, INTENT(IN) :: KFROM, KTO 00066 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00067 ! 00068 ! Save current state for allocated arrays 00069 IF (LKFROM) THEN 00070 GR_BIOG_GARDEN_MODEL(KFROM)%XISOPOT=>XISOPOT 00071 GR_BIOG_GARDEN_MODEL(KFROM)%XMONOPOT=>XMONOPOT 00072 GR_BIOG_GARDEN_MODEL(KFROM)%XIACAN=>XIACAN 00073 GR_BIOG_GARDEN_MODEL(KFROM)%XFISO=>XFISO 00074 GR_BIOG_GARDEN_MODEL(KFROM)%XFMONO=>XFMONO 00075 ENDIF 00076 ! 00077 ! Current model is set to model KTO 00078 IF (LHOOK) CALL DR_HOOK('MODD_GR_BIOG_GARDEN_N:GR_BIOG_GARDEN_GOTO_MODEL',0,ZHOOK_HANDLE) 00079 XISOPOT=>GR_BIOG_GARDEN_MODEL(KTO)%XISOPOT 00080 XMONOPOT=>GR_BIOG_GARDEN_MODEL(KTO)%XMONOPOT 00081 XIACAN=>GR_BIOG_GARDEN_MODEL(KTO)%XIACAN 00082 XFISO=>GR_BIOG_GARDEN_MODEL(KTO)%XFISO 00083 XFMONO=>GR_BIOG_GARDEN_MODEL(KTO)%XFMONO 00084 IF (LHOOK) CALL DR_HOOK('MODD_GR_BIOG_GARDEN_N:GR_BIOG_GARDEN_GOTO_MODEL',1,ZHOOK_HANDLE) 00085 00086 END SUBROUTINE GR_BIOG_GARDEN_GOTO_MODEL 00087 00088 SUBROUTINE GR_BIOG_GARDEN_ALLOC(KMODEL) 00089 INTEGER, INTENT(IN) :: KMODEL 00090 INTEGER :: J 00091 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00092 IF (LHOOK) CALL DR_HOOK("MODD_GR_BIOG_GARDEN_N:GR_BIOG_GARDEN_ALLOC",0,ZHOOK_HANDLE) 00093 ALLOCATE(GR_BIOG_GARDEN_MODEL(KMODEL)) 00094 DO J=1,KMODEL 00095 NULLIFY(GR_BIOG_GARDEN_MODEL(J)%XISOPOT) 00096 NULLIFY(GR_BIOG_GARDEN_MODEL(J)%XMONOPOT) 00097 NULLIFY(GR_BIOG_GARDEN_MODEL(J)%XIACAN) 00098 NULLIFY(GR_BIOG_GARDEN_MODEL(J)%XFISO) 00099 NULLIFY(GR_BIOG_GARDEN_MODEL(J)%XFMONO) 00100 ENDDO 00101 IF (LHOOK) CALL DR_HOOK("MODD_GR_BIOG_GARDEN_N:GR_BIOG_GARDEN_ALLOC",1,ZHOOK_HANDLE) 00102 END SUBROUTINE GR_BIOG_GARDEN_ALLOC 00103 00104 SUBROUTINE GR_BIOG_GARDEN_DEALLO 00105 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00106 IF (LHOOK) CALL DR_HOOK("MODD_GR_BIOG_GARDEN_N:GR_BIOG_GARDEN_DEALLO",0,ZHOOK_HANDLE) 00107 IF (ALLOCATED(GR_BIOG_GARDEN_MODEL)) DEALLOCATE(GR_BIOG_GARDEN_MODEL) 00108 IF (LHOOK) CALL DR_HOOK("MODD_GR_BIOG_GARDEN_N:GR_BIOG_GARDEN_DEALLO",1,ZHOOK_HANDLE) 00109 END SUBROUTINE GR_BIOG_GARDEN_DEALLO 00110 00111 END MODULE MODD_GR_BIOG_GARDEN_n