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