SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/flag_diag_update.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE FLAG_DIAG_UPDATE(OFRAC, ODIAG_GRID, K2M, OSURF_BUDGET, ORAD_BUDGET, OCOEF, &
00003                                   OSURF_VARS, KBEQ, KDSTEQ, ODIAG_OCEAN, OINTERPOL_SST,     &
00004                                   OWATER_PROFILE, OINTERPOL_TS,                             &
00005                                   OSURF_EVAP_BUDGET, OFLOOD, OSURF_MISC_BUDGET_ISBA,        &
00006                                   OSURF_MISC_BUDGET_TEB)
00007 !     ############################################################
00008 !
00009 !!****  *FLAG_DIAG_UPDATE* - routine to modify selection of output fields
00010 !!
00011 !!    PURPOSE
00012 !!    -------
00013 !!
00014 !!**  METHOD
00015 !!    ------
00016 !!
00017 !!    EXTERNAL
00018 !!    --------
00019 !!
00020 !!
00021 !!    IMPLICIT ARGUMENTS
00022 !!    ------------------
00023 !!
00024 !!    REFERENCE
00025 !!    ---------
00026 !!
00027 !!
00028 !!    AUTHOR
00029 !!    ------
00030 !!      P. Le Moigne   *Meteo France*   
00031 !!
00032 !!    MODIFICATIONS
00033 !!    -------------
00034 !!      Original    02/2008 
00035 !
00036 !       B.Decharme  10/2009 flag to desactivate writing of pgd 
00037 !-------------------------------------------------------------------------------
00038 !
00039 !*       0.    DECLARATIONS
00040 !              ------------
00041 !
00042 USE MODD_DIAG_SURF_ATM_n,ONLY : LFRAC, LDIAG_GRID, N2M, LSURF_BUDGET, LRAD_BUDGET, LCOEF, &
00043                                 LSURF_VARS, LSURF_BUDGETC, LRESET_BUDGETC
00044 !
00045 USE MODD_SURF_ATM_n, ONLY : CSEA, CTOWN, CNATURE, CWATER
00046 !
00047 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00048 USE PARKIND1  ,ONLY : JPRB
00049 !
00050 IMPLICIT NONE
00051 !
00052 !*       0.1   Declarations of arguments
00053 !              -------------------------
00054 !
00055 LOGICAL, INTENT(IN) :: OFRAC
00056 LOGICAL, INTENT(IN) :: ODIAG_GRID
00057 INTEGER, INTENT(IN) :: K2M
00058 LOGICAL, INTENT(IN) :: OSURF_BUDGET
00059 LOGICAL, INTENT(IN) :: ORAD_BUDGET
00060 LOGICAL, INTENT(IN) :: OCOEF
00061 LOGICAL, INTENT(IN) :: OSURF_VARS
00062 !
00063 INTEGER, INTENT(IN) :: KBEQ
00064 INTEGER, INTENT(IN) :: KDSTEQ
00065 !
00066 LOGICAL, INTENT(IN) :: ODIAG_OCEAN
00067 LOGICAL, INTENT(IN) :: OINTERPOL_SST
00068 LOGICAL, INTENT(IN) :: OWATER_PROFILE
00069 LOGICAL, INTENT(IN) :: OINTERPOL_TS
00070 LOGICAL, INTENT(IN) :: OSURF_EVAP_BUDGET
00071 LOGICAL, INTENT(IN) :: OFLOOD
00072 LOGICAL, INTENT(IN) :: OSURF_MISC_BUDGET_ISBA
00073 LOGICAL, INTENT(IN) :: OSURF_MISC_BUDGET_TEB
00074 !
00075 !*       0.2   Declarations of local variables
00076 !              -------------------------------
00077 !
00078 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00079 !-------------------------------------------------------------------------------
00080 IF (LHOOK) CALL DR_HOOK('FLAG_DIAG_UPDATE',0,ZHOOK_HANDLE)
00081 !
00082 LFRAC = OFRAC
00083 LDIAG_GRID = ODIAG_GRID
00084 N2M = K2M
00085 LSURF_BUDGET = OSURF_BUDGET
00086 LRAD_BUDGET = ORAD_BUDGET
00087 LCOEF = OCOEF
00088 LSURF_VARS = OSURF_VARS
00089 !
00090 IF (.NOT.LRESET_BUDGETC) LSURF_BUDGETC = .TRUE.
00091 !
00092 IF (CSEA=='SEAFLX') CALL FLAG_SEA_UPDATE(KBEQ, ODIAG_OCEAN, OINTERPOL_SST)
00093 IF (CWATER=='FLAKE ' .OR. CWATER=='WATFLX') &
00094   CALL FLAG_WATER_UPDATE(KBEQ, OWATER_PROFILE, OINTERPOL_TS)
00095 IF (CNATURE=='ISBA  ') CALL FLAG_ISBA_UPDATE(KBEQ, KDSTEQ, OSURF_EVAP_BUDGET, OFLOOD, &
00096                                 OSURF_MISC_BUDGET_ISBA)
00097 IF (CTOWN=='TEB   ') CALL FLAG_TEB_UPDATE(KBEQ, OSURF_MISC_BUDGET_TEB)
00098 !
00099 IF (LHOOK) CALL DR_HOOK('FLAG_DIAG_UPDATE',1,ZHOOK_HANDLE)
00100 !-------------------------------------------------------------------------------
00101 CONTAINS
00102 !
00103 SUBROUTINE FLAG_SEA_UPDATE(KBEQ, ODIAG_OCEAN, OINTERPOL_SST)
00104 !
00105 USE MODD_CH_SEAFLUX_n, ONLY : NBEQ
00106 USE MODD_DIAG_OCEAN_n,   ONLY : LDIAG_OCEAN
00107 USE MODD_SEAFLUX_n,     ONLY : LINTERPOL_SST
00108 !
00109 IMPLICIT NONE
00110 !
00111 INTEGER, INTENT(IN) :: KBEQ
00112 LOGICAL, INTENT(IN) :: ODIAG_OCEAN
00113 LOGICAL, INTENT(IN) :: OINTERPOL_SST
00114 !
00115 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00116 !
00117 IF (LHOOK) CALL DR_HOOK('FLAG_DIAG_UPDATE:FLAG_SEA_UPDATE',0,ZHOOK_HANDLE)
00118 NBEQ = KBEQ
00119 LDIAG_OCEAN = ODIAG_OCEAN
00120 LINTERPOL_SST = OINTERPOL_SST
00121 IF (LHOOK) CALL DR_HOOK('FLAG_DIAG_UPDATE:FLAG_SEA_UPDATE',1,ZHOOK_HANDLE)
00122 !
00123 END SUBROUTINE FLAG_SEA_UPDATE
00124 !
00125 SUBROUTINE FLAG_WATER_UPDATE(KBEQ, OWATER_PROFILE, OINTERPOL_TS)
00126 !
00127 USE MODD_CH_WATFLUX_n, ONLY : NBEQ
00128 USE MODD_DIAG_MISC_FLAKE_n,ONLY : LWATER_PROFILE
00129 USE MODD_WATFLUX_n,ONLY : LINTERPOL_TS
00130 !
00131 IMPLICIT NONE
00132 !
00133 INTEGER, INTENT(IN) :: KBEQ
00134 LOGICAL, INTENT(IN) :: OWATER_PROFILE
00135 LOGICAL, INTENT(IN) :: OINTERPOL_TS
00136 !
00137 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00138 !
00139 IF (LHOOK) CALL DR_HOOK('FLAG_DIAG_UPDATE:FLAG_WATER_UPDATE',0,ZHOOK_HANDLE)
00140 NBEQ = KBEQ
00141 IF (CWATER=='FLAKE ') LWATER_PROFILE = OWATER_PROFILE
00142 IF (CWATER=='WATFLX') LINTERPOL_TS = OINTERPOL_TS
00143 IF (LHOOK) CALL DR_HOOK('FLAG_DIAG_UPDATE:FLAG_WATER_UPDATE',1,ZHOOK_HANDLE)
00144 !
00145 END SUBROUTINE FLAG_WATER_UPDATE
00146 !
00147 SUBROUTINE FLAG_ISBA_UPDATE(KBEQ, KDSTEQ, OSURF_EVAP_BUDGET, OFLOOD, &
00148                                 OSURF_MISC_BUDGET)
00149 !
00150 USE MODD_CH_ISBA_n, ONLY : NBEQ, NDSTEQ
00151 USE MODD_DIAG_EVAP_ISBA_n, ONLY : LSURF_EVAP_BUDGET
00152 USE MODD_ISBA_n, ONLY : LFLOOD
00153 USE MODD_DIAG_MISC_ISBA_n, ONLY : LSURF_MISC_BUDGET
00154 !
00155 IMPLICIT NONE
00156 !
00157 INTEGER, INTENT(IN) :: KBEQ
00158 INTEGER, INTENT(IN) :: KDSTEQ
00159 LOGICAL, INTENT(IN) :: OSURF_EVAP_BUDGET
00160 LOGICAL, INTENT(IN) :: OFLOOD
00161 LOGICAL, INTENT(IN) :: OSURF_MISC_BUDGET
00162 !
00163 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00164 !
00165 IF (LHOOK) CALL DR_HOOK('FLAG_DIAG_UPDATE:FLAG_ISBA_UPDATE',0,ZHOOK_HANDLE)
00166 NBEQ = KBEQ
00167 NDSTEQ = KDSTEQ
00168 LSURF_EVAP_BUDGET = OSURF_EVAP_BUDGET
00169 LFLOOD = OFLOOD
00170 LSURF_MISC_BUDGET = OSURF_MISC_BUDGET
00171 IF (LHOOK) CALL DR_HOOK('FLAG_DIAG_UPDATE:FLAG_ISBA_UPDATE',1,ZHOOK_HANDLE)
00172 !
00173 END SUBROUTINE FLAG_ISBA_UPDATE
00174 !
00175 SUBROUTINE FLAG_TEB_UPDATE(KBEQ, OSURF_MISC_BUDGET)
00176 !
00177 USE MODD_CH_TEB_n, ONLY : NBEQ
00178 USE MODD_DIAG_MISC_TEB_n, ONLY : LSURF_MISC_BUDGET
00179 !
00180 IMPLICIT NONE
00181 !
00182 INTEGER, INTENT(IN) :: KBEQ
00183 LOGICAL, INTENT(IN) :: OSURF_MISC_BUDGET
00184 !
00185 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00186 !
00187 IF (LHOOK) CALL DR_HOOK('FLAG_DIAG_UPDATE:FLAG_TEB_UPDATE',0,ZHOOK_HANDLE)
00188 NBEQ = KBEQ
00189 LSURF_MISC_BUDGET = OSURF_MISC_BUDGET
00190 IF (LHOOK) CALL DR_HOOK('FLAG_DIAG_UPDATE:FLAG_TEB_UPDATE',1,ZHOOK_HANDLE)
00191 !
00192 END SUBROUTINE FLAG_TEB_UPDATE
00193 !
00194 END SUBROUTINE FLAG_DIAG_UPDATE
00195