SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
read_prep_seaflux_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_seaflux_conf (O, &
7  hprogram,hvar,hfile,hfiletype,hfilepgd,hfilepgdtype, &
8  hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,kluout,ounif)
9 ! #######################################################
10 !
11 !!**** *READ_PREP_SEAFLUX_CONF* - routine to read the configuration for
12 !! SEAFLUX fields preparation
13 !!
14 !! PURPOSE
15 !! -------
16 !!
17 !!** METHOD
18 !! ------
19 !!
20 !! EXTERNAL
21 !! --------
22 !!
23 !!
24 !! IMPLICIT ARGUMENTS
25 !! ------------------
26 !!
27 !! REFERENCE
28 !! ---------
29 !!
30 !!
31 !! AUTHOR
32 !! ------
33 !! S. Malardel *Meteo France*
34 !!
35 !! MODIFICATIONS
36 !! -------------
37 !! Original 01/2004
38 !! P. Le Moigne 10/2005, Phasage Arome
39 !! C. Lebeaupin 01/2008 Add oceanic variables initialization
40 !! Modified 09/2013 S. Senesi : introduce variables for sea-ice scheme
41 !-------------------------------------------------------------------------------
42 !
43 !* 0. DECLARATIONS
44 ! ------------
45 !
46 !
47 USE modd_ocean_n, ONLY : ocean_t
48 !
50 !
51 USE modi_read_prep_surf_atm_conf
52 USE modi_prep_ocean_mercatorvergrid
53 !
54 USE modd_prep_seaflux, ONLY : cfile_seaflx, ctype_seaflx, cfilepgd_seaflx, ctypepgd, &
55  xsst_unif, xsss_unif, xsic_unif
56 !
57 USE modd_surf_par, ONLY : xundef
58 !
59 !
60 USE yomhook ,ONLY : lhook, dr_hook
61 USE parkind1 ,ONLY : jprb
62 !
63 USE modi_abor1_sfx
64 !
65 IMPLICIT NONE
66 !
67 !* 0.1 Declarations of arguments
68 ! -------------------------
69 !
70 !
71 TYPE(ocean_t), INTENT(INOUT) :: o
72 !
73  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! program calling ISBA
74  CHARACTER(LEN=7), INTENT(IN) :: hvar ! variable treated
75  CHARACTER(LEN=28), INTENT(OUT) :: hfile ! file name
76  CHARACTER(LEN=6), INTENT(OUT) :: hfiletype! file type
77  CHARACTER(LEN=28), INTENT(OUT) :: hfilepgd ! file name
78  CHARACTER(LEN=6), INTENT(OUT) :: hfilepgdtype! file type
79  CHARACTER(LEN=28), INTENT(IN) :: hatmfile ! atmospheric file name
80  CHARACTER(LEN=6), INTENT(IN) :: hatmfiletype! atmospheric file type
81  CHARACTER(LEN=28), INTENT(IN) :: hpgdfile ! atmospheric file name
82  CHARACTER(LEN=6), INTENT(IN) :: hpgdfiletype! atmospheric file type
83 INTEGER, INTENT(IN) :: kluout ! logical unit of output listing
84 LOGICAL, INTENT(OUT) :: ounif ! flag for prescribed uniform field
85 
86 !
87 !* 0.2 Declarations of local variables
88 ! -------------------------------
89 !
90 INTEGER :: iresp ! IRESP : return-code if a problem appears
91  ! at the open of the file in LFI routines
92 INTEGER :: ilunam ! Logical unit of namelist file
93 !
94  CHARACTER(LEN=28) :: ynamelist ! namelist file
95 !
96 LOGICAL :: gfound ! Return code when searching namelist
97 REAL(KIND=JPRB) :: zhook_handle
98 !-------------------------------------------------------------------------------
99 !
100 !
101 IF (lhook) CALL dr_hook('READ_PREP_SEAFLUX_CONF',0,zhook_handle)
102 hfile = ' '
103 hfiletype = ' '
104 !
105 hfilepgd = ' '
106 hfilepgdtype = ' '
107 !
108 ounif = .false.
109 !
110 !-------------------------------------------------------------------------------
111 !
112 !* Select seaflux files if they are defined
113 ! -----------------------------------------
114 !
115 IF (len_trim(hfile)==0 .AND. len_trim(cfile_seaflx)>0 .AND. len_trim(ctype_seaflx)>0) THEN
116  hfile = cfile_seaflx
117  hfiletype = ctype_seaflx
118 END IF
119 !
120 IF (len_trim(hfilepgd)==0 .AND. len_trim(cfilepgd_seaflx)>0 .AND. len_trim(ctypepgd)>0) THEN
121  hfilepgd = cfilepgd_seaflx
122  hfilepgdtype = ctypepgd
123 END IF
124 !
125 !! If no file name in the scheme namelist,
126 !! try to find a name in NAM_SURF_ATM
127 !
128 IF (len_trim(hfile)==0) THEN
129 !
130  CALL read_prep_surf_atm_conf(hprogram,hfile,hfiletype,hfilepgd,hfilepgdtype,&
131  hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,kluout)
132 !
133 END IF
134 !-------------------------------------------------------------------------------
135 !
136 !* Is an uniform field prescribed?
137 ! ------------------------------
138 !
139 SELECT CASE (hvar)
140  CASE ('SST ')
141  ounif = (xsst_unif/=xundef)
142  CASE ('SSS ')
143  IF (cseaice_scheme == 'NONE '.AND. &
144  len_trim(hfiletype)==0.0 .AND. &
145  xsss_unif==xundef )THEN
146  xsss_unif=0.0
147  ENDIF
148  ounif = (xsss_unif/=xundef)
149  CASE ('SIC ')
150  ounif = (xsic_unif/=xundef)
151 END SELECT
152 
153 !
154 !-------------------------------------------------------------------------------
155 !
156 !* If no file and no uniform field is prescribed: error
157 ! ---------------------------------------------
158 !
159 IF (hvar=='DATE ' .OR. hvar=='ZS ') THEN
160  ounif = (hfiletype==' ')
161  IF (lhook) CALL dr_hook('READ_PREP_SEAFLUX_CONF',1,zhook_handle)
162  RETURN
163 END IF
164 !
165 IF (len_trim(hfiletype)==0 .AND. .NOT. ounif) THEN
166  CALL abor1_sfx('READ_PREP_SEAFLUX_CONF: AN INPUT VALUE IS REQUIRED FOR '//hvar)
167 END IF
168 !
169 !-------------------------------------------------------------------------------
170 !
171 !* If 1D coupling: ocean variables initializing
172 ! --------------------------------------------
173 !
174 IF (o%LMERCATOR) THEN
175  WRITE(kluout,*) 'LMERCATOR=T : initializing oceanic vertical grid'
176  CALL prep_ocean_mercatorvergrid(hprogram,ounif)
177 END IF
178 IF (lhook) CALL dr_hook('READ_PREP_SEAFLUX_CONF',1,zhook_handle)
179 !
180 !-------------------------------------------------------------------------------
181 !
182 END SUBROUTINE read_prep_seaflux_conf
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:6
subroutine prep_ocean_mercatorvergrid(HPROGRAM, OUNIF)
subroutine read_prep_surf_atm_conf(HPROGRAM, HFILE, HFILETYPE, HFILEPGD, HFILEPGDTYPE, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE, KLUOUT)
subroutine read_prep_seaflux_conf(O, HPROGRAM, HVAR, HFILE, HFILETYPE, HFILEPGD, HFILEPGDTYPE, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE, KLUOUT, OUNIF)