SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
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, DGEI, DGI, DGMI, I, &
7  hprogram)
8 ! #######################################################
9 !
10 !!**** *READ_ISBA_CONF* - routine to read the configuration for ISBA
11 !!
12 !! PURPOSE
13 !! -------
14 !!
15 !!** METHOD
16 !! ------
17 !!
18 !! EXTERNAL
19 !! --------
20 !!
21 !!
22 !! IMPLICIT ARGUMENTS
23 !! ------------------
24 !!
25 !! REFERENCE
26 !! ---------
27 !!
28 !!
29 !! AUTHOR
30 !! ------
31 !! V. Masson *Meteo France*
32 !!
33 !! MODIFICATIONS
34 !! -------------
35 !! Original 01/2003
36 !! P Le Moigne 09/2005 AGS modifs of L. Jarlan
37 !! P Le Moigne 09/2005 CSNOWRES option
38 !! Modified by P. Le Moigne (06/2006): seeding and irrigation
39 !! Modified by P. Le Moigne (05/2008): deep soil characteristics
40 !! Modified by R. El Khatib 05-Apr-2012 Fix message handling
41 !! Modified by C. Carmagnola (01/2013): CSNOWMETAMO = 'B92','C13','F06','T07'
42 !! B. Decharme 04/2013 delete CTOPREG
43 !-------------------------------------------------------------------------------
44 !
45 !* 0. DECLARATIONS
46 ! ------------
47 !
48 !
49 !
50 !
51 !
52 USE modd_ch_isba_n, ONLY : ch_isba_t
54 USE modd_diag_isba_n, ONLY : diag_isba_t
56 USE modd_isba_n, ONLY : isba_t
57 !
59 !
60 USE mode_pos_surf
61 !
63 USE modi_get_luout
64 USE modi_open_namelist
65 USE modi_close_namelist
66 !
67 USE modn_isba_n
68 !
69 USE modd_read_namelist, ONLY : lnam_read
70 USE modd_surf_par, ONLY : xundef
71 !
72 !
73 USE yomhook ,ONLY : lhook, dr_hook
74 USE parkind1 ,ONLY : jprb
75 !
76 USE modi_get_surf_atm_sso_rough
77 IMPLICIT NONE
78 !
79 !* 0.1 Declarations of arguments
80 ! -------------------------
81 !
82 !
83 TYPE(ch_isba_t), INTENT(INOUT) :: chi
84 TYPE(diag_evap_isba_t), INTENT(INOUT) :: dgei
85 TYPE(diag_isba_t), INTENT(INOUT) :: dgi
86 TYPE(diag_misc_isba_t), INTENT(INOUT) :: dgmi
87 TYPE(isba_t), INTENT(INOUT) :: i
88 !
89  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! program calling ISBA
90 
91 !
92 !* 0.2 Declarations of local variables
93 ! -------------------------------
94 !
95 !
96 LOGICAL :: gfound ! Return code when searching namelist
97 INTEGER :: iluout ! logical unit of output file
98 INTEGER :: inam ! logical unit of namelist file
99  CHARACTER(LEN=4) :: yrough ! CROUGH from surf_atm
100 INTEGER :: imi
101 REAL(KIND=JPRB) :: zhook_handle
102 !-------------------------------------------------------------------------------
103 !
104 !* get output listing file logical unit
105 !
106 IF (lhook) CALL dr_hook('READ_ISBA_CONF_N',0,zhook_handle)
107  CALL get_luout(hprogram,iluout)
108 !
110 !
111 IF (imi.NE.-1 .AND. lnam_read) THEN
112  CALL init_nam_isban(i)
113  CALL init_nam_isba_agsn(i)
114  CALL init_nam_sgh_isban(i)
115  CALL init_nam_diag_isban(dgei, dgi, dgmi)
116  CALL init_nam_diag_surfn(dgei, dgi)
117  CALL init_nam_ch_controln(chi)
118  CALL init_nam_ch_isban(chi)
120  CALL init_nam_isba_snown(i)
121 ENDIF
122 !
123 IF (lnam_read) THEN
124  !
125  !* open namelist file
126  !
127  CALL open_namelist(hprogram,inam)
128  !
129  !* reading of namelist
130  ! -------------------
131  !
132  CALL posnam(inam,'NAM_ISBAN',gfound,iluout)
133  IF (gfound) READ(unit=inam,nml=nam_isban)
134  CALL posnam(inam,'NAM_ISBA_AGSN',gfound,iluout)
135  IF (gfound) READ(unit=inam,nml=nam_isba_agsn)
136  CALL posnam(inam,'NAM_SGH_ISBAN',gfound,iluout)
137  IF (gfound) READ(unit=inam,nml=nam_sgh_isban)
138  CALL posnam(inam,'NAM_DIAG_SURFN',gfound,iluout)
139  IF (gfound) READ(unit=inam,nml=nam_diag_surfn)
140  CALL posnam(inam,'NAM_DIAG_ISBAN',gfound,iluout)
141  IF (gfound) READ(unit=inam,nml=nam_diag_isban)
142  CALL posnam(inam,'NAM_CH_CONTROLN',gfound,iluout)
143  IF (gfound) READ(unit=inam,nml=nam_ch_controln)
144  CALL posnam(inam,'NAM_CH_ISBAN',gfound,iluout)
145  IF (gfound) READ(unit=inam,nml=nam_ch_isban)
146  CALL posnam(inam,'NAM_SPINUP_CARBN',gfound,iluout)
147  IF (gfound) READ(unit=inam,nml=nam_spinup_carbn)
148  CALL posnam(inam,'NAM_ISBA_SNOWN',gfound,iluout)
149  IF (gfound) READ(unit=inam,nml=nam_isba_snown)
150  !
151  CALL test_nam_var_surf(iluout,'CROUGH',crough,'NONE','Z01D','Z04D','BE04','UNDE')
152  CALL test_nam_var_surf(iluout,'CSCOND',cscond,'NP89','PL98')
153  CALL test_nam_var_surf(iluout,'CALBEDO',calbedo,'EVOL','DRY ','WET ','MEAN','USER','CM13')
154  CALL test_nam_var_surf(iluout,'CC1DRY',cc1dry,'DEF ','GB93')
155  CALL test_nam_var_surf(iluout,'CSOILFRZ',csoilfrz,'DEF','LWT')
156  CALL test_nam_var_surf(iluout,'CDIFSFCOND',cdifsfcond,'DEF ','MLCH')
157  CALL test_nam_var_surf(iluout,'CSNOWRES',csnowres,'DEF','RIL')
158  CALL test_nam_var_surf(iluout,'CCPSURF',ccpsurf,'DRY','HUM')
159  !
160  CALL test_nam_var_surf(iluout,'CRUNOFF',crunoff,'WSAT','DT92','SGH ','TOPD')
161  CALL test_nam_var_surf(iluout,'CKSAT',cksat,'DEF','SGH','EXP')
162  CALL test_nam_var_surf(iluout,'CRAIN',crain,'DEF','SGH')
163  CALL test_nam_var_surf(iluout,'CHORT',chort,'DEF','SGH')
164  !
165  CALL test_nam_var_surf(iluout,'CCH_DRY_DEP',cch_dry_dep,' ','WES89 ','NONE ')
166  !
167  CALL test_nam_var_surf(iluout,'CSNOWMETAMO',csnowmetamo,'B92','C13','F06','T07')
168  CALL test_nam_var_surf(iluout,'CSNOWRAD',csnowrad,'B92','TAR','TA1','TA2')
169  !
170  !* close namelist file
171  !
172  CALL close_namelist(hprogram,inam)
173  !
174 ENDIF
175 !
176 IF (imi.NE.-1) THEN
177  CALL update_nam_isban(i)
178  CALL update_nam_isba_agsn(i)
179  CALL update_nam_sgh_isban(i)
180  CALL update_nam_diag_isban(dgei, dgi, dgmi)
181  CALL update_nam_diag_surfn(dgei, dgi)
182  CALL update_nam_ch_controln(chi)
183  CALL update_nam_ch_isban(chi)
185  CALL update_nam_isba_snown(i)
186 ENDIF
187 !
188 !-------------------------------------------------------------------------------
189 !
190 !* surface time-step forced by the atmosphere
191 !
192 !XTSTEP = XUNDEF
193 !
194 !-------------------------------------------------------------------------------
195 !
196 !* coherence check : orographic drag must be done only once
197 !
198  CALL get_surf_atm_sso_rough(yrough)
199 !
200 IF (yrough/="NONE") THEN
201  IF (lnam_read) THEN
202  WRITE(iluout,*) " -------------------------------------------------------------------------- "
203  WRITE(iluout,*) " Orographic roughness is done in SURF_ATM, so it should not be done in ISBA "
204  WRITE(iluout,*) " CROUGH in NAM_ISBAn is set to 'NONE' "
205  WRITE(iluout,*) " "
206  WRITE(iluout,*) " -------------------------------------------------------------------------- "
207  ENDIF
208  crough = "NONE"
209 END IF
210 IF (lhook) CALL dr_hook('READ_ISBA_CONF_N',1,zhook_handle)
211 !-------------------------------------------------------------------------------
212 !
213 END SUBROUTINE read_isba_conf_n
subroutine update_nam_ch_controln(CHI)
Definition: modn_isban.F90:365
subroutine init_nam_isba_agsn(I)
Definition: modn_isban.F90:152
subroutine init_nam_isba_snown(I)
Definition: modn_isban.F90:458
subroutine init_nam_sgh_isban(I)
Definition: modn_isban.F90:167
subroutine get_surf_atm_sso_rough(HROUGH)
subroutine update_nam_isba_snown(I)
Definition: modn_isban.F90:478
subroutine read_isba_conf_n(CHI, DGEI, DGI, DGMI, I, HPROGRAM)
subroutine init_nam_ch_controln(CHI)
Definition: modn_isban.F90:350
subroutine init_nam_diag_surfn(DGF)
subroutine update_nam_sgh_isban(I)
Definition: modn_isban.F90:231
subroutine update_nam_spinup_carb_isban(I)
Definition: modn_isban.F90:436
subroutine update_nam_ch_isban(CHI)
Definition: modn_isban.F90:397
subroutine update_nam_diag_surfn(DGF)
subroutine update_nam_isban(I)
Definition: modn_isban.F90:186
subroutine init_nam_ch_isban(CHI)
Definition: modn_isban.F90:380
subroutine close_namelist(HPROGRAM, KLUNAM)
subroutine posnam(KULNAM, HDNAML, OFOUND, KLUOUT)
subroutine get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:6
subroutine init_nam_isban(I)
Definition: modn_isban.F90:122
subroutine init_nam_spinup_carb_isban(I)
Definition: modn_isban.F90:414
subroutine init_nam_diag_isban(DGEI, DGI, DGMI)
Definition: modn_isban.F90:250
subroutine open_namelist(HPROGRAM, KLUNAM, HFILE)
subroutine update_nam_isba_agsn(I)
Definition: modn_isban.F90:216
subroutine update_nam_diag_isban(DGEI, DGI, DGMI)
Definition: modn_isban.F90:275
integer function get_current_model_index_surfex()