SURFEX v7.3
General documentation of Surfex
|
00001 ! ##################### 00002 MODULE MODD_GR_BIOG_n 00003 ! ###################### 00004 ! 00005 !! 00006 !!!!**** *MODD_GR_BIOG_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_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 !SOILNOX 00047 REAL, DIMENSION(:), POINTER :: XNOFLUX 00048 ! 00049 ! 00050 END TYPE GR_BIOG_t 00051 00052 TYPE(GR_BIOG_t), ALLOCATABLE, TARGET, SAVE :: GR_BIOG_MODEL(:) 00053 00054 REAL, DIMENSION(:), POINTER :: XISOPOT=>NULL() 00055 !$OMP THREADPRIVATE(XISOPOT) 00056 REAL, DIMENSION(:), POINTER :: XMONOPOT=>NULL() 00057 !$OMP THREADPRIVATE(XMONOPOT) 00058 REAL, DIMENSION(:,:,:),POINTER :: XIACAN=>NULL() 00059 !$OMP THREADPRIVATE(XIACAN) 00060 REAL, DIMENSION(:), POINTER :: XFISO=>NULL(), XFMONO=>NULL() 00061 !$OMP THREADPRIVATE(XFISO,XFMONO) 00062 REAL, DIMENSION(:), POINTER :: XNOFLUX=>NULL() 00063 !$OMP THREADPRIVATE(XNOFLUX) 00064 00065 CONTAINS 00066 00067 SUBROUTINE GR_BIOG_GOTO_MODEL(KFROM, KTO, LKFROM) 00068 LOGICAL, INTENT(IN) :: LKFROM 00069 INTEGER, INTENT(IN) :: KFROM, KTO 00070 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00071 ! 00072 ! Save current state for allocated arrays 00073 IF (LKFROM) THEN 00074 GR_BIOG_MODEL(KFROM)%XISOPOT=>XISOPOT 00075 GR_BIOG_MODEL(KFROM)%XMONOPOT=>XMONOPOT 00076 GR_BIOG_MODEL(KFROM)%XIACAN=>XIACAN 00077 GR_BIOG_MODEL(KFROM)%XFISO=>XFISO 00078 GR_BIOG_MODEL(KFROM)%XFMONO=>XFMONO 00079 GR_BIOG_MODEL(KFROM)%XNOFLUX=>XNOFLUX 00080 ENDIF 00081 ! 00082 ! Current model is set to model KTO 00083 IF (LHOOK) CALL DR_HOOK('MODD_GR_BIOG_N:GR_BIOG_GOTO_MODEL',0,ZHOOK_HANDLE) 00084 XISOPOT=>GR_BIOG_MODEL(KTO)%XISOPOT 00085 XMONOPOT=>GR_BIOG_MODEL(KTO)%XMONOPOT 00086 XIACAN=>GR_BIOG_MODEL(KTO)%XIACAN 00087 XFISO=>GR_BIOG_MODEL(KTO)%XFISO 00088 XFMONO=>GR_BIOG_MODEL(KTO)%XFMONO 00089 XNOFLUX=>GR_BIOG_MODEL(KTO)%XNOFLUX 00090 IF (LHOOK) CALL DR_HOOK('MODD_GR_BIOG_N:GR_BIOG_GOTO_MODEL',1,ZHOOK_HANDLE) 00091 00092 END SUBROUTINE GR_BIOG_GOTO_MODEL 00093 00094 SUBROUTINE GR_BIOG_ALLOC(KMODEL) 00095 INTEGER, INTENT(IN) :: KMODEL 00096 INTEGER :: J 00097 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00098 IF (LHOOK) CALL DR_HOOK("MODD_GR_BIOG_N:GR_BIOG_ALLOC",0,ZHOOK_HANDLE) 00099 ALLOCATE(GR_BIOG_MODEL(KMODEL)) 00100 DO J=1,KMODEL 00101 NULLIFY(GR_BIOG_MODEL(J)%XISOPOT) 00102 NULLIFY(GR_BIOG_MODEL(J)%XMONOPOT) 00103 NULLIFY(GR_BIOG_MODEL(J)%XIACAN) 00104 NULLIFY(GR_BIOG_MODEL(J)%XFISO) 00105 NULLIFY(GR_BIOG_MODEL(J)%XFMONO) 00106 NULLIFY(GR_BIOG_MODEL(J)%XNOFLUX) 00107 ENDDO 00108 IF (LHOOK) CALL DR_HOOK("MODD_GR_BIOG_N:GR_BIOG_ALLOC",1,ZHOOK_HANDLE) 00109 END SUBROUTINE GR_BIOG_ALLOC 00110 00111 SUBROUTINE GR_BIOG_DEALLO 00112 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00113 IF (LHOOK) CALL DR_HOOK("MODD_GR_BIOG_N:GR_BIOG_DEALLO",0,ZHOOK_HANDLE) 00114 IF (ALLOCATED(GR_BIOG_MODEL)) DEALLOCATE(GR_BIOG_MODEL) 00115 IF (LHOOK) CALL DR_HOOK("MODD_GR_BIOG_N:GR_BIOG_DEALLO",1,ZHOOK_HANDLE) 00116 END SUBROUTINE GR_BIOG_DEALLO 00117 00118 END MODULE MODD_GR_BIOG_n