SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
read_prep_flake_conf.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_prep_flake_conf(HPROGRAM,HVAR,HFILE,HFILETYPE,HFILEPGD,HFILEPGDTYPE,&
7  hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,kluout,ounif)
8 ! #######################################################
9 !
10 !!**** *READ_PREP_FLAKE_CONF* - routine to read the configuration for
11 !! FLAKE fields preparation
12 !!
13 !! PURPOSE
14 !! -------
15 !!
16 !!** METHOD
17 !! ------
18 !!
19 !! EXTERNAL
20 !! --------
21 !!
22 !!
23 !! IMPLICIT ARGUMENTS
24 !! ------------------
25 !!
26 !! REFERENCE
27 !! ---------
28 !!
29 !!
30 !! AUTHOR
31 !! ------
32 !! V. Masson *Meteo France*
33 !!
34 !! MODIFICATIONS
35 !! -------------
36 !! Original 01/2004
37 !! P. Le Moigne 10/2005, Phasage Arome
38 !-------------------------------------------------------------------------------
39 !
40 !* 0. DECLARATIONS
41 ! ------------
42 !
43 USE modi_read_prep_surf_atm_conf
44 !
46 USE modd_prep_flake, ONLY : cfile_flake, cfilepgd_flake, ctype, ctypepgd, &
47  xts_unif, &
48  xunif_t_snow, &
49  xunif_t_ice, &
50  xunif_t_mnw, &
51  xunif_t_wml, &
52  xunif_t_bot, &
53  xunif_t_b1, &
54  xunif_ct, &
55  xunif_h_snow, &
56  xunif_h_ice, &
57  xunif_h_ml, &
58  xunif_h_b1, &
59  lclim_lake
60 !
61 USE modd_surf_par, ONLY : xundef
62 !
63 !
64 USE yomhook ,ONLY : lhook, dr_hook
65 USE parkind1 ,ONLY : jprb
66 !
67 USE modi_abor1_sfx
68 !
69 IMPLICIT NONE
70 !
71 !* 0.1 Declarations of arguments
72 ! -------------------------
73 !
74  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! program calling ISBA
75  CHARACTER(LEN=7), INTENT(IN) :: hvar ! variable treated
76  CHARACTER(LEN=28), INTENT(OUT) :: hfile ! file name
77  CHARACTER(LEN=6), INTENT(OUT) :: hfiletype! file type
78  CHARACTER(LEN=28), INTENT(OUT) :: hfilepgd ! file name
79  CHARACTER(LEN=6), INTENT(OUT) :: hfilepgdtype! file type
80  CHARACTER(LEN=28), INTENT(IN) :: hatmfile ! atmospheric file name
81  CHARACTER(LEN=6), INTENT(IN) :: hatmfiletype! atmospheric file type
82  CHARACTER(LEN=28), INTENT(IN) :: hpgdfile ! atmospheric file name
83  CHARACTER(LEN=6), INTENT(IN) :: hpgdfiletype! atmospheric file type
84 INTEGER, INTENT(IN) :: kluout ! logical unit of output listing
85 LOGICAL, INTENT(OUT) :: ounif ! flag for prescribed uniform field
86 
87 !
88 !* 0.2 Declarations of local variables
89 ! -------------------------------
90 !
91 INTEGER :: iresp ! IRESP : return-code if a problem appears
92  ! at the open of the file in LFI routines
93 INTEGER :: ilunam ! Logical unit of namelist file
94 !
95  CHARACTER(LEN=28) :: ynamelist ! namelist file
96 !
97 LOGICAL :: gfound ! Return code when searching namelist
98 REAL(KIND=JPRB) :: zhook_handle
99 !-------------------------------------------------------------------------------
100 !
101 !
102 IF (lhook) CALL dr_hook('READ_PREP_FLAKE_CONF',0,zhook_handle)
103 hfile = ' '
104 hfiletype = ' '
105 !
106 hfilepgd = ' '
107 hfilepgdtype = ' '
108 !
109 ounif = .false.
110 !
111 !-------------------------------------------------------------------------------
112 !
113 !* choice of input file
114 ! --------------------
115 !
116 IF (len_trim(hfile)==0 .AND. len_trim(cfile_flake)>0 .AND. len_trim(ctype)>0) THEN
117  hfile = cfile_flake
118  hfiletype = ctype
119 END IF
120 !
121 IF (len_trim(hfilepgd)==0 .AND. len_trim(cfilepgd_flake)>0 .AND. len_trim(ctypepgd)>0) THEN
122  hfilepgd = cfilepgd_flake
123  hfilepgdtype = ctypepgd
124 END IF
125 !
126 !! If no file name in the scheme namelist,
127 !! try to find a name in NAM_SURF_ATM
128 !
129 IF (len_trim(hfile)==0) THEN
130 !
131  CALL read_prep_surf_atm_conf(hprogram,hfile,hfiletype,hfilepgd,hfilepgdtype,&
132  hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,kluout)
133 !
134 END IF
135 !-------------------------------------------------------------------------------
136 !
137 !* Is an uniform field prescribed?
138 ! ------------------------------
139 SELECT CASE (hvar)
140  CASE('TS ')
141  ounif = (xts_unif/=xundef)
142  CASE('T_SNOW ')
143  ounif = (xunif_t_snow/=xundef)
144  IF (hfiletype=='GRIB '.OR.hfiletype=='ASCLLV') THEN ! all fields but TS
145  hfile = ' ' ! are not readed
146  hfiletype = ' ' ! from grib files
147  END IF
148  CASE('T_ICE ')
149  ounif = (xunif_t_ice/=xundef)
150  IF (hfiletype=='GRIB '.OR.hfiletype=='ASCLLV') THEN
151  hfile = ' '
152  hfiletype = ' '
153  END IF
154  CASE('T_MNW ')
155  ounif = .false.
156  IF (hfiletype=='GRIB '.OR.hfiletype=='ASCLLV') THEN
157  hfile = ' '
158  hfiletype = ' '
159  END IF
160  CASE('T_WML ')
161  ounif = (xunif_t_wml/=xundef)
162  hfile = ' '
163  hfiletype = ' '
164  CASE('T_BOT ')
165  ounif = (xunif_t_bot/=xundef)
166  IF (hfiletype=='GRIB '.OR.hfiletype=='ASCLLV') THEN
167  hfile = ' '
168  hfiletype = ' '
169  END IF
170  CASE('T_B1 ')
171  ounif = (xunif_t_b1/=xundef)
172  IF (hfiletype=='GRIB '.OR.hfiletype=='ASCLLV') THEN
173  hfile = ' '
174  hfiletype = ' '
175  END IF
176  CASE('CT ')
177  ounif = (xunif_ct/=xundef)
178  IF (hfiletype=='GRIB '.OR.hfiletype=='ASCLLV') THEN
179  hfile = ' '
180  hfiletype = ' '
181  END IF
182  CASE('H_SNOW ')
183  ounif = (xunif_h_snow/=xundef)
184  IF (hfiletype=='GRIB '.OR.hfiletype=='ASCLLV') THEN
185  hfile = ' '
186  hfiletype = ' '
187  END IF
188  CASE('H_ICE ')
189  ounif = (xunif_h_ice/=xundef)
190  IF (hfiletype=='GRIB '.OR.hfiletype=='ASCLLV') THEN
191  hfile = ' '
192  hfiletype = ' '
193  END IF
194  CASE('H_ML ')
195  IF (hfiletype=='GRIB '.OR.hfiletype=='ASCLLV') THEN
196  hfile = ' '
197  hfiletype = ' '
198  END IF
199  ounif = (xunif_h_ml/=xundef)
200  CASE('H_B1 ')
201  ounif = (xunif_h_b1/=xundef)
202  IF (hfiletype=='GRIB '.OR.hfiletype=='ASCLLV') THEN
203  hfile = ' '
204  hfiletype = ' '
205  END IF
206 END SELECT
207 !
208 !
209 !-------------------------------------------------------------------------------
210 !
211 !* If no file and no uniform field is prescribed: default values used
212 ! ---------------------------------------------
213 !
214 IF (len_trim(hfiletype)==0 .AND. .NOT. ounif) THEN
215  SELECT CASE (hvar)
216  CASE ('ZS ')
217  ounif = .true.
218  IF (lhook) CALL dr_hook('READ_PREP_FLAKE_CONF',1,zhook_handle)
219  RETURN
220  CASE ('DATE ')
221  IF (lhook) CALL dr_hook('READ_PREP_FLAKE_CONF',1,zhook_handle)
222  RETURN
223  CASE('TS ') ! an input file or a uniform value must be given for TS
224  CALL abor1_sfx('READ_PREP_FLAKE_CONF: AN INPUT FILE OR A UNIFORM PRESCRIBED TS REQUIRED')
225  END SELECT
226 END IF
227 IF (lhook) CALL dr_hook('READ_PREP_FLAKE_CONF',1,zhook_handle)
228 !
229 !
230 !-------------------------------------------------------------------------------
231 !
232 END SUBROUTINE read_prep_flake_conf
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:6
subroutine read_prep_flake_conf(HPROGRAM, HVAR, HFILE, HFILETYPE, HFILEPGD, HFILEPGDTYPE, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE, KLUOUT, OUNIF)
subroutine read_prep_surf_atm_conf(HPROGRAM, HFILE, HFILETYPE, HFILEPGD, HFILEPGDTYPE, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE, KLUOUT)