SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
read_flake_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_flake_conf_n (CHF, DGF, DGMF, F, &
7  hprogram)
8 ! #############################################################
9 !
10 !!**** *READ_FLAKE_CONF* - reads the configuration for FLAKE
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 !! Modified 04/2013, P. Le Moigne: FLake chemistry
37 !-------------------------------------------------------------------------------
38 !
39 !* 0. DECLARATIONS
40 ! ------------
41 !
42 !
43 !
44 !
45 !
46 !
47 !
48 USE modd_ch_flake_n, ONLY : ch_flake_t
51 USE modd_flake_n, ONLY : flake_t
52 !
54 !
55 USE mode_pos_surf
56 !
58 USE modi_get_luout
59 USE modi_open_namelist
60 USE modi_close_namelist
61 !
62 USE modn_flake_n
63 !
64 USE modd_read_namelist, ONLY : lnam_read
65 USE modd_surf_par, ONLY : xundef
66 !
67 !
68 USE yomhook ,ONLY : lhook, dr_hook
69 USE parkind1 ,ONLY : jprb
70 !
71 USE modi_abor1_sfx
72 IMPLICIT NONE
73 !
74 !* 0.1 Declarations of arguments
75 ! -------------------------
76 !
77 !
78 TYPE(ch_flake_t), INTENT(INOUT) :: chf
79 TYPE(diag_flake_t), INTENT(INOUT) :: dgf
80 TYPE(diag_misc_flake_t), INTENT(INOUT) :: dgmf
81 TYPE(flake_t), INTENT(INOUT) :: f
82 !
83  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! program calling ISBA
84 
85 !
86 !* 0.2 Declarations of local variables
87 ! -------------------------------
88 !
89 LOGICAL :: gfound ! Return code when searching namelist
90 INTEGER :: iluout ! logical unit of output file
91 INTEGER :: inam ! logical unit of namelist file
92 INTEGER :: imi
93 INTEGER :: ilu
94 REAL(KIND=JPRB) :: zhook_handle
95 !
96 !-------------------------------------------------------------------------------
97 !
98 !* get output listing file logical unit
99 !
100 !
101 IF (lhook) CALL dr_hook('READ_FLAKE_CONF_N',0,zhook_handle)
102  CALL get_luout(hprogram,iluout)
103 !
105 !
106 IF (imi.NE.-1 .AND. lnam_read) THEN
107  CALL init_nam_flaken(f)
108  CALL init_nam_diag_surfn(dgf)
109  CALL init_nam_diag_flaken(dgmf)
110  CALL init_nam_ch_flaken(chf)
111 ENDIF
112 !
113 IF (lnam_read) THEN
114 
115  !* open namelist file
116  !
117  CALL open_namelist(hprogram,inam)
118  !
119  !* reading of namelist
120  ! -------------------
121  !
122  CALL posnam(inam,'NAM_FLAKEN',gfound,iluout)
123  IF (gfound) READ(unit=inam,nml=nam_flaken)
124  !
125  CALL test_nam_var_surf(iluout,'CSNOW_FLK',csnow_flk,'DEF')
126  CALL test_nam_var_surf(iluout,'CFLK_FLUX',cflk_flux,'DEF ','FLAKE')
127  CALL test_nam_var_surf(iluout,'CFLK_ALB',cflk_alb,'UNIF','TA96','MK10')
128  !
129  CALL posnam(inam,'NAM_DIAG_SURFN',gfound,iluout)
130  IF (gfound) READ(unit=inam,nml=nam_diag_surfn)
131  CALL posnam(inam,'NAM_DIAG_FLAKEN',gfound,iluout)
132  IF (gfound) READ(unit=inam,nml=nam_diag_flaken)
133  IF (lwater_profile .AND. count(xzwat_profile /= xundef) == 0) &
134  CALL abor1_sfx("XZWAT_PROFILE MUST BE DEFINED IN NAMELIST NAM_DIAG_FLAKEN IF LWATER_PROFILE=T")
135  CALL posnam(inam,'NAM_CH_FLAKEN',gfound,iluout)
136  IF (gfound) READ(unit=inam,nml=nam_ch_flaken)
137 !
138  CALL test_nam_var_surf(iluout,'CCH_DRY_DEP',cch_dry_dep,' ','WES89 ','NONE ')
139  !
140  !* close namelist file
141  !
142  CALL close_namelist(hprogram,inam)
143  !
144 ENDIF
145 !
146 IF (imi.NE.-1) THEN
147  CALL update_nam_flaken(f)
148  CALL update_nam_diag_surfn(dgf)
149  CALL update_nam_diag_flaken(dgmf)
150  CALL update_nam_ch_flaken(chf)
151 ENDIF
152 !
153 !-------------------------------------------------------------------------------
154 !
155 !* surface time-step forced by the atmosphere
156 !
157 xtstep = xundef
158 IF (lhook) CALL dr_hook('READ_FLAKE_CONF_N',1,zhook_handle)
159 !
160 !-------------------------------------------------------------------------------
161 !
162 END SUBROUTINE read_flake_conf_n
subroutine read_flake_conf_n(CHF, DGF, DGMF, F, HPROGRAM)
subroutine init_nam_ch_flaken(CHF)
subroutine init_nam_diag_flaken(DGMF)
subroutine init_nam_diag_surfn(DGF)
subroutine update_nam_flaken(F)
Definition: modn_flaken.F90:97
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:6
subroutine update_nam_ch_flaken(CHF)
subroutine update_nam_diag_surfn(DGF)
subroutine close_namelist(HPROGRAM, KLUNAM)
subroutine posnam(KULNAM, HDNAML, OFOUND, KLUOUT)
subroutine get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:6
subroutine init_nam_flaken(F)
Definition: modn_flaken.F90:76
subroutine update_nam_diag_flaken(DGMF)
subroutine open_namelist(HPROGRAM, KLUNAM, HFILE)
integer function get_current_model_index_surfex()