SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
modn_surf_atmn.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 ! ######spl
7 ! ######################
8 !
9 !!**** *MODN_SURF_ATM_n* - declaration of namelist NAM_SURF_ATMn
10 !!
11 !! PURPOSE
12 !! -------
13 ! The purpose of this module is to specify the namelist NAM_SURF_ATMn
14 !
15 !!
16 !!** IMPLICIT ARGUMENTS
17 !! ------------------
18 !!
19 !! REFERENCE
20 !! ---------
21 !!
22 !!
23 !! AUTHOR
24 !! ------
25 !! V. Masson *Meteo France*
26 !!
27 !! MODIFICATIONS
28 !! -------------
29 !! P. Tulet flag namelist for emission 02/2004
30 !! B. Decharme Cumulative diag for all Tile 08/2009
31 !! B. Decharme Key to allow (or not) writting diag 10/2009
32 !! S.Senesi Additional write selection mechanism 12/2009
33 !-------------------------------------------------------------------------------
34 !
35 !* 0. DECLARATIONS
36 ! ------------
37 !
38 
39 !
40 !
41 USE yomhook ,ONLY : lhook, dr_hook
42 USE parkind1 ,ONLY : jprb
43 !
44 IMPLICIT NONE
45 !
46  CHARACTER(LEN=28), SAVE :: CCHEM_SURF_FILE
47 LOGICAL, SAVE :: LCH_SURF_EMIS
48 LOGICAL :: LFRAC
49 REAL :: XDIAG_TSTEP
50 INTEGER :: N2M
51 LOGICAL :: LT2MMW
52 LOGICAL :: L2M_MIN_ZS
53 LOGICAL :: LSURF_BUDGET
54 LOGICAL :: LRAD_BUDGET
55 LOGICAL :: LSURF_BUDGETC
56 LOGICAL :: LRESET_BUDGETC
57 LOGICAL :: LCOEF
58 LOGICAL :: LSURF_VARS
59 LOGICAL :: LDIAG_GRID
60 LOGICAL :: LPROVAR_TO_DIAG
61 LOGICAL :: LSELECT
62  CHARACTER(LEN=12), DIMENSION(500) :: CSELECT
63 !
64 namelist/nam_ch_controln/cchem_surf_file
65 namelist/nam_ch_surfn/lch_surf_emis
66 namelist/nam_diag_surf_atmn/lfrac, ldiag_grid, lt2mmw
67 namelist/nam_diag_surfn/n2m, l2m_min_zs, lsurf_budget, lrad_budget, lsurf_budgetc, &
68  lreset_budgetc, lcoef, lsurf_vars
69 !
70 namelist/nam_write_diag_surfn/lprovar_to_diag,lselect,cselect
71 !
72  CONTAINS
73 !
74 SUBROUTINE init_nam_ch_controln (CHU)
75 !
76  USE modd_ch_surf_n, ONLY : ch_surf_t
77 !
78  IMPLICIT NONE
79 
80 !
81  TYPE(ch_surf_t), INTENT(INOUT) :: chu
82  REAL(KIND=JPRB) :: zhook_handle
83 
84  IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:INIT_NAM_CH_CONTROLN',0,zhook_handle)
85  cchem_surf_file = chu%CCHEM_SURF_FILE
86 IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:INIT_NAM_CH_CONTROLN',1,zhook_handle)
87 END SUBROUTINE init_nam_ch_controln
88 
89 SUBROUTINE update_nam_ch_controln (CHU)
90 !
91  USE modd_ch_surf_n, ONLY : ch_surf_t
92 !
93  IMPLICIT NONE
94 
95 !
96  TYPE(ch_surf_t), INTENT(INOUT) :: chu
97  REAL(KIND=JPRB) :: zhook_handle
98 
99  IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:UPDATE_NAM_CH_CONTROLN',0,zhook_handle)
100  chu%CCHEM_SURF_FILE = cchem_surf_file
101 IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:UPDATE_NAM_CH_CONTROLN',1,zhook_handle)
102 END SUBROUTINE update_nam_ch_controln
103 
104 SUBROUTINE init_nam_ch_surfn (CHU)
105 !
106  USE modd_ch_surf_n, ONLY : ch_surf_t
107 !
108  IMPLICIT NONE
109 
110 !
111  TYPE(ch_surf_t), INTENT(INOUT) :: chu
112  REAL(KIND=JPRB) :: zhook_handle
113 
114  IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:INIT_NAM_CH_SURFN',0,zhook_handle)
115  lch_surf_emis = chu%LCH_SURF_EMIS
116 IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:INIT_NAM_CH_SURFN',1,zhook_handle)
117 END SUBROUTINE init_nam_ch_surfn
118 
119 SUBROUTINE update_nam_ch_surfn (CHU)
120 !
121  USE modd_ch_surf_n, ONLY : ch_surf_t
122 !
123  IMPLICIT NONE
124 
125 !
126  TYPE(ch_surf_t), INTENT(INOUT) :: chu
127  REAL(KIND=JPRB) :: zhook_handle
128 
129  IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:UPDATE_NAM_CH_SURFN',0,zhook_handle)
130  chu%LCH_SURF_EMIS = lch_surf_emis
131 IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:UPDATE_NAM_CH_SURFN',1,zhook_handle)
132 END SUBROUTINE update_nam_ch_surfn
133 
134 SUBROUTINE init_nam_diag_surf_atmn (DGU)
135 !
137 !
138  IMPLICIT NONE
139 
140 !
141  TYPE(diag_surf_atm_t), INTENT(INOUT) :: dgu
142  REAL(KIND=JPRB) :: zhook_handle
143 
144  IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:INIT_NAM_DIAG_SURF_ATMN',0,zhook_handle)
145  lfrac = dgu%LFRAC
146  lt2mmw = dgu%LT2MMW
147 IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:INIT_NAM_DIAG_SURF_ATMN',1,zhook_handle)
148 END SUBROUTINE init_nam_diag_surf_atmn
149 
151 !
153 !
154  IMPLICIT NONE
155 
156 !
157  TYPE(diag_surf_atm_t), INTENT(INOUT) :: dgu
158  REAL(KIND=JPRB) :: zhook_handle
159 
160  IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:UPDATE_NAM_DIAG_SURF_ATMN',0,zhook_handle)
161  dgu%LFRAC = lfrac
162  dgu%LT2MMW = lt2mmw
163 IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:UPDATE_NAM_DIAG_SURF_ATMN',1,zhook_handle)
164 END SUBROUTINE update_nam_diag_surf_atmn
165 
166 SUBROUTINE init_nam_diag_surfn (DGU)
167 !
169 !
170  IMPLICIT NONE
171 
172 !
173  TYPE(diag_surf_atm_t), INTENT(INOUT) :: dgu
174  REAL(KIND=JPRB) :: zhook_handle
175 
176  IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:INIT_NAM_DIAG_SURFN',0,zhook_handle)
177  xdiag_tstep = dgu%XDIAG_TSTEP
178  n2m = dgu%N2M
179  l2m_min_zs = dgu%L2M_MIN_ZS
180  lsurf_budget = dgu%LSURF_BUDGET
181  lrad_budget = dgu%LRAD_BUDGET
182  lsurf_budgetc = dgu%LSURF_BUDGETC
183  lreset_budgetc = dgu%LRESET_BUDGETC
184  lcoef = dgu%LCOEF
185  lsurf_vars = dgu%LSURF_VARS
186  ldiag_grid = dgu%LDIAG_GRID
187 IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:INIT_NAM_DIAG_SURFN',1,zhook_handle)
188 END SUBROUTINE init_nam_diag_surfn
189 
190 SUBROUTINE update_nam_diag_surfn (DGU)
191 !
193 !
194  IMPLICIT NONE
195 
196 !
197  TYPE(diag_surf_atm_t), INTENT(INOUT) :: dgu
198  REAL(KIND=JPRB) :: zhook_handle
199 
200  IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:UPDATE_NAM_DIAG_SURFN',0,zhook_handle)
201  dgu%XDIAG_TSTEP = xdiag_tstep
202  dgu%N2M = n2m
203  dgu%L2M_MIN_ZS = l2m_min_zs
204  dgu%LSURF_BUDGET = lsurf_budget
205  dgu%LRAD_BUDGET = lrad_budget
206  dgu%LSURF_BUDGETC = lsurf_budgetc
207  dgu%LRESET_BUDGETC = lreset_budgetc
208  dgu%LCOEF = lcoef
209  dgu%LSURF_VARS = lsurf_vars
210  dgu%LDIAG_GRID = ldiag_grid
211 IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:UPDATE_NAM_DIAG_SURFN',1,zhook_handle)
212 END SUBROUTINE update_nam_diag_surfn
213 
214 
216 !
218 !
219  IMPLICIT NONE
220 
221 
222 !
223  TYPE(diag_surf_atm_t), INTENT(INOUT) :: dgu
224  REAL(KIND=JPRB) :: zhook_handle
225 
226  IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:INIT_NAM_WRITE_DIAG_SURFN',0,zhook_handle)
227  lprovar_to_diag = dgu%LPROVAR_TO_DIAG
228  lselect = dgu%LSELECT
229  cselect(:) = ' '
230 IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:INIT_NAM_WRITE_DIAG_SURFN',1,zhook_handle)
231 END SUBROUTINE init_nam_write_diag_surfn
232 
234 !
236 !
237  IMPLICIT NONE
238 !
239  TYPE(diag_surf_atm_t), INTENT(INOUT) :: dgu
240  INTEGER :: icount
241  REAL(KIND=JPRB) :: zhook_handle
242 
243  IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:UPDATE_NAM_WRITE_DIAG_SURFN',0,zhook_handle)
244  dgu%LPROVAR_TO_DIAG = lprovar_to_diag
245 !
246  dgu%LSELECT = lselect
247  IF (lselect) THEN
248  icount = count(cselect /= ' ')
249  IF(.NOT.ASSOCIATED(dgu%CSELECT))THEN
250  ALLOCATE(dgu%CSELECT(icount))
251  dgu%CSELECT(:) = ' '
252  ENDIF
253  dgu%CSELECT = cselect(1:icount)
254  ENDIF
255 IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:UPDATE_NAM_WRITE_DIAG_SURFN',1,zhook_handle)
256 END SUBROUTINE update_nam_write_diag_surfn
257 
258 END MODULE modn_surf_atm_n
subroutine update_nam_ch_controln(CHI)
Definition: modn_isban.F90:365
subroutine update_nam_diag_surf_atmn(DGU)
subroutine update_nam_write_diag_surfn(DGU)
subroutine init_nam_ch_controln(CHI)
Definition: modn_isban.F90:350
subroutine update_nam_ch_surfn(CHU)
subroutine init_nam_diag_surfn(DGF)
subroutine update_nam_diag_surfn(DGF)
subroutine init_nam_ch_surfn(CHU)
subroutine init_nam_write_diag_surfn(DGU)
subroutine init_nam_diag_surf_atmn(DGU)