SURFEX v8.1
General documentation of Surfex
read_default_flaken.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_flake_n (CHF, DGO, DMF, F, HPROGRAM)
7 ! #############################################################
8 !
9 !!**** *READ_FLAKE_CONF* - routine to read the configuration for FLAKE
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 !! Modified 04/2013, P. Le Moigne: FLake chemistry
36 !-------------------------------------------------------------------------------
37 !
38 !* 0. DECLARATIONS
39 ! ------------
40 !
41 !
42 !
43 !
44 !
45 !
46 USE modd_ch_flake_n, ONLY : ch_flake_t
47 USE modd_diag_n, ONLY : diag_options_t
49 USE modd_flake_n, ONLY : flake_t
50 !
52 !
53 USE mode_pos_surf
54 USE modi_get_luout
55 USE modi_get_default_nam_n
56 !
57 USE modn_flake_n
58 USE modd_surf_par, ONLY : xundef
59 USE modd_read_namelist, ONLY : lnam_read
60 !
61 !
62 USE yomhook ,ONLY : lhook, dr_hook
63 USE parkind1 ,ONLY : jprb
64 !
65 USE modi_abor1_sfx
66 IMPLICIT NONE
67 !
68 !* 0.1 Declarations of arguments
69 ! -------------------------
70 !
71 !
72 TYPE(ch_flake_t), INTENT(INOUT) :: CHF
73 TYPE(diag_options_t), INTENT(INOUT) :: DGO
74 TYPE(diag_misc_flake_t), INTENT(INOUT) :: DMF
75 TYPE(flake_t), INTENT(INOUT) :: F
76 !
77  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling ISBA
78 
79 !
80 !* 0.2 Declarations of local variables
81 ! -------------------------------
82 !
83 LOGICAL :: GFOUND ! Return code when searching namelist
84 INTEGER :: ILUOUT ! output listing logical unit
85 INTEGER :: ILUDES ! .des file logical unit
86 INTEGER :: ILU !
87 INTEGER :: IMI
88 REAL(KIND=JPRB) :: ZHOOK_HANDLE
89 !
90 !-------------------------------------------------------------------------------
91 !
92 !
93 IF (lhook) CALL dr_hook('READ_DEFAULT_FLAKE_N',0,zhook_handle)
94  CALL get_luout(hprogram,iluout)
95 !
96  CALL get_default_nam_n(hprogram,'READ ',iludes)
97 !
98 IF (iludes==0 .AND. lhook) CALL dr_hook('READ_DEFAULT_FLAKE_N',1,zhook_handle)
99 IF (iludes==0) RETURN
100 !
102 !
103 IF (imi.NE.-1 .AND. lnam_read) THEN
104  CALL init_nam_flaken(f)
105  CALL init_nam_diag_surfn(dgo)
106  CALL init_nam_diag_flaken(dmf)
107  CALL init_nam_ch_flaken(chf)
108 ENDIF
109 !
110 IF (lnam_read) THEN
111  !
112  !* reading of namelist
113  ! -------------------
114  !
115  CALL posnam(iludes,'NAM_FLAKEN',gfound,iluout)
116  IF (gfound) READ(unit=iludes,nml=nam_flaken)
117  CALL posnam(iludes,'NAM_DIAG_SURFN',gfound,iluout)
118  IF (gfound) READ(unit=iludes,nml=nam_diag_surfn)
119  CALL posnam(iludes,'NAM_DIAG_FLAKEN',gfound,iluout)
120  IF (gfound) READ(unit=iludes,nml=nam_diag_flaken)
121  IF (lwater_profile .AND. count(xzwat_profile /= xundef) == 0) &
122  CALL abor1_sfx("XZWAT_PROFILE MUST BE DEFINED IN NAMELIST NAM_DIAG_FLAKEN IF LWATER_PROFILE=T")
123  CALL posnam(iludes,'NAM_CH_FLAKEN',gfound,iluout)
124  IF (gfound) READ(unit=iludes,nml=nam_ch_flaken)
125 !
126 ENDIF
127 !
128 IF (imi.NE.-1) THEN
129  CALL update_nam_flaken(f)
130  CALL update_nam_diag_surfn(dgo)
131  CALL update_nam_diag_flaken(dmf)
132  CALL update_nam_ch_flaken(chf)
133 ENDIF
134 IF (lhook) CALL dr_hook('READ_DEFAULT_FLAKE_N',1,zhook_handle)
135 !
136 !
137 !-------------------------------------------------------------------------------
138 !
139 END SUBROUTINE read_default_flake_n
subroutine init_nam_diag_surfn(DGO)
subroutine update_nam_flaken(F)
Definition: modn_flaken.F90:98
real, dimension(100) xzwat_profile
Definition: modn_flaken.F90:65
subroutine update_nam_diag_surfn(DGO)
subroutine get_default_nam_n(HPROGRAM, HACTION, KLUDES, ONAM_WRITTEN)
integer function get_current_model_index_surfex()
subroutine update_nam_diag_flaken(DMF)
subroutine posnam(KULNAM, HDNAML, OFOUND, KLUOUT)
logical lwater_profile
Definition: modn_flaken.F90:64
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:7
real, parameter xundef
integer, parameter jprb
Definition: parkind1.F90:32
subroutine update_nam_ch_flaken(CHF)
subroutine init_nam_flaken(F)
Definition: modn_flaken.F90:77
subroutine init_nam_diag_flaken(DMF)
subroutine get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:7
logical lhook
Definition: yomhook.F90:15
subroutine init_nam_ch_flaken(CHF)
subroutine read_default_flake_n(CHF, DGO, DMF, F, HPROGRAM)
static int count
Definition: memory_hook.c:21