SURFEX v8.1
General documentation of Surfex
read_isba_confn.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 ! #########
6  SUBROUTINE read_isba_conf_n (CHI, DE, DGO, DMI, IO, HPROGRAM)
7 ! #######################################################
8 !
9 !!**** *READ_ISBA_CONF* - routine to read the configuration for ISBA
10 !!
11 !! PURPOSE
12 !! -------
13 !!
14 !!** METHOD
15 !! ------
16 !!
17 !! EXTERNAL
18 !! --------
19 !!
20 !!
21 !! IMPLICIT ARGUMENTS
22 !! ------------------
23 !!
24 !! REFERENCE
25 !! ---------
26 !!
27 !!
28 !! AUTHOR
29 !! ------
30 !! V. Masson *Meteo France*
31 !!
32 !! MODIFICATIONS
33 !! -------------
34 !! Original 01/2003
35 !! P Le Moigne 09/2005 AGS modifs of L. Jarlan
36 !! P Le Moigne 09/2005 CSNOWRES option
37 !! Modified by P. Le Moigne (06/2006): seeding and irrigation
38 !! Modified by P. Le Moigne (05/2008): deep soil characteristics
39 !! Modified by R. El Khatib 05-Apr-2012 Fix message handling
40 !! Modified by C. Carmagnola (01/2013): CSNOWMETAMO = 'B92','C13','F06','T07'
41 !! B. Decharme 04/2013 delete CTOPREG
42 !-------------------------------------------------------------------------------
43 !
44 !* 0. DECLARATIONS
45 ! ------------
46 !
47 !
48 !
49 !
50 !
51 USE modd_ch_isba_n, ONLY : ch_isba_t
53 USE modd_diag_n, ONLY : diag_options_t
56 !
58 !
59 USE mode_pos_surf
60 !
62 USE modi_get_luout
63 USE modi_open_namelist
64 USE modi_close_namelist
65 !
66 USE modn_isba_n
67 !
68 USE modd_read_namelist, ONLY : lnam_read
69 USE modd_surf_par, ONLY : xundef
70 !
71 !
72 USE yomhook ,ONLY : lhook, dr_hook
73 USE parkind1 ,ONLY : jprb
74 !
75 IMPLICIT NONE
76 !
77 !* 0.1 Declarations of arguments
78 ! -------------------------
79 !
80 !
81 TYPE(ch_isba_t), INTENT(INOUT) :: CHI
82 TYPE(diag_evap_isba_t), INTENT(INOUT) :: DE
83 TYPE(diag_options_t), INTENT(INOUT) :: DGO
84 TYPE(diag_misc_isba_t), INTENT(INOUT) :: DMI
85 TYPE(isba_options_t), INTENT(INOUT) :: IO
86 !
87  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling ISBA
88 
89 !
90 !* 0.2 Declarations of local variables
91 ! -------------------------------
92 !
93 !
94 LOGICAL :: GFOUND ! Return code when searching namelist
95 INTEGER :: ILUOUT ! logical unit of output file
96 INTEGER :: INAM ! logical unit of namelist file
97 INTEGER :: IMI
98 REAL(KIND=JPRB) :: ZHOOK_HANDLE
99 !-------------------------------------------------------------------------------
100 !
101 !* get output listing file logical unit
102 !
103 IF (lhook) CALL dr_hook('READ_ISBA_CONF_N',0,zhook_handle)
104  CALL get_luout(hprogram,iluout)
105 !
107 !
108 IF (imi.NE.-1 .AND. lnam_read) THEN
109  CALL init_nam_isban(io)
110  CALL init_nam_isba_agsn(io)
111  CALL init_nam_sgh_isban(io)
112  CALL init_nam_diag_isban(de, dgo, dmi)
113  CALL init_nam_diag_surfn(dgo)
114  CALL init_nam_ch_controln(chi)
115  CALL init_nam_ch_isban(chi)
117  CALL init_nam_isba_snown(io)
118 ENDIF
119 !
120 IF (lnam_read) THEN
121  !
122  !* open namelist file
123  !
124  CALL open_namelist(hprogram,inam)
125  !
126  !* reading of namelist
127  ! -------------------
128  !
129  CALL posnam(inam,'NAM_ISBAN',gfound,iluout)
130  IF (gfound) READ(unit=inam,nml=nam_isban)
131  CALL posnam(inam,'NAM_ISBA_AGSN',gfound,iluout)
132  IF (gfound) READ(unit=inam,nml=nam_isba_agsn)
133  CALL posnam(inam,'NAM_SGH_ISBAN',gfound,iluout)
134  IF (gfound) READ(unit=inam,nml=nam_sgh_isban)
135  CALL posnam(inam,'NAM_DIAG_SURFN',gfound,iluout)
136  IF (gfound) READ(unit=inam,nml=nam_diag_surfn)
137  CALL posnam(inam,'NAM_DIAG_ISBAN',gfound,iluout)
138  IF (gfound) READ(unit=inam,nml=nam_diag_isban)
139  CALL posnam(inam,'NAM_CH_CONTROLN',gfound,iluout)
140  IF (gfound) READ(unit=inam,nml=nam_ch_controln)
141  CALL posnam(inam,'NAM_CH_ISBAN',gfound,iluout)
142  IF (gfound) READ(unit=inam,nml=nam_ch_isban)
143  CALL posnam(inam,'NAM_SPINUP_CARBN',gfound,iluout)
144  IF (gfound) READ(unit=inam,nml=nam_spinup_carbn)
145  CALL posnam(inam,'NAM_ISBA_SNOWN',gfound,iluout)
146  IF (gfound) READ(unit=inam,nml=nam_isba_snown)
147  !
148  CALL test_nam_var_surf(iluout,'CSCOND',cscond,'NP89','PL98')
149  CALL test_nam_var_surf(iluout,'CC1DRY',cc1dry,'DEF ','GB93')
150  CALL test_nam_var_surf(iluout,'CSOILFRZ',csoilfrz,'DEF','LWT')
151  CALL test_nam_var_surf(iluout,'CDIFSFCOND',cdifsfcond,'DEF ','MLCH')
152  CALL test_nam_var_surf(iluout,'CSNOWRES',csnowres,'DEF','RIL')
153  CALL test_nam_var_surf(iluout,'CCPSURF',ccpsurf,'DRY','HUM')
154  !
155  CALL test_nam_var_surf(iluout,'CRUNOFF',crunoff,'WSAT','DT92','SGH ','TOPD')
156  CALL test_nam_var_surf(iluout,'CKSAT',cksat,'DEF','SGH','EXP')
157  CALL test_nam_var_surf(iluout,'CRAIN',crain,'DEF','SGH')
158  CALL test_nam_var_surf(iluout,'CHORT',chort,'DEF','SGH')
159  !
160  CALL test_nam_var_surf(iluout,'CCH_DRY_DEP',cch_dry_dep,' ','WES89 ','NONE ')
161  !
162  CALL test_nam_var_surf(iluout,'CSNOWMETAMO',csnowmetamo,'B92','C13','F06','T07')
163  CALL test_nam_var_surf(iluout,'CSNOWRAD',csnowrad,'B92','TAR','TA1','TA2')
164  !
165  !* close namelist file
166  !
167  CALL close_namelist(hprogram,inam)
168  !
169 ENDIF
170 !
171 IF (imi.NE.-1) THEN
172  CALL update_nam_isban(io)
173  CALL update_nam_isba_agsn(io)
174  CALL update_nam_sgh_isban(io)
175  CALL update_nam_diag_isban(de, dgo, dmi)
176  CALL update_nam_diag_surfn(dgo)
177  CALL update_nam_ch_controln(chi)
178  CALL update_nam_ch_isban(chi)
180  CALL update_nam_isba_snown(io)
181 ENDIF
182 !
183 !-------------------------------------------------------------------------------
184 !
185 !* surface time-step forced by the atmosphere
186 !
187 !XTSTEP = XUNDEF
188 !
189 !-------------------------------------------------------------------------------
190 !
191 IF (lhook) CALL dr_hook('READ_ISBA_CONF_N',1,zhook_handle)
192 !-------------------------------------------------------------------------------
193 !
194 END SUBROUTINE read_isba_conf_n
subroutine update_nam_sgh_isban(IO)
Definition: modn_isban.F90:228
subroutine init_nam_isban(IO)
Definition: modn_isban.F90:123
subroutine update_nam_ch_controln(CHI)
Definition: modn_isban.F90:364
integer function get_current_model_index_surfex()
subroutine update_nam_isba_snown(IO)
Definition: modn_isban.F90:477
subroutine update_nam_diag_surfn(DGO)
Definition: modn_isban.F90:325
character(len=4) cc1dry
Definition: modn_isban.F90:45
character(len=6) cch_dry_dep
Definition: modn_isban.F90:103
subroutine posnam(KULNAM, HDNAML, OFOUND, KLUOUT)
subroutine read_isba_conf_n(CHI, DE, DGO, DMI, IO, HPROGRAM)
subroutine update_nam_isba_agsn(IO)
Definition: modn_isban.F90:213
character(len=3) cksat
Definition: modn_isban.F90:52
subroutine update_nam_spinup_carb_isban(IO)
Definition: modn_isban.F90:435
subroutine init_nam_ch_isban(CHI)
Definition: modn_isban.F90:379
real, parameter xundef
character(len=3) chort
Definition: modn_isban.F90:55
subroutine init_nam_diag_isban(DE, DGO, DMI)
Definition: modn_isban.F90:247
integer, parameter jprb
Definition: parkind1.F90:32
subroutine init_nam_ch_controln(CHI)
Definition: modn_isban.F90:349
subroutine init_nam_isba_snown(IO)
Definition: modn_isban.F90:457
subroutine init_nam_diag_surfn(DGO)
Definition: modn_isban.F90:301
character(len=3) csnowres
Definition: modn_isban.F90:49
subroutine close_namelist(HPROGRAM, KLUNAM)
character(len=4) cdifsfcond
Definition: modn_isban.F90:48
subroutine get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:7
subroutine update_nam_diag_isban(DE, DGO, DMI)
Definition: modn_isban.F90:274
logical lhook
Definition: yomhook.F90:15
character(len=3) ccpsurf
Definition: modn_isban.F90:50
character(3) csnowmetamo
Definition: modn_isban.F90:101
character(3) csnowrad
Definition: modn_isban.F90:102
character(len=3) crain
Definition: modn_isban.F90:54
subroutine update_nam_ch_isban(CHI)
Definition: modn_isban.F90:396
character(len=4) cscond
Definition: modn_isban.F90:46
character(len=3) csoilfrz
Definition: modn_isban.F90:47
character(len=4) crunoff
Definition: modn_isban.F90:51
subroutine init_nam_isba_agsn(IO)
Definition: modn_isban.F90:151
subroutine open_namelist(HPROGRAM, KLUNAM, HFILE)
subroutine update_nam_isban(IO)
Definition: modn_isban.F90:185
subroutine init_nam_sgh_isban(IO)
Definition: modn_isban.F90:166
subroutine init_nam_spinup_carb_isban(IO)
Definition: modn_isban.F90:413