SURFEX v7.3
General documentation of Surfex
|
00001 ! ######spl 00002 MODULE MODN_SURF_ATM_n 00003 ! ###################### 00004 ! 00005 !!**** *MODN_SURF_ATM_n* - declaration of namelist NAM_SURF_ATMn 00006 !! 00007 !! PURPOSE 00008 !! ------- 00009 ! The purpose of this module is to specify the namelist NAM_SURF_ATMn 00010 ! 00011 !! 00012 !!** IMPLICIT ARGUMENTS 00013 !! ------------------ 00014 !! 00015 !! REFERENCE 00016 !! --------- 00017 !! 00018 !! 00019 !! AUTHOR 00020 !! ------ 00021 !! V. Masson *Meteo France* 00022 !! 00023 !! MODIFICATIONS 00024 !! ------------- 00025 !! P. Tulet flag namelist for emission 02/2004 00026 !! B. Decharme Cumulative diag for all Tile 08/2009 00027 !! B. Decharme Key to allow (or not) writting diag 10/2009 00028 !! S.Senesi Additional write selection mechanism 12/2009 00029 !------------------------------------------------------------------------------- 00030 ! 00031 !* 0. DECLARATIONS 00032 ! ------------ 00033 ! 00034 USE MODD_DIAG_SURF_ATM_n, ONLY: & 00035 XDIAG_TSTEP_n => XDIAG_TSTEP, & 00036 N2M_n => N2M, & 00037 L2M_MIN_ZS_n => L2M_MIN_ZS, & 00038 LSURF_BUDGET_n => LSURF_BUDGET, & 00039 LRAD_BUDGET_n => LRAD_BUDGET, & 00040 LSURF_BUDGETC_n => LSURF_BUDGETC, & 00041 LRESET_BUDGETC_n => LRESET_BUDGETC, & 00042 LFRAC_n => LFRAC,& 00043 LCOEF_n => LCOEF,& 00044 LSURF_VARS_n => LSURF_VARS,& 00045 LDIAG_GRID_n => LDIAG_GRID,& 00046 LPROVAR_TO_DIAG_n => LPROVAR_TO_DIAG,& 00047 LSELECT_n => LSELECT,& 00048 CSELECT_n => CSELECT 00049 00050 USE MODD_CH_SURF_n, ONLY: & 00051 CCHEM_SURF_FILE_n => CCHEM_SURF_FILE, & 00052 LCH_SURF_EMIS_n => LCH_SURF_EMIS 00053 ! 00054 ! 00055 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00056 USE PARKIND1 ,ONLY : JPRB 00057 ! 00058 IMPLICIT NONE 00059 ! 00060 CHARACTER(LEN=28), SAVE :: CCHEM_SURF_FILE 00061 LOGICAL, SAVE :: LCH_SURF_EMIS 00062 LOGICAL :: LFRAC 00063 REAL :: XDIAG_TSTEP 00064 INTEGER :: N2M 00065 LOGICAL :: L2M_MIN_ZS 00066 LOGICAL :: LSURF_BUDGET 00067 LOGICAL :: LRAD_BUDGET 00068 LOGICAL :: LSURF_BUDGETC 00069 LOGICAL :: LRESET_BUDGETC 00070 LOGICAL :: LCOEF 00071 LOGICAL :: LSURF_VARS 00072 LOGICAL :: LDIAG_GRID 00073 LOGICAL :: LPROVAR_TO_DIAG 00074 LOGICAL :: LSELECT 00075 CHARACTER(LEN=12), DIMENSION(250) :: CSELECT 00076 ! 00077 NAMELIST/NAM_CH_CONTROLn/CCHEM_SURF_FILE 00078 NAMELIST/NAM_CH_SURFn/LCH_SURF_EMIS 00079 NAMELIST/NAM_DIAG_SURF_ATMn/LFRAC, LDIAG_GRID 00080 NAMELIST/NAM_DIAG_SURFn/N2M, L2M_MIN_ZS, LSURF_BUDGET, LRAD_BUDGET, LSURF_BUDGETC, & 00081 LRESET_BUDGETC, LCOEF, LSURF_VARS 00082 ! 00083 NAMELIST/NAM_WRITE_DIAG_SURFn/LPROVAR_TO_DIAG,LSELECT,CSELECT 00084 ! 00085 CONTAINS 00086 ! 00087 SUBROUTINE INIT_NAM_CH_CONTROLn 00088 00089 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00090 00091 IF (LHOOK) CALL DR_HOOK('MODN_SURF_ATM_N:INIT_NAM_CH_CONTROLN',0,ZHOOK_HANDLE) 00092 CCHEM_SURF_FILE = CCHEM_SURF_FILE_n 00093 IF (LHOOK) CALL DR_HOOK('MODN_SURF_ATM_N:INIT_NAM_CH_CONTROLN',1,ZHOOK_HANDLE) 00094 END SUBROUTINE INIT_NAM_CH_CONTROLn 00095 00096 SUBROUTINE UPDATE_NAM_CH_CONTROLn 00097 00098 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00099 00100 IF (LHOOK) CALL DR_HOOK('MODN_SURF_ATM_N:UPDATE_NAM_CH_CONTROLN',0,ZHOOK_HANDLE) 00101 CCHEM_SURF_FILE_n = CCHEM_SURF_FILE 00102 IF (LHOOK) CALL DR_HOOK('MODN_SURF_ATM_N:UPDATE_NAM_CH_CONTROLN',1,ZHOOK_HANDLE) 00103 END SUBROUTINE UPDATE_NAM_CH_CONTROLn 00104 00105 SUBROUTINE INIT_NAM_CH_SURFn 00106 00107 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00108 00109 IF (LHOOK) CALL DR_HOOK('MODN_SURF_ATM_N:INIT_NAM_CH_SURFN',0,ZHOOK_HANDLE) 00110 LCH_SURF_EMIS = LCH_SURF_EMIS_n 00111 IF (LHOOK) CALL DR_HOOK('MODN_SURF_ATM_N:INIT_NAM_CH_SURFN',1,ZHOOK_HANDLE) 00112 END SUBROUTINE INIT_NAM_CH_SURFn 00113 00114 SUBROUTINE UPDATE_NAM_CH_SURFn 00115 00116 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00117 00118 IF (LHOOK) CALL DR_HOOK('MODN_SURF_ATM_N:UPDATE_NAM_CH_SURFN',0,ZHOOK_HANDLE) 00119 LCH_SURF_EMIS_n = LCH_SURF_EMIS 00120 IF (LHOOK) CALL DR_HOOK('MODN_SURF_ATM_N:UPDATE_NAM_CH_SURFN',1,ZHOOK_HANDLE) 00121 END SUBROUTINE UPDATE_NAM_CH_SURFn 00122 00123 SUBROUTINE INIT_NAM_DIAG_SURF_ATMn 00124 00125 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00126 00127 IF (LHOOK) CALL DR_HOOK('MODN_SURF_ATM_N:INIT_NAM_DIAG_SURF_ATMN',0,ZHOOK_HANDLE) 00128 LFRAC = LFRAC_n 00129 IF (LHOOK) CALL DR_HOOK('MODN_SURF_ATM_N:INIT_NAM_DIAG_SURF_ATMN',1,ZHOOK_HANDLE) 00130 END SUBROUTINE INIT_NAM_DIAG_SURF_ATMn 00131 00132 SUBROUTINE UPDATE_NAM_DIAG_SURF_ATMn 00133 00134 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00135 00136 IF (LHOOK) CALL DR_HOOK('MODN_SURF_ATM_N:UPDATE_NAM_DIAG_SURF_ATMN',0,ZHOOK_HANDLE) 00137 LFRAC_n = LFRAC 00138 IF (LHOOK) CALL DR_HOOK('MODN_SURF_ATM_N:UPDATE_NAM_DIAG_SURF_ATMN',1,ZHOOK_HANDLE) 00139 END SUBROUTINE UPDATE_NAM_DIAG_SURF_ATMn 00140 00141 SUBROUTINE INIT_NAM_DIAG_SURFn 00142 00143 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00144 00145 IF (LHOOK) CALL DR_HOOK('MODN_SURF_ATM_N:INIT_NAM_DIAG_SURFN',0,ZHOOK_HANDLE) 00146 XDIAG_TSTEP = XDIAG_TSTEP_n 00147 N2M = N2M_n 00148 L2M_MIN_ZS = L2M_MIN_ZS_n 00149 LSURF_BUDGET = LSURF_BUDGET_n 00150 LRAD_BUDGET = LRAD_BUDGET_n 00151 LSURF_BUDGETC = LSURF_BUDGETC_n 00152 LRESET_BUDGETC = LRESET_BUDGETC_n 00153 LCOEF = LCOEF_n 00154 LSURF_VARS = LSURF_VARS_n 00155 LDIAG_GRID = LDIAG_GRID_n 00156 IF (LHOOK) CALL DR_HOOK('MODN_SURF_ATM_N:INIT_NAM_DIAG_SURFN',1,ZHOOK_HANDLE) 00157 END SUBROUTINE INIT_NAM_DIAG_SURFn 00158 00159 SUBROUTINE UPDATE_NAM_DIAG_SURFn 00160 00161 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00162 00163 IF (LHOOK) CALL DR_HOOK('MODN_SURF_ATM_N:UPDATE_NAM_DIAG_SURFN',0,ZHOOK_HANDLE) 00164 XDIAG_TSTEP_n = XDIAG_TSTEP 00165 N2M_n = N2M 00166 L2M_MIN_ZS_n = L2M_MIN_ZS 00167 LSURF_BUDGET_n = LSURF_BUDGET 00168 LRAD_BUDGET_n = LRAD_BUDGET 00169 LSURF_BUDGETC_n = LSURF_BUDGETC 00170 LRESET_BUDGETC_n = LRESET_BUDGETC 00171 LCOEF_n = LCOEF 00172 LSURF_VARS_n = LSURF_VARS 00173 LDIAG_GRID_n = LDIAG_GRID 00174 IF (LHOOK) CALL DR_HOOK('MODN_SURF_ATM_N:UPDATE_NAM_DIAG_SURFN',1,ZHOOK_HANDLE) 00175 END SUBROUTINE UPDATE_NAM_DIAG_SURFn 00176 00177 00178 SUBROUTINE INIT_NAM_WRITE_DIAG_SURFn 00179 00180 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00181 00182 IF (LHOOK) CALL DR_HOOK('MODN_SURF_ATM_N:INIT_NAM_WRITE_DIAG_SURFN',0,ZHOOK_HANDLE) 00183 LPROVAR_TO_DIAG = LPROVAR_TO_DIAG_n 00184 LSELECT = LSELECT_n 00185 CSELECT(:) = ' ' 00186 IF (LHOOK) CALL DR_HOOK('MODN_SURF_ATM_N:INIT_NAM_WRITE_DIAG_SURFN',1,ZHOOK_HANDLE) 00187 END SUBROUTINE INIT_NAM_WRITE_DIAG_SURFn 00188 00189 SUBROUTINE UPDATE_NAM_WRITE_DIAG_SURFn 00190 00191 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00192 00193 IF (LHOOK) CALL DR_HOOK('MODN_SURF_ATM_N:UPDATE_NAM_WRITE_DIAG_SURFN',0,ZHOOK_HANDLE) 00194 LPROVAR_TO_DIAG_n = LPROVAR_TO_DIAG 00195 ! 00196 LSELECT_n = LSELECT 00197 IF (LSELECT) THEN 00198 IF(.NOT.ASSOCIATED(CSELECT_n))THEN 00199 ALLOCATE(CSELECT_n(COUNT(CSELECT /= ' '))) 00200 ENDIF 00201 CSELECT_n = CSELECT(:COUNT(CSELECT /= ' ')) 00202 ENDIF 00203 IF (LHOOK) CALL DR_HOOK('MODN_SURF_ATM_N:UPDATE_NAM_WRITE_DIAG_SURFN',1,ZHOOK_HANDLE) 00204 END SUBROUTINE UPDATE_NAM_WRITE_DIAG_SURFn 00205 00206 END MODULE MODN_SURF_ATM_n