SURFEX v8.1
General documentation of Surfex
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 LOGICAL :: lsnowdimnc
63 LOGICAL :: lresetcumul
64  CHARACTER(LEN=12), DIMENSION(4000) :: cselect
65 !
66 NAMELIST/nam_ch_controln/cchem_surf_file
67 NAMELIST/nam_ch_surfn/lch_surf_emis
68 NAMELIST/nam_diag_surf_atmn/lfrac, ldiag_grid, lt2mmw
69 NAMELIST/nam_diag_surfn/n2m, l2m_min_zs, lsurf_budget, lrad_budget, lsurf_budgetc, &
71 !
72 NAMELIST/nam_write_diag_surfn/lprovar_to_diag,lsnowdimnc,lresetcumul,lselect,cselect
73 !
74 CONTAINS
75 !
76 SUBROUTINE init_nam_ch_controln (CHU)
77 !
78  USE modd_ch_surf_n, ONLY : ch_surf_t
79 !
80  IMPLICIT NONE
81 
82 !
83  TYPE(ch_surf_t), INTENT(INOUT) :: CHU
84  REAL(KIND=JPRB) :: ZHOOK_HANDLE
85 
86  IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:INIT_NAM_CH_CONTROLN',0,zhook_handle)
87  cchem_surf_file = chu%CCHEM_SURF_FILE
88 IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:INIT_NAM_CH_CONTROLN',1,zhook_handle)
89 END SUBROUTINE init_nam_ch_controln
90 
91 SUBROUTINE update_nam_ch_controln (CHU)
92 !
93  USE modd_ch_surf_n, ONLY : ch_surf_t
94 !
95  IMPLICIT NONE
96 
97 !
98  TYPE(ch_surf_t), INTENT(INOUT) :: CHU
99  REAL(KIND=JPRB) :: ZHOOK_HANDLE
100 
101  IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:UPDATE_NAM_CH_CONTROLN',0,zhook_handle)
102  chu%CCHEM_SURF_FILE = cchem_surf_file
103 IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:UPDATE_NAM_CH_CONTROLN',1,zhook_handle)
104 END SUBROUTINE update_nam_ch_controln
105 
106 SUBROUTINE init_nam_ch_surfn (CHU)
107 !
108  USE modd_ch_surf_n, ONLY : ch_surf_t
109 !
110  IMPLICIT NONE
111 
112 !
113  TYPE(ch_surf_t), INTENT(INOUT) :: CHU
114  REAL(KIND=JPRB) :: ZHOOK_HANDLE
115 
116  IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:INIT_NAM_CH_SURFN',0,zhook_handle)
117  lch_surf_emis = chu%LCH_SURF_EMIS
118 IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:INIT_NAM_CH_SURFN',1,zhook_handle)
119 END SUBROUTINE init_nam_ch_surfn
120 
121 SUBROUTINE update_nam_ch_surfn (CHU)
122 !
123  USE modd_ch_surf_n, ONLY : ch_surf_t
124 !
125  IMPLICIT NONE
126 
127 !
128  TYPE(ch_surf_t), INTENT(INOUT) :: CHU
129  REAL(KIND=JPRB) :: ZHOOK_HANDLE
130 
131  IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:UPDATE_NAM_CH_SURFN',0,zhook_handle)
132  chu%LCH_SURF_EMIS = lch_surf_emis
133 IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:UPDATE_NAM_CH_SURFN',1,zhook_handle)
134 END SUBROUTINE update_nam_ch_surfn
135 
136 SUBROUTINE init_nam_diag_surf_atmn (DGO)
137 !
138  USE modd_diag_n, ONLY : diag_options_t
139 !
140  IMPLICIT NONE
141 
142 !
143  TYPE(diag_options_t), INTENT(INOUT) :: DGO
144  REAL(KIND=JPRB) :: ZHOOK_HANDLE
145 
146  IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:INIT_NAM_DIAG_SURF_ATMN',0,zhook_handle)
147  lfrac = dgo%LFRAC
148  lt2mmw = dgo%LT2MMW
149 IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:INIT_NAM_DIAG_SURF_ATMN',1,zhook_handle)
150 END SUBROUTINE init_nam_diag_surf_atmn
151 
152 SUBROUTINE update_nam_diag_surf_atmn (DGO)
153 !
154  USE modd_diag_n, ONLY : diag_options_t
155 !
156  IMPLICIT NONE
157 
158 !
159  TYPE(diag_options_t), INTENT(INOUT) :: DGO
160  REAL(KIND=JPRB) :: ZHOOK_HANDLE
161 
162  IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:UPDATE_NAM_DIAG_SURF_ATMN',0,zhook_handle)
163  dgo%LFRAC = lfrac
164  dgo%LT2MMW = lt2mmw
165 IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:UPDATE_NAM_DIAG_SURF_ATMN',1,zhook_handle)
166 END SUBROUTINE update_nam_diag_surf_atmn
167 
168 SUBROUTINE init_nam_diag_surfn (DGO)
169 !
170  USE modd_diag_n, ONLY : diag_options_t
171 !
172  IMPLICIT NONE
173 
174 !
175  TYPE(diag_options_t), INTENT(INOUT) :: DGO
176  REAL(KIND=JPRB) :: ZHOOK_HANDLE
177 
178  IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:INIT_NAM_DIAG_SURFN',0,zhook_handle)
179  xdiag_tstep = dgo%XDIAG_TSTEP
180  n2m = dgo%N2M
181  l2m_min_zs = dgo%L2M_MIN_ZS
182  lsurf_budget = dgo%LSURF_BUDGET
183  lrad_budget = dgo%LRAD_BUDGET
184  lsurf_budgetc = dgo%LSURF_BUDGETC
185  lreset_budgetc = dgo%LRESET_BUDGETC
186  lcoef = dgo%LCOEF
187  lsurf_vars = dgo%LSURF_VARS
188  ldiag_grid = dgo%LDIAG_GRID
189 IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:INIT_NAM_DIAG_SURFN',1,zhook_handle)
190 END SUBROUTINE init_nam_diag_surfn
191 
192 SUBROUTINE update_nam_diag_surfn (DGO)
193 !
194  USE modd_diag_n, ONLY : diag_options_t
195 !
196  IMPLICIT NONE
197 
198 !
199  TYPE(diag_options_t), INTENT(INOUT) :: DGO
200  REAL(KIND=JPRB) :: ZHOOK_HANDLE
201 
202  IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:UPDATE_NAM_DIAG_SURFN',0,zhook_handle)
203  dgo%XDIAG_TSTEP = xdiag_tstep
204  dgo%N2M = n2m
205  dgo%L2M_MIN_ZS = l2m_min_zs
206  dgo%LSURF_BUDGET = lsurf_budget
207  dgo%LRAD_BUDGET = lrad_budget
208  dgo%LSURF_BUDGETC = lsurf_budgetc
209  dgo%LRESET_BUDGETC = lreset_budgetc
210  dgo%LCOEF = lcoef
211  dgo%LSURF_VARS = lsurf_vars
212  dgo%LDIAG_GRID = ldiag_grid
213 IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:UPDATE_NAM_DIAG_SURFN',1,zhook_handle)
214 END SUBROUTINE update_nam_diag_surfn
215 
216 
217 SUBROUTINE init_nam_write_diag_surfn (DGO)
218 !
219  USE modd_diag_n, ONLY : diag_options_t
220 !
221  IMPLICIT NONE
222 
223 
224 !
225  TYPE(diag_options_t), INTENT(INOUT) :: DGO
226  REAL(KIND=JPRB) :: ZHOOK_HANDLE
227 
228  IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:INIT_NAM_WRITE_DIAG_SURFN',0,zhook_handle)
229  lprovar_to_diag = dgo%LPROVAR_TO_DIAG
230  lsnowdimnc = dgo%LSNOWDIMNC
231  lresetcumul = dgo%LRESETCUMUL
232  lselect = dgo%LSELECT
233  cselect(:) = ' '
234 IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:INIT_NAM_WRITE_DIAG_SURFN',1,zhook_handle)
235 END SUBROUTINE init_nam_write_diag_surfn
236 
237 SUBROUTINE update_nam_write_diag_surfn (DGO)
238 !
239  USE modd_diag_n, ONLY : diag_options_t
240 !
241  IMPLICIT NONE
242 !
243  TYPE(diag_options_t), INTENT(INOUT) :: DGO
244  INTEGER :: ICOUNT
245  REAL(KIND=JPRB) :: ZHOOK_HANDLE
246 
247  IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:UPDATE_NAM_WRITE_DIAG_SURFN',0,zhook_handle)
248  dgo%LPROVAR_TO_DIAG = lprovar_to_diag
249  dgo%LSNOWDIMNC = lsnowdimnc
250  dgo%LRESETCUMUL = lresetcumul
251 !
252  dgo%LSELECT = lselect
253  IF (lselect) THEN
254  icount = count(cselect /= ' ')
255  IF(.NOT.ASSOCIATED(dgo%CSELECT))THEN
256  ALLOCATE(dgo%CSELECT(icount+1))
257  dgo%CSELECT(:) = ' '
258  ENDIF
259  dgo%CSELECT(1:icount) = cselect(1:icount)
260  ELSE
261  IF (.NOT.ASSOCIATED(dgo%CSELECT)) ALLOCATE(dgo%CSELECT(0))
262  ENDIF
263 IF (lhook) CALL dr_hook('MODN_SURF_ATM_N:UPDATE_NAM_WRITE_DIAG_SURFN',1,zhook_handle)
264 END SUBROUTINE update_nam_write_diag_surfn
265 
266 END MODULE modn_surf_atm_n
subroutine init_nam_diag_surfn(DGO)
subroutine update_nam_diag_surf_atmn(DGO)
subroutine update_nam_ch_surfn(CHU)
subroutine update_nam_diag_surfn(DGO)
character(len=12), dimension(4000) cselect
subroutine update_nam_ch_controln(CHU)
subroutine update_nam_write_diag_surfn(DGO)
integer, parameter jprb
Definition: parkind1.F90:32
character(len=28), save cchem_surf_file
subroutine init_nam_write_diag_surfn(DGO)
subroutine init_nam_ch_controln(CHU)
subroutine init_nam_ch_surfn(CHU)
logical lhook
Definition: yomhook.F90:15
subroutine init_nam_diag_surf_atmn(DGO)
logical, save lch_surf_emis
static int count
Definition: memory_hook.c:21