SURFEX v8.1
General documentation of Surfex
read_surf_atm_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_surf_atm_conf_n (CHU, DGO, USS, HPROGRAM)
7 ! #######################################################
8 !
9 !!**** *READ_SURF_ATM_CONF* - reads the general configuration for surface
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_surf_n, ONLY : ch_surf_t
45 USE modd_diag_n, ONLY : diag_options_t
46 USE modd_sso_n, ONLY : sso_t
47 !
49 !
51 USE modi_get_luout
52 USE modi_open_namelist
53 USE modi_close_namelist
54 USE mode_pos_surf
55 !
56 USE modd_read_namelist, ONLY : lnam_read
57 USE modn_sso_n
59 !
60 USE yomhook ,ONLY : lhook, dr_hook
61 USE parkind1 ,ONLY : jprb
62 !
63 IMPLICIT NONE
64 !
65 !* 0.1 Declarations of arguments
66 ! -------------------------
67 !
68 !
69 TYPE(ch_surf_t), INTENT(INOUT) :: CHU
70 TYPE(diag_options_t), INTENT(INOUT) :: DGO
71 TYPE(sso_t), INTENT(INOUT) :: USS
72 !
73  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling GROUND
74 !
75 !* 0.2 Declarations of local variables
76 ! -------------------------------
77 !
78 !
79 LOGICAL :: GFOUND ! Return code when searching namelist
80 INTEGER :: ILUOUT ! logical unit of output file
81 INTEGER :: INAM ! logical unit of namelist file
82 INTEGER :: IMI
83 REAL(KIND=JPRB) :: ZHOOK_HANDLE
84 !-------------------------------------------------------------------------------
85 !
86 !* get output listing file logical unit
87 !
88 IF (lhook) CALL dr_hook('READ_SURF_ATM_CONF_N',0,zhook_handle)
89  CALL get_luout(hprogram,iluout)
90 !
92 !
93 IF (imi.NE.-1 .AND. lnam_read) THEN
94  CALL init_nam_sson(uss)
95  CALL init_nam_ch_controln(chu)
96  CALL init_nam_ch_surfn(chu)
97  CALL init_nam_diag_surf_atmn(dgo)
98  CALL init_nam_diag_surfn(dgo)
100 ENDIF
101 !
102 IF (lnam_read) THEN
103  !
104  !* open namelist file
105  !
106  CALL open_namelist(hprogram,inam)
107  !
108  !* reading of namelist
109  ! -------------------
110  !
111  !
112  CALL posnam(inam,'NAM_SSON',gfound,iluout)
113  IF (gfound) READ(unit=inam,nml=nam_sson)
114  CALL test_nam_var_surf(iluout,'CROUGH',crough,'NONE','Z01D','Z04D','BE04')
115  !
116  CALL posnam(inam,'NAM_DIAG_SURFN',gfound,iluout)
117  IF (gfound) READ(unit=inam,nml=nam_diag_surfn)
118  !
119  cselect(:) = ' '
120  CALL posnam(inam,'NAM_WRITE_DIAG_SURFN',gfound,iluout)
121  IF (gfound) READ(unit=inam,nml=nam_write_diag_surfn)
122  !
123  CALL posnam(inam,'NAM_DIAG_SURF_ATMN',gfound,iluout)
124  IF (gfound) READ(unit=inam,nml=nam_diag_surf_atmn)
125  !
126  CALL posnam(inam,'NAM_CH_CONTROLN',gfound,iluout)
127  IF (gfound) READ(unit=inam,nml=nam_ch_controln)
128  !
129  CALL posnam(inam,'NAM_CH_SURFN',gfound,iluout)
130  IF (gfound) READ(unit=inam,nml=nam_ch_surfn)
131  !
132  !* close namelist file
133  !
134  CALL close_namelist(hprogram,inam)
135  !
136 ENDIF
137 !
138 IF (imi.NE.-1) THEN
139  CALL update_nam_sson(uss)
140  CALL update_nam_ch_controln(chu)
141  CALL update_nam_ch_surfn(chu)
142  CALL update_nam_diag_surf_atmn(dgo)
143  CALL update_nam_diag_surfn(dgo)
145 ENDIF
146 IF (lhook) CALL dr_hook('READ_SURF_ATM_CONF_N',1,zhook_handle)
147 !
148 !
149 !-------------------------------------------------------------------------------
150 !
151 END SUBROUTINE read_surf_atm_conf_n
subroutine init_nam_sson(USS)
Definition: modn_sson.F90:52
subroutine init_nam_diag_surfn(DGO)
subroutine update_nam_diag_surf_atmn(DGO)
subroutine update_nam_ch_surfn(CHU)
subroutine update_nam_diag_surfn(DGO)
character(len=12), dimension(4000) cselect
character(len=4) crough
Definition: modn_sson.F90:43
integer function get_current_model_index_surfex()
subroutine posnam(KULNAM, HDNAML, OFOUND, KLUOUT)
subroutine update_nam_ch_controln(CHU)
subroutine read_surf_atm_conf_n(CHU, DGO, USS, HPROGRAM)
subroutine update_nam_write_diag_surfn(DGO)
integer, parameter jprb
Definition: parkind1.F90:32
subroutine close_namelist(HPROGRAM, KLUNAM)
subroutine get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:7
subroutine init_nam_write_diag_surfn(DGO)
subroutine init_nam_ch_controln(CHU)
subroutine init_nam_ch_surfn(CHU)
logical lhook
Definition: yomhook.F90:15
subroutine update_nam_sson(USS)
Definition: modn_sson.F90:68
subroutine init_nam_diag_surf_atmn(DGO)
subroutine open_namelist(HPROGRAM, KLUNAM, HFILE)