SURFEX v8.1
General documentation of Surfex
read_default_isban.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_default_isba_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 !-------------------------------------------------------------------------------
36 !
37 !* 0. DECLARATIONS
38 ! ------------
39 !
40 !
41 !
42 !
43 !
44 USE modd_ch_isba_n, ONLY : ch_isba_t
46 USE modd_diag_n, ONLY : diag_options_t
49 !
51 !
52 USE mode_pos_surf
53 !
54 USE modi_get_luout
55 USE modi_get_default_nam_n
56 !
57 USE modn_isba_n
58 !
59 USE modd_read_namelist, ONLY : lnam_read
60 !
61 !
62 USE yomhook ,ONLY : lhook, dr_hook
63 USE parkind1 ,ONLY : jprb
64 !
65 IMPLICIT NONE
66 !
67 !* 0.1 Declarations of arguments
68 ! -------------------------
69 !
70 !
71 TYPE(ch_isba_t), INTENT(INOUT) :: CHI
72 TYPE(diag_evap_isba_t), INTENT(INOUT) :: DE
73 TYPE(diag_options_t), INTENT(INOUT) :: DGO
74 TYPE(diag_misc_isba_t), INTENT(INOUT) :: DMI
75 TYPE(isba_options_t), INTENT(INOUT) :: IO
76 !
77  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling ISBA
78 
79 !
80 !* 0.2 Declarations of local variables
81 ! -------------------------------
82 !
83 !
84 LOGICAL :: GFOUND ! Return code when searching namelist
85 INTEGER :: ILUOUT ! output listing logical unit
86 INTEGER :: ILUDES ! .des file logical unit
87 INTEGER :: IMI
88 REAL(KIND=JPRB) :: ZHOOK_HANDLE
89 !-------------------------------------------------------------------------------
90 !
91 IF (lhook) CALL dr_hook('READ_DEFAULT_ISBA_N',0,zhook_handle)
92  CALL get_luout(hprogram,iluout)
93 !
94  CALL get_default_nam_n(hprogram,'READ ',iludes)
95 !
96 IF (iludes==0 .AND. lhook) CALL dr_hook('READ_DEFAULT_ISBA_N',1,zhook_handle)
97 IF (iludes==0) RETURN
98 !
100 !
101 IF (imi.NE.-1 .AND. lnam_read) THEN
102  CALL init_nam_isban(io)
103  CALL init_nam_isba_agsn(io)
104  CALL init_nam_sgh_isban(io)
105  CALL init_nam_diag_surfn(dgo)
106  CALL init_nam_diag_isban(de, dgo, dmi)
107  CALL init_nam_ch_controln(chi)
108  CALL init_nam_ch_isban(chi)
110  CALL init_nam_isba_snown(io)
111 ENDIF
112 !
113 IF (lnam_read) THEN
114  !
115  !* reading of new defaults in file
116  ! -------------------------------
117  !
118  CALL posnam(iludes,'NAM_ISBAN',gfound,iluout)
119  IF (gfound) READ(unit=iludes,nml=nam_isban)
120  CALL posnam(iludes,'NAM_ISBA_AGSN',gfound,iluout)
121  IF (gfound) READ(unit=iludes,nml=nam_isba_agsn)
122  CALL posnam(iludes,'NAM_SGH_ISBAN',gfound,iluout)
123  IF (gfound) READ(unit=iludes,nml=nam_sgh_isban)
124  CALL posnam(iludes,'NAM_DIAG_SURFN',gfound,iluout)
125  IF (gfound) READ(unit=iludes,nml=nam_diag_surfn)
126  CALL posnam(iludes,'NAM_DIAG_ISBAN',gfound,iluout)
127  IF (gfound) READ(unit=iludes,nml=nam_diag_isban)
128  CALL posnam(iludes,'NAM_CH_CONTROLN',gfound,iluout)
129  IF (gfound) READ(unit=iludes,nml=nam_ch_controln)
130  CALL posnam(iludes,'NAM_CH_ISBAN',gfound,iluout)
131  IF (gfound) READ(unit=iludes,nml=nam_ch_isban)
132  CALL posnam(iludes,'NAM_SPINUP_CARBN',gfound,iluout)
133  IF (gfound) READ(unit=iludes,nml=nam_spinup_carbn)
134  CALL posnam(iludes,'NAM_ISBA_SNOWN',gfound,iluout)
135  IF (gfound) READ(unit=iludes,nml=nam_isba_snown)
136 ENDIF
137 
138 IF (imi.NE.-1) THEN
139  CALL update_nam_isban(io)
140  CALL update_nam_isba_agsn(io)
141  CALL update_nam_sgh_isban(io)
142  CALL update_nam_diag_surfn(dgo)
143  CALL update_nam_diag_isban(de, dgo, dmi)
144  CALL update_nam_ch_controln(chi)
145  CALL update_nam_ch_isban(chi)
147  CALL update_nam_isba_snown(io)
148 ENDIF
149 IF (lhook) CALL dr_hook('READ_DEFAULT_ISBA_N',1,zhook_handle)
150 
151 !
152 !-------------------------------------------------------------------------------
153 !
154 END SUBROUTINE read_default_isba_n
subroutine update_nam_sgh_isban(IO)
Definition: modn_isban.F90:228
subroutine init_nam_isban(IO)
Definition: modn_isban.F90:123
subroutine get_default_nam_n(HPROGRAM, HACTION, KLUDES, ONAM_WRITTEN)
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 read_default_isba_n(CHI, DE, DGO, DMI, IO, HPROGRAM)
subroutine update_nam_diag_surfn(DGO)
Definition: modn_isban.F90:325
subroutine posnam(KULNAM, HDNAML, OFOUND, KLUOUT)
subroutine update_nam_isba_agsn(IO)
Definition: modn_isban.F90:213
subroutine update_nam_spinup_carb_isban(IO)
Definition: modn_isban.F90:435
subroutine init_nam_ch_isban(CHI)
Definition: modn_isban.F90:379
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
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
subroutine update_nam_ch_isban(CHI)
Definition: modn_isban.F90:396
subroutine init_nam_isba_agsn(IO)
Definition: modn_isban.F90:151
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