SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/modd_data_tsz0n.F90
Go to the documentation of this file.
00001 !     ##########################
00002       MODULE MODD_DATA_TSZ0_n
00003 !     ##########################
00004 !
00005 !!****  *MODD_DATA_TSZ0 - declaration of TSZ0 surface parameters for TSZ0 scheme
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !
00010 !!
00011 !!**  IMPLICIT ARGUMENTS
00012 !!    ------------------
00013 !!      None 
00014 !!
00015 !!    REFERENCE
00016 !!    ---------
00017 !!
00018 !!    AUTHOR
00019 !!    ------
00020 !!      P. Le Moigne  *Meteo France*
00021 !!
00022 !!    MODIFICATIONS
00023 !!    -------------
00024 !!      Original       09/2007
00025 !
00026 !*       0.   DECLARATIONS
00027 !             ------------
00028 !
00029 !
00030     
00031 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00032 USE PARKIND1  ,ONLY : JPRB
00033 !
00034 IMPLICIT NONE
00035 
00036 TYPE DATA_TSZ0_t
00037 !-------------------------------------------------------------------------------
00038 INTEGER                     :: NTIME
00039 REAL, POINTER, DIMENSION(:) :: XDATA_DTS
00040 REAL, POINTER, DIMENSION(:) :: XDATA_DHUGRD       
00041 !-------------------------------------------------------------------------------
00042 END TYPE DATA_TSZ0_t
00043 
00044 TYPE(DATA_TSZ0_t), ALLOCATABLE, TARGET, SAVE :: DATA_TSZ0_MODEL(:)
00045 
00046 INTEGER, POINTER :: NTIME=>NULL()
00047 !$OMP THREADPRIVATE(NTIME)
00048 REAL, POINTER, DIMENSION(:)  :: XDATA_DTS => NULL()
00049 !$OMP THREADPRIVATE(XDATA_DTS)
00050 REAL, POINTER, DIMENSION(:)  :: XDATA_DHUGRD => NULL()
00051 !$OMP THREADPRIVATE(XDATA_DHUGRD)
00052 
00053 CONTAINS
00054 
00055 SUBROUTINE DATA_TSZ0_GOTO_MODEL(KFROM, KTO, LKFROM)
00056 LOGICAL, INTENT(IN) :: LKFROM
00057 INTEGER, INTENT(IN) :: KFROM, KTO
00058 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00059 !
00060 ! Save current state for allocated arrays
00061 IF (LKFROM) THEN
00062 DATA_TSZ0_MODEL(KFROM)%XDATA_DTS=>XDATA_DTS
00063 DATA_TSZ0_MODEL(KFROM)%XDATA_DHUGRD=>XDATA_DHUGRD
00064 ENDIF
00065 !
00066 ! Current model is set to model KTO
00067 IF (LHOOK) CALL DR_HOOK('MODD_DATA_TSZ0_N:DATA_TSZ0_GOTO_MODEL',0,ZHOOK_HANDLE)
00068 NTIME=>DATA_TSZ0_MODEL(KTO)%NTIME
00069 XDATA_DTS=>DATA_TSZ0_MODEL(KTO)%XDATA_DTS
00070 XDATA_DHUGRD=>DATA_TSZ0_MODEL(KTO)%XDATA_DHUGRD
00071 IF (LHOOK) CALL DR_HOOK('MODD_DATA_TSZ0_N:DATA_TSZ0_GOTO_MODEL',1,ZHOOK_HANDLE)
00072 
00073 END SUBROUTINE DATA_TSZ0_GOTO_MODEL
00074 
00075 SUBROUTINE DATA_TSZ0_ALLOC(KMODEL)
00076 INTEGER, INTENT(IN) :: KMODEL
00077 INTEGER :: J
00078 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00079 IF (LHOOK) CALL DR_HOOK("MODD_DATA_TSZ0_N:DATA_TSZ0_ALLOC",0,ZHOOK_HANDLE)
00080 ALLOCATE(DATA_TSZ0_MODEL(KMODEL))
00081 DO J=1,KMODEL
00082   NULLIFY(DATA_TSZ0_MODEL(J)%XDATA_DTS)
00083   NULLIFY(DATA_TSZ0_MODEL(J)%XDATA_DHUGRD)
00084 ENDDO
00085 DATA_TSZ0_MODEL(:)%NTIME=0
00086 IF (LHOOK) CALL DR_HOOK("MODD_DATA_TSZ0_N:DATA_TSZ0_ALLOC",1,ZHOOK_HANDLE)
00087 END SUBROUTINE DATA_TSZ0_ALLOC
00088 
00089 SUBROUTINE DATA_TSZ0_DEALLO
00090 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00091 IF (LHOOK) CALL DR_HOOK("MODD_DATA_TSZ0_N:DATA_TSZ0_DEALLO",0,ZHOOK_HANDLE)
00092 IF (ALLOCATED(DATA_TSZ0_MODEL)) DEALLOCATE(DATA_TSZ0_MODEL)
00093 IF (LHOOK) CALL DR_HOOK("MODD_DATA_TSZ0_N:DATA_TSZ0_DEALLO",1,ZHOOK_HANDLE)
00094 END SUBROUTINE DATA_TSZ0_DEALLO
00095 
00096 END MODULE MODD_DATA_TSZ0_n