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