SURFEX v8.1
General documentation of Surfex
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 (OMERCATOR, HPROGRAM,HVAR,HFILE,HFILETYPE,&
7  HFILEPGD,HFILEPGDTYPE, HATMFILE,HATMFILETYPE,&
8  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 !
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 LOGICAL, INTENT(IN) :: OMERCATOR
71 !
72  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling ISBA
73  CHARACTER(LEN=7), INTENT(IN) :: HVAR ! variable treated
74  CHARACTER(LEN=28), INTENT(OUT) :: HFILE ! file name
75  CHARACTER(LEN=6), INTENT(OUT) :: HFILETYPE! file type
76  CHARACTER(LEN=28), INTENT(OUT) :: HFILEPGD ! file name
77  CHARACTER(LEN=6), INTENT(OUT) :: HFILEPGDTYPE! file type
78  CHARACTER(LEN=28), INTENT(IN) :: HATMFILE ! atmospheric file name
79  CHARACTER(LEN=6), INTENT(IN) :: HATMFILETYPE! atmospheric file type
80  CHARACTER(LEN=28), INTENT(IN) :: HPGDFILE ! atmospheric file name
81  CHARACTER(LEN=6), INTENT(IN) :: HPGDFILETYPE! atmospheric file type
82 INTEGER, INTENT(IN) :: KLUOUT ! logical unit of output listing
83 LOGICAL, INTENT(OUT) :: OUNIF ! flag for prescribed uniform field
84 
85 !
86 !* 0.2 Declarations of local variables
87 ! -------------------------------
88 !
89 INTEGER :: IRESP ! IRESP : return-code if a problem appears
90  ! at the open of the file in LFI routines
91 INTEGER :: ILUNAM ! Logical unit of namelist file
92 !
93  CHARACTER(LEN=28) :: YNAMELIST ! namelist file
94 !
95 LOGICAL :: GFOUND ! Return code when searching namelist
96 REAL(KIND=JPRB) :: ZHOOK_HANDLE
97 !-------------------------------------------------------------------------------
98 !
99 !
100 IF (lhook) CALL dr_hook('READ_PREP_SEAFLUX_CONF',0,zhook_handle)
101 hfile = ' '
102 hfiletype = ' '
103 !
104 hfilepgd = ' '
105 hfilepgdtype = ' '
106 !
107 ounif = .false.
108 !
109 !-------------------------------------------------------------------------------
110 !
111 !* Select seaflux files if they are defined
112 ! -----------------------------------------
113 !
114 IF (len_trim(hfile)==0 .AND. len_trim(cfile_seaflx)>0 .AND. len_trim(ctype_seaflx)>0) THEN
115  hfile = cfile_seaflx
116  hfiletype = ctype_seaflx
117 END IF
118 !
119 IF (len_trim(hfilepgd)==0 .AND. len_trim(cfilepgd_seaflx)>0 .AND. len_trim(ctypepgd)>0) THEN
120  hfilepgd = cfilepgd_seaflx
121  hfilepgdtype = ctypepgd
122 END IF
123 !
124 !! If no file name in the scheme namelist,
125 !! try to find a name in NAM_SURF_ATM
126 !
127 IF (len_trim(hfile)==0) THEN
128 !
129  CALL read_prep_surf_atm_conf(hprogram,hfile,hfiletype,hfilepgd,hfilepgdtype,&
130  hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,kluout)
131 !
132 END IF
133 !-------------------------------------------------------------------------------
134 !
135 !* Is an uniform field prescribed?
136 ! ------------------------------
137 !
138 SELECT CASE (hvar)
139  CASE ('SST ')
140  ounif = (xsst_unif/=xundef)
141  CASE ('SSS ')
142  IF (cseaice_scheme == 'NONE '.AND. &
143  len_trim(hfiletype)==0.0 .AND. &
144  xsss_unif==xundef )THEN
145  xsss_unif=0.0
146  ENDIF
147  ounif = (xsss_unif/=xundef)
148  CASE ('SIC ')
149  ounif = (xsic_unif/=xundef)
150 END SELECT
151 
152 !
153 !-------------------------------------------------------------------------------
154 !
155 !* If no file and no uniform field is prescribed: error
156 ! ---------------------------------------------
157 !
158 IF (hvar=='DATE ' .OR. hvar=='ZS ') THEN
159  ounif = (hfiletype==' ')
160  IF (lhook) CALL dr_hook('READ_PREP_SEAFLUX_CONF',1,zhook_handle)
161  RETURN
162 END IF
163 !
164 IF (len_trim(hfiletype)==0 .AND. .NOT. ounif) THEN
165  CALL abor1_sfx('READ_PREP_SEAFLUX_CONF: AN INPUT VALUE IS REQUIRED FOR '//hvar)
166 END IF
167 !
168 !-------------------------------------------------------------------------------
169 !
170 !* If 1D coupling: ocean variables initializing
171 ! --------------------------------------------
172 !
173 IF (omercator) THEN
174  WRITE(kluout,*) 'LMERCATOR=T : initializing oceanic vertical grid'
175  CALL prep_ocean_mercatorvergrid(hprogram,ounif)
176 END IF
177 IF (lhook) CALL dr_hook('READ_PREP_SEAFLUX_CONF',1,zhook_handle)
178 !
179 !-------------------------------------------------------------------------------
180 !
181 END SUBROUTINE read_prep_seaflux_conf
character(len=6) cseaice_scheme
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:7
real, parameter xundef
integer, parameter jprb
Definition: parkind1.F90:32
subroutine read_prep_seaflux_conf(OMERCATOR, HPROGRAM, HVAR, HFILE,
character(len=6) ctypepgd
character(len=28), dimension(ngrid_level) cfile_seaflx
subroutine prep_ocean_mercatorvergrid(HPROGRAM, OUNIF)
logical lhook
Definition: yomhook.F90:15
character(len=6) ctype_seaflx
subroutine read_prep_surf_atm_conf(HPROGRAM, HFILE, HFILETYPE, HFILEP
character(len=28) cfilepgd_seaflx