SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/modd_data_covern.F90
Go to the documentation of this file.
00001 !     ####################
00002       MODULE MODD_DATA_COVER_n
00003 !     ######################
00004 !
00005 !!****  *MODD_DATA_COVER_n* - declaration of correspondances between surface
00006 !!                            classes and variables, for parameters that
00007 !!                            can change as function of physical options
00008 !!                            (GARDENs or not).
00009 !!
00010 !!    PURPOSE
00011 !!    -------
00012 !     Declaration of surface parameters
00013 !
00014 !!
00015 !!**  IMPLICIT ARGUMENTS
00016 !!    ------------------
00017 !!      None 
00018 !!
00019 !!    REFERENCE
00020 !!    ---------
00021 !!
00022 !!    AUTHOR
00023 !!    ------
00024 !!      V. Masson    *Meteo France*
00025 !!
00026 !!    MODIFICATIONS
00027 !!    -------------
00028 !!      Original       09/2011
00029 !
00030 !*       0.   DECLARATIONS
00031 !             ------------
00032 !
00033 !
00034 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00035 USE PARKIND1  ,ONLY : JPRB
00036 !
00037 IMPLICIT NONE
00038 
00039 TYPE DATA_COVER_t
00040 !
00041 !-----------------------------------------------------------------------------------------------------
00042 !
00043 REAL, DIMENSION(:),   POINTER :: XDATA_TOWN   ! artificial surfaces fraction
00044 REAL, DIMENSION(:),   POINTER :: XDATA_NATURE ! natural and cul. fraction
00045 REAL, DIMENSION(:),   POINTER :: XDATA_GARDEN ! garden fraction
00046 REAL, DIMENSION(:),   POINTER :: XDATA_BLD    ! building fraction in
00047                                               ! artificial areas
00048 REAL, DIMENSION(:),   POINTER :: XDATA_WALL_O_HOR  ! ratio of vert. surf.
00049 !                                                  ! over hor. surf.
00050 !
00051 LOGICAL                           :: LGARDEN      ! T: define urban green areas
00052 !                                                 ! F: no urban green areas
00053 !
00054 !-----------------------------------------------------------------------------------------------------
00055 !
00056 END TYPE DATA_COVER_t
00057 
00058 TYPE(DATA_COVER_t), ALLOCATABLE, TARGET, SAVE :: DATA_COVER_MODEL(:)
00059 
00060 REAL, POINTER, DIMENSION(:)   :: XDATA_TOWN=>NULL()
00061 !$OMP THREADPRIVATE(XDATA_TOWN)
00062 REAL, POINTER, DIMENSION(:)   :: XDATA_NATURE=>NULL()
00063 !$OMP THREADPRIVATE(XDATA_NATURE)
00064 REAL, POINTER, DIMENSION(:)   :: XDATA_GARDEN=>NULL()
00065 !$OMP THREADPRIVATE(XDATA_GARDEN)
00066 REAL, POINTER, DIMENSION(:)   :: XDATA_BLD   =>NULL()
00067 !$OMP THREADPRIVATE(XDATA_BLD)
00068 REAL, POINTER, DIMENSION(:)   :: XDATA_WALL_O_HOR   =>NULL()
00069 !$OMP THREADPRIVATE(XDATA_WALL_O_HOR)
00070 LOGICAL, POINTER :: LGARDEN=>NULL()
00071 !$OMP THREADPRIVATE(LGARDEN)
00072 
00073 CONTAINS
00074 
00075 SUBROUTINE DATA_COVER_GOTO_MODEL(KFROM, KTO, LKFROM)
00076 LOGICAL, INTENT(IN) :: LKFROM
00077 INTEGER, INTENT(IN) :: KFROM, KTO
00078 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00079 
00080 !
00081 ! Save current state for allocated arrays
00082 IF (LKFROM) THEN
00083 DATA_COVER_MODEL(KFROM)%XDATA_TOWN=>XDATA_TOWN
00084 DATA_COVER_MODEL(KFROM)%XDATA_NATURE=>XDATA_NATURE
00085 DATA_COVER_MODEL(KFROM)%XDATA_GARDEN=>XDATA_GARDEN
00086 DATA_COVER_MODEL(KFROM)%XDATA_BLD=>XDATA_BLD
00087 DATA_COVER_MODEL(KFROM)%XDATA_WALL_O_HOR=>XDATA_WALL_O_HOR
00088 ENDIF
00089 !
00090 ! Current model is set to model KTO
00091 IF (LHOOK) CALL DR_HOOK('MODD_DATA_COVER_N:DATA_COVER_GOTO_MODEL',0,ZHOOK_HANDLE)
00092 
00093 XDATA_TOWN=>DATA_COVER_MODEL(KTO)%XDATA_TOWN
00094 XDATA_NATURE=>DATA_COVER_MODEL(KTO)%XDATA_NATURE
00095 XDATA_GARDEN=>DATA_COVER_MODEL(KTO)%XDATA_GARDEN
00096 XDATA_BLD=>DATA_COVER_MODEL(KTO)%XDATA_BLD
00097 XDATA_WALL_O_HOR=>DATA_COVER_MODEL(KTO)%XDATA_WALL_O_HOR
00098 LGARDEN=>DATA_COVER_MODEL(KTO)%LGARDEN
00099 
00100 IF (LHOOK) CALL DR_HOOK('MODD_DATA_COVER_N:DATA_COVER_GOTO_MODEL',1,ZHOOK_HANDLE)
00101 
00102 END SUBROUTINE DATA_COVER_GOTO_MODEL
00103 
00104 SUBROUTINE DATA_COVER_ALLOC(KMODEL)
00105 INTEGER, INTENT(IN) :: KMODEL
00106 INTEGER :: J
00107 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00108 IF (LHOOK) CALL DR_HOOK("MODD_DATA_COVER_N:DATA_COVER_ALLOC",0,ZHOOK_HANDLE)
00109 ALLOCATE(DATA_COVER_MODEL(KMODEL))
00110 DO J=1,KMODEL
00111   NULLIFY(DATA_COVER_MODEL(J)%XDATA_TOWN)
00112   NULLIFY(DATA_COVER_MODEL(J)%XDATA_NATURE)
00113   NULLIFY(DATA_COVER_MODEL(J)%XDATA_GARDEN)
00114   NULLIFY(DATA_COVER_MODEL(J)%XDATA_BLD)
00115   NULLIFY(DATA_COVER_MODEL(J)%XDATA_WALL_O_HOR)
00116 ENDDO
00117 DATA_COVER_MODEL(:)%LGARDEN=.FALSE.
00118 IF (LHOOK) CALL DR_HOOK("MODD_DATA_COVER_N:DATA_COVER_ALLOC",1,ZHOOK_HANDLE)
00119 END SUBROUTINE DATA_COVER_ALLOC
00120 
00121 SUBROUTINE DATA_COVER_DEALLO
00122 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00123 IF (LHOOK) CALL DR_HOOK("MODD_DATA_COVER_N:DATA_COVER_DEALLO",0,ZHOOK_HANDLE)
00124 IF (ALLOCATED(DATA_COVER_MODEL)) DEALLOCATE(DATA_COVER_MODEL)
00125 IF (LHOOK) CALL DR_HOOK("MODD_DATA_COVER_N:DATA_COVER_DEALLO",1,ZHOOK_HANDLE)
00126 END SUBROUTINE DATA_COVER_DEALLO
00127 
00128 END MODULE MODD_DATA_COVER_n
00129