SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/modn_surf_atmn.F90
Go to the documentation of this file.
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