SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/LIB/TRIP/modd_diag_tripn.F90
Go to the documentation of this file.
00001 !######################
00002 MODULE MODD_DIAG_TRIP_n
00003 !######################
00004 !
00005 !!****  *MODD_DIAG_TRIP - declaration of diagnostics for TRIP scheme
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !
00010 !!
00011 !!**  IMPLICIT ARGUMENTS
00012 !!    ------------------
00013 !!      None 
00014 !!
00015 !!    REFERENCE
00016 !!    ---------
00017 !!
00018 !!    AUTHOR
00019 !!    ------
00020 !!      B. Decharme   *Meteo France*
00021 !!
00022 !!    MODIFICATIONS
00023 !!    -------------
00024 !!      Original       21/05/08
00025 !
00026 !*       0.   DECLARATIONS
00027 !             ------------
00028 !
00029 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00030 USE PARKIND1  ,ONLY : JPRB
00031 !
00032 IMPLICIT NONE
00033 
00034 TYPE DIAG_TRIP_t
00035 !-------------------------------------------------------------------------------
00036 !
00037   REAL, POINTER, DIMENSION(:,:) :: XDIAG_SURF_STO   ! River storage             [kg m-2]
00038   REAL, POINTER, DIMENSION(:,:) :: XDIAG_GROUND_STO ! Groundwater storage       [kg m-2]
00039   REAL, POINTER, DIMENSION(:,:) :: XDIAG_FLOOD_STO  ! Floodplains storage       [kg m-2]
00040   REAL, POINTER, DIMENSION(:,:) :: XDIAG_QDIS       ! Discharge                 [m3 s-1]
00041   REAL, POINTER, DIMENSION(:,:) :: XDIAG_QGF        ! Groundwater flow to river [m3 s-1]
00042   REAL, POINTER, DIMENSION(:,:) :: XDIAG_VEL        ! Stream flow velocity      [m s-1 ]
00043   REAL, POINTER, DIMENSION(:,:) :: XDIAG_HS         ! Stream river depth        [m     ]
00044   REAL, POINTER, DIMENSION(:,:) :: XDIAG_FF         ! TRIP flooded fraction     [-]
00045   REAL, POINTER, DIMENSION(:,:) :: XDIAG_HF         ! Flood depth               [m     ]
00046 !
00047   REAL, POINTER, DIMENSION(:,:) :: XDIAG_QFR        ! Flood flow to river          [m3 s-1]
00048   REAL, POINTER, DIMENSION(:,:) :: XDIAG_QRF        ! River flow to floodplain     [m3 s-1]
00049   REAL, POINTER, DIMENSION(:,:) :: XDIAG_QIN        ! Inflow to the river          [m3 s-1]
00050   REAL, POINTER, DIMENSION(:,:) :: XDIAG_VFIN       ! River flow to flood velocity [m s-1]
00051   REAL, POINTER, DIMENSION(:,:) :: XDIAG_VFOUT      ! Flood flow to river velocity [m s-1]
00052   REAL, POINTER, DIMENSION(:,:) :: XDIAG_WF         ! Flood width during dt        [m]
00053   REAL, POINTER, DIMENSION(:,:) :: XDIAG_LF         ! Flood lenght during dt       [m]
00054   REAL, POINTER, DIMENSION(:,:) :: XDIAG_HSF        ! River-Flood depth comparison [m]
00055   REAL, POINTER, DIMENSION(:,:) :: XDIAG_SOURCE     ! Floodplains source (Pf-Ef-If)[kg m-2]
00056 !
00057 !-------------------------------------------------------------------------------
00058 !
00059 END TYPE DIAG_TRIP_t
00060 !
00061 TYPE(DIAG_TRIP_t), ALLOCATABLE, TARGET, SAVE :: DIAG_TRIP_MODEL(:)
00062 !
00063 REAL, POINTER, DIMENSION(:,:) :: XDIAG_SURF_STO=>NULL()           
00064 !$OMP THREADPRIVATE(XDIAG_SURF_STO)
00065 REAL, POINTER, DIMENSION(:,:) :: XDIAG_GROUND_STO=>NULL()          
00066 !$OMP THREADPRIVATE(XDIAG_GROUND_STO)
00067 REAL, POINTER, DIMENSION(:,:) :: XDIAG_FLOOD_STO=>NULL()          
00068 !$OMP THREADPRIVATE(XDIAG_FLOOD_STO)
00069 REAL, POINTER, DIMENSION(:,:) :: XDIAG_QDIS=>NULL()      
00070 !$OMP THREADPRIVATE(XDIAG_QDIS)
00071 REAL, POINTER, DIMENSION(:,:) :: XDIAG_QGF=>NULL()         
00072 !$OMP THREADPRIVATE(XDIAG_QGF)
00073 REAL, POINTER, DIMENSION(:,:) :: XDIAG_VEL=>NULL()             
00074 !$OMP THREADPRIVATE(XDIAG_VEL)
00075 REAL, POINTER, DIMENSION(:,:) :: XDIAG_HS=>NULL()       
00076 !$OMP THREADPRIVATE(XDIAG_HS)
00077 REAL, POINTER, DIMENSION(:,:) :: XDIAG_FF=>NULL()
00078 !$OMP THREADPRIVATE(XDIAG_FF)
00079 REAL, POINTER, DIMENSION(:,:) :: XDIAG_HF=>NULL()        
00080 !$OMP THREADPRIVATE(XDIAG_HF)
00081 REAL, POINTER, DIMENSION(:,:) :: XDIAG_QFR=>NULL()      
00082 !$OMP THREADPRIVATE(XDIAG_QFR)
00083 REAL, POINTER, DIMENSION(:,:) :: XDIAG_QRF=>NULL()       
00084 !$OMP THREADPRIVATE(XDIAG_QRF)
00085 !
00086 REAL, POINTER, DIMENSION(:,:) :: XDIAG_QIN=>NULL()
00087 !$OMP THREADPRIVATE(XDIAG_QIN)
00088 REAL, POINTER, DIMENSION(:,:) :: XDIAG_VFIN=>NULL()
00089 !$OMP THREADPRIVATE(XDIAG_VFIN)
00090 REAL, POINTER, DIMENSION(:,:) :: XDIAG_VFOUT=>NULL()
00091 !$OMP THREADPRIVATE(XDIAG_VFOUT)
00092 REAL, POINTER, DIMENSION(:,:) :: XDIAG_WF=>NULL()
00093 !$OMP THREADPRIVATE(XDIAG_WF)
00094 REAL, POINTER, DIMENSION(:,:) :: XDIAG_LF=>NULL()
00095 !$OMP THREADPRIVATE(XDIAG_LF)
00096 REAL, POINTER, DIMENSION(:,:) :: XDIAG_HSF=>NULL()
00097 !$OMP THREADPRIVATE(XDIAG_HSF)
00098 REAL, POINTER, DIMENSION(:,:) :: XDIAG_SOURCE=>NULL()
00099 !$OMP THREADPRIVATE(XDIAG_SOURCE)
00100 !
00101 CONTAINS
00102 !
00103 SUBROUTINE DIAG_TRIP_GOTO_MODEL(KFROM, KTO, LKFROM)
00104 LOGICAL, INTENT(IN) :: LKFROM
00105 INTEGER, INTENT(IN) :: KFROM, KTO
00106 !
00107 ! Save current state for allocated arrays
00108 IF (LKFROM) THEN
00109 DIAG_TRIP_MODEL(KFROM)%XDIAG_SURF_STO=>XDIAG_SURF_STO
00110 DIAG_TRIP_MODEL(KFROM)%XDIAG_GROUND_STO=>XDIAG_GROUND_STO
00111 DIAG_TRIP_MODEL(KFROM)%XDIAG_FLOOD_STO=>XDIAG_FLOOD_STO
00112 DIAG_TRIP_MODEL(KFROM)%XDIAG_QDIS=>XDIAG_QDIS
00113 DIAG_TRIP_MODEL(KFROM)%XDIAG_QGF=>XDIAG_QGF
00114 DIAG_TRIP_MODEL(KFROM)%XDIAG_VEL=>XDIAG_VEL
00115 DIAG_TRIP_MODEL(KFROM)%XDIAG_HS=>XDIAG_HS
00116 DIAG_TRIP_MODEL(KFROM)%XDIAG_FF=>XDIAG_FF
00117 DIAG_TRIP_MODEL(KFROM)%XDIAG_HF=>XDIAG_HF
00118 !
00119 DIAG_TRIP_MODEL(KFROM)%XDIAG_QFR=>XDIAG_QFR
00120 DIAG_TRIP_MODEL(KFROM)%XDIAG_QRF=>XDIAG_QRF
00121 DIAG_TRIP_MODEL(KFROM)%XDIAG_QIN=>XDIAG_QIN
00122 DIAG_TRIP_MODEL(KFROM)%XDIAG_VFIN=>XDIAG_VFIN
00123 DIAG_TRIP_MODEL(KFROM)%XDIAG_VFOUT=>XDIAG_VFOUT
00124 DIAG_TRIP_MODEL(KFROM)%XDIAG_WF=>XDIAG_WF
00125 DIAG_TRIP_MODEL(KFROM)%XDIAG_LF=>XDIAG_LF
00126 DIAG_TRIP_MODEL(KFROM)%XDIAG_HSF=>XDIAG_HSF
00127 DIAG_TRIP_MODEL(KFROM)%XDIAG_SOURCE=>XDIAG_SOURCE
00128 ENDIF
00129 !
00130 ! Current model is set to model KTO
00131 XDIAG_SURF_STO=>DIAG_TRIP_MODEL(KTO)%XDIAG_SURF_STO
00132 XDIAG_GROUND_STO=>DIAG_TRIP_MODEL(KTO)%XDIAG_GROUND_STO
00133 XDIAG_FLOOD_STO=>DIAG_TRIP_MODEL(KTO)%XDIAG_FLOOD_STO
00134 XDIAG_QDIS=>DIAG_TRIP_MODEL(KTO)%XDIAG_QDIS
00135 XDIAG_QGF=>DIAG_TRIP_MODEL(KTO)%XDIAG_QGF
00136 XDIAG_VEL=>DIAG_TRIP_MODEL(KTO)%XDIAG_VEL
00137 XDIAG_HS=>DIAG_TRIP_MODEL(KTO)%XDIAG_HS
00138 XDIAG_FF=>DIAG_TRIP_MODEL(KTO)%XDIAG_FF
00139 XDIAG_HF=>DIAG_TRIP_MODEL(KTO)%XDIAG_HF
00140 !
00141 XDIAG_QFR=>DIAG_TRIP_MODEL(KTO)%XDIAG_QFR
00142 XDIAG_QRF=>DIAG_TRIP_MODEL(KTO)%XDIAG_QRF
00143 XDIAG_QIN=>DIAG_TRIP_MODEL(KTO)%XDIAG_QIN
00144 XDIAG_VFIN=>DIAG_TRIP_MODEL(KTO)%XDIAG_VFIN
00145 XDIAG_VFOUT=>DIAG_TRIP_MODEL(KTO)%XDIAG_VFOUT
00146 XDIAG_WF=>DIAG_TRIP_MODEL(KTO)%XDIAG_WF
00147 XDIAG_LF=>DIAG_TRIP_MODEL(KTO)%XDIAG_LF
00148 XDIAG_HSF=>DIAG_TRIP_MODEL(KTO)%XDIAG_HSF
00149 XDIAG_SOURCE=>DIAG_TRIP_MODEL(KTO)%XDIAG_SOURCE
00150 !
00151 END SUBROUTINE DIAG_TRIP_GOTO_MODEL
00152 
00153 SUBROUTINE DIAG_TRIP_ALLOC(KMODEL)
00154 INTEGER, INTENT(IN) :: KMODEL
00155 INTEGER :: J
00156 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00157 IF (LHOOK) CALL DR_HOOK("MODD_DIAG_TRIP_N:DIAG_TRIP_ALLOC",0,ZHOOK_HANDLE)
00158 ALLOCATE(DIAG_TRIP_MODEL(KMODEL))
00159 DO J=1,KMODEL
00160   NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_SURF_STO)
00161   NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_GROUND_STO)
00162   NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_FLOOD_STO)
00163   NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_QDIS)
00164   NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_QGF)
00165   NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_VEL)
00166   NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_HS)
00167   NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_FF)
00168   NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_HF)
00169   NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_QFR)
00170   NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_QRF)
00171   NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_QIN)
00172   NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_VFIN)
00173   NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_VFOUT)
00174   NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_WF)
00175   NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_LF)
00176   NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_HSF)
00177   NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_SOURCE)
00178 ENDDO
00179 IF (LHOOK) CALL DR_HOOK("MODD_DIAG_TRIP_N:DIAG_TRIP_ALLOC",1,ZHOOK_HANDLE)
00180 END SUBROUTINE DIAG_TRIP_ALLOC
00181 
00182 SUBROUTINE DIAG_TRIP_DEALLO
00183 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00184 IF (LHOOK) CALL DR_HOOK("MODD_DIAG_TRIP_N:DIAG_TRIP_DEALLO",0,ZHOOK_HANDLE)
00185 IF (ALLOCATED(DIAG_TRIP_MODEL)) DEALLOCATE(DIAG_TRIP_MODEL)
00186 IF (LHOOK) CALL DR_HOOK("MODD_DIAG_TRIP_N:DIAG_TRIP_DEALLO",1,ZHOOK_HANDLE)
00187 END SUBROUTINE DIAG_TRIP_DEALLO
00188 !
00189 END MODULE MODD_DIAG_TRIP_n