/[MITgcm]/MITgcm/pkg/exf/exf_readparms.F
ViewVC logotype

Diff of /MITgcm/pkg/exf/exf_readparms.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.4.2.1 by cheisey, Fri Dec 27 15:09:45 2002 UTC revision 1.62 by dimitri, Wed May 12 01:08:14 2010 UTC
# Line 1  Line 1 
1  c $Header$  C $Header$
2    C $Name$
3    
4  #include "EXF_CPPOPTIONS.h"  #include "EXF_OPTIONS.h"
 #ifdef ALLOW_OBCS  
 # include "OBCS_OPTIONS.h"  
 #endif  
5    
6        subroutine exf_readparms( mythid )        SUBROUTINE EXF_READPARMS( myThid )
7    
8  c     ==================================================================  c     ==================================================================
9  c     SUBROUTINE exf_readparms  c     SUBROUTINE exf_readparms
# Line 14  c Line 12  c
12  c     o This routine initialises the package that calculates external  c     o This routine initialises the package that calculates external
13  c       forcing fields for a given timestep of the MITgcmUV. Parameters  c       forcing fields for a given timestep of the MITgcmUV. Parameters
14  c       for this package are set in "data.externalforcing". Some additional  c       for this package are set in "data.externalforcing". Some additional
15  c       precompiler switches have to be specified in "EXF_CPPOPTIONS.h".  c       precompiler switches have to be specified in "EXF_OPTIONS.h".
16  c  c
17  c     started: Christian Eckert eckert@mit.edu  30-Jun-1999  c     started: Christian Eckert eckert@mit.edu  30-Jun-1999
18  c  c
# Line 31  c              - moved relaxation and cl Line 29  c              - moved relaxation and cl
29  c              Patrick Heimbach, heimbach@mit.edu  04-May-2000  c              Patrick Heimbach, heimbach@mit.edu  04-May-2000
30  c              - added obcs parameters  c              - added obcs parameters
31  c     changed: Virginie Thierry, vthierry@ucsd.edu 04-June-2001  c     changed: Virginie Thierry, vthierry@ucsd.edu 04-June-2001
32  c              - added new obcs parameters (for each boundaries)  c              - added new obcs parameters (for each boundaries)
33  c     included runoff D. Stammer, Nov. 25, 2001  c     included runoff D. Stammer, Nov. 25, 2001
34  c     included pressure forcing. heimbach@mit.edu 05-Nov-2002  c     included pressure forcing. heimbach@mit.edu 05-Nov-2002
 c  
35  c     added "repeatPeriod" for cycling of forcing datasets 19-Dec-2002  c     added "repeatPeriod" for cycling of forcing datasets 19-Dec-2002
36    c     mods for pkg/seaice: menemenlis@jpl.nasa.gov 20-Dec-2002
37    c
38  c     ==================================================================  c     ==================================================================
39  c     SUBROUTINE exf_readparms  c     SUBROUTINE exf_readparms
40  c     ==================================================================  c     ==================================================================
# Line 46  c     == global variables == Line 45  c     == global variables ==
45    
46  #include "EEPARAMS.h"  #include "EEPARAMS.h"
47  #include "SIZE.h"  #include "SIZE.h"
48  #include "cal.h"  #include "PARAMS.h"
49  #include "exf.h"  c#include "cal.h"
50  #include "exf_param.h"  #include "EXF_PARAM.h"
51  #include "exf_constants.h"  #include "EXF_CONSTANTS.h"
52    
53  c     == routine arguments ==  c     == routine arguments ==
54    
55        integer mythid        integer myThid
56    
57  c     == local variables ==  c     == local variables ==
58    
59    #ifdef USE_EXF_INTERPOLATION
60        integer i        integer i
61    #endif
62          integer idummy
63          integer iUnit
64    
65  c     == external ==        character*(max_len_mbuf) msgbuf
   
       integer  ilnblnk  
       external ilnblnk  
66    
67  c     == end of interface ==  c     == end of interface ==
68    
69  c     Surface flux data.  c     Surface flux data.
70        namelist /exf_nml/        NAMELIST /EXF_NML_01/
71       &    repeatPeriod,       &      windstressmax,       repeatPeriod,    exf_albedo,
72         &   ocean_emissivity,     ice_emissivity, snow_emissivity,
73         &          exf_iceCd,          exf_iceCe,     exf_iceCh,
74         &   exf_scal_BulkCdn,     climtempfreeze,
75         &          exf_iprec,         exf_yftype,   exf_monFreq,
76         &     exf_iprec_obcs,
77         & useExfYearlyFields,  twoDigitYear,   useExfCheckRange,
78         & useStabilityFct_overIce, readStressOnAgrid, readStressOnCgrid,
79         & useRelativeWind, noNegativeEvap,
80         & select_ZenAlbedo, useExfZenIncoming,
81         & hu, ht, umin, atmrho, atmcp, cen2kel, gravity_mks,
82         & cdrag_1, cdrag_2, cdrag_3, cstanton_1, cstanton_2, cdalton,
83         & flamb, flami, zolmin, zref,
84         & cvapor_fac, cvapor_exp, cvapor_fac_ice, cvapor_exp_ice,
85         & humid_fac, gamma_blk, saltsat, sstExtrapol, psim_fac
86    
87          NAMELIST /EXF_NML_02/
88         &          hfluxfile,          atempfile,       aqhfile,
89         &          sfluxfile,         precipfile,    runofffile,
90         &        ustressfile,        vstressfile,      evapfile,
91         &     snowprecipfile,          uwindfile,     vwindfile,
92         &         wspeedfile,         swfluxfile,    lwfluxfile,
93         &      apressurefile,         swdownfile,    lwdownfile,
94         &       areamaskfile,        climsstfile,   climsssfile,
95         &                           climustrfile,  climvstrfile,
96       &    hfluxstartdate1,    hfluxstartdate2,   hfluxperiod,       &    hfluxstartdate1,    hfluxstartdate2,   hfluxperiod,
97       &    atempstartdate1,    atempstartdate2,   atempperiod,       &    atempstartdate1,    atempstartdate2,   atempperiod,
98       &      aqhstartdate1,      aqhstartdate2,     aqhperiod,       &      aqhstartdate1,      aqhstartdate2,     aqhperiod,
99       &    sfluxstartdate1,    sfluxstartdate2,   sfluxperiod,       &    sfluxstartdate1,    sfluxstartdate2,   sfluxperiod,
100         &     evapstartdate1,     evapstartdate2,    evapperiod,
101       &   precipstartdate1,   precipstartdate2,  precipperiod,       &   precipstartdate1,   precipstartdate2,  precipperiod,
102         & snowprecipstartdate1, snowprecipstartdate2, snowprecipperiod,
103       &   runoffstartdate1,   runoffstartdate2,  runoffperiod,       &   runoffstartdate1,   runoffstartdate2,  runoffperiod,
104       &  ustressstartdate1,  ustressstartdate2, ustressperiod,       &  ustressstartdate1,  ustressstartdate2, ustressperiod,
105       &  vstressstartdate1,  vstressstartdate2, vstressperiod,       &  vstressstartdate1,  vstressstartdate2, vstressperiod,
106       &    uwindstartdate1,    uwindstartdate2,   uwindperiod,       &    uwindstartdate1,    uwindstartdate2,   uwindperiod,
107       &    vwindstartdate1,    vwindstartdate2,   vwindperiod,       &    vwindstartdate1,    vwindstartdate2,   vwindperiod,
108         &   wspeedstartdate1,   wspeedstartdate2,  wspeedperiod,
109       &   swfluxstartdate1,   swfluxstartdate2,  swfluxperiod,       &   swfluxstartdate1,   swfluxstartdate2,  swfluxperiod,
110       &   lwfluxstartdate1,   lwfluxstartdate2,  lwfluxperiod,       &   lwfluxstartdate1,   lwfluxstartdate2,  lwfluxperiod,
111         &   swdownstartdate1,   swdownstartdate2,  swdownperiod,
112         &   lwdownstartdate1,   lwdownstartdate2,  lwdownperiod,
113         &apressurestartdate1,apressurestartdate2,apressureperiod,
114         &  areamaskstartdate1,areamaskstartdate2,areamaskperiod,
115         &  climsststartdate1,  climsststartdate2, climsstperiod,
116         &  climsssstartdate1,  climsssstartdate2, climsssperiod,
117         & climustrstartdate1, climustrstartdate2,climustrperiod,
118         & climvstrstartdate1, climvstrstartdate2,climvstrperiod,
119         &   areamaskTauRelax,    climsstTauRelax, climsssTauRelax,
120         &   climustrTauRelax,climvstrTauRelax
121    
122          NAMELIST /EXF_NML_03/
123         &   exf_inscal_hflux,  exf_inscal_sflux,      exf_inscal_evap,
124         & exf_inscal_ustress,  exf_inscal_vstress,
125         &   exf_inscal_uwind,  exf_inscal_vwind,    exf_inscal_wspeed,
126         &   exf_inscal_atemp,  exf_offset_atemp,       exf_inscal_aqh,
127         &     exf_inscal_sst,  exf_inscal_sss,
128         &  exf_inscal_swflux,  exf_inscal_lwflux,   exf_inscal_precip,
129         &  exf_inscal_runoff,  exf_inscal_apressure, exf_inscal_snowprecip,
130         &  exf_inscal_swdown,  exf_inscal_lwdown,
131         & exf_inscal_climsst, exf_inscal_climsss,
132         & exf_inscal_climustr, exf_inscal_climvstr,
133         &  exf_outscal_hflux,  exf_outscal_ustress, exf_outscal_vstress,
134         & exf_outscal_swflux,  exf_outscal_sst,     exf_outscal_sss,
135         &  exf_outscal_sflux,  exf_outscal_apressure,
136         &  hfluxconst, atempconst, aqhconst, sfluxconst, evapconst,
137         &  precipconst, snowprecipconst, runoffconst, ustressconst,
138         &  vstressconst, uwindconst, vwindconst, wspeedconst, swfluxconst,
139         &  lwfluxconst, swdownconst, lwdownconst, apressureconst,
140         &  areamaskconst, climsstconst,   climsssconst,
141         &  climustrconst, climvstrconst,
142         &     hflux_exfremo_intercept, hflux_exfremo_slope,
143         &     atemp_exfremo_intercept, atemp_exfremo_slope,
144         &     aqh_exfremo_intercept, aqh_exfremo_slope,
145         &     sflux_exfremo_intercept, sflux_exfremo_slope,
146         &     evap_exfremo_intercept, evap_exfremo_slope,
147         &     precip_exfremo_intercept, precip_exfremo_slope,
148         &     snowprecip_exfremo_intercept, snowprecip_exfremo_slope,
149         &     runoff_exfremo_intercept, runoff_exfremo_slope,
150         &     ustress_exfremo_intercept, ustress_exfremo_slope,
151         &     vstress_exfremo_intercept, vstress_exfremo_slope,
152         &     uwind_exfremo_intercept, uwind_exfremo_slope,
153         &     vwind_exfremo_intercept, vwind_exfremo_slope,
154         &     wspeed_exfremo_intercept, wspeed_exfremo_slope,
155         &     swflux_exfremo_intercept, swflux_exfremo_slope,
156         &     lwflux_exfremo_intercept, lwflux_exfremo_slope,
157         &     swdown_exfremo_intercept, swdown_exfremo_slope,
158         &     lwdown_exfremo_intercept, lwdown_exfremo_slope,
159         &     apressure_exfremo_intercept, apressure_exfremo_slope,
160         &     areamask_exfremo_intercept, areamask_exfremo_slope,
161         &     climsst_exfremo_intercept, climsst_exfremo_slope,
162         &     climsss_exfremo_intercept, climsss_exfremo_slope,
163         &     climustr_exfremo_intercept, climustr_exfremo_slope,
164         &     climvstr_exfremo_intercept, climvstr_exfremo_slope
165    
166          NAMELIST /EXF_NML_04/
167         & idummy
168    #ifdef USE_EXF_INTERPOLATION
169         & , ustress_lon0, ustress_lon_inc, ustress_lat0, ustress_lat_inc,
170         & vstress_lon0, vstress_lon_inc, vstress_lat0, vstress_lat_inc,
171         & ustress_nlon, ustress_nlat, vstress_nlon, vstress_nlat,
172         & hflux_lon0, hflux_lon_inc, hflux_lat0, hflux_lat_inc,
173         & sflux_lon0, sflux_lon_inc, sflux_lat0, sflux_lat_inc,
174         & hflux_nlon, hflux_nlat, sflux_nlon, sflux_nlat,
175         & swflux_lon0, swflux_lon_inc, swflux_lat0, swflux_lat_inc,
176         & lwflux_lon0, lwflux_lon_inc, lwflux_lat0, lwflux_lat_inc,
177         & swflux_nlon, swflux_nlat, lwflux_nlon, lwflux_nlat,
178         & atemp_lon0, atemp_lon_inc, atemp_lat0, atemp_lat_inc,
179         & atemp_nlon, atemp_nlat,
180         & aqh_lon0, aqh_lon_inc, aqh_lat0, aqh_lat_inc, aqh_nlon, aqh_nlat,
181         &evap_lon0,evap_lon_inc,evap_lat0,evap_lat_inc,evap_nlon,evap_nlat,
182         & precip_lon0, precip_lon_inc, precip_lat0, precip_lat_inc,
183         & runoff_lon0, runoff_lon_inc, runoff_lat0, runoff_lat_inc,
184         & precip_nlon, precip_nlat, runoff_nlon, runoff_nlat,
185         & snowprecip_lon0, snowprecip_lon_inc, snowprecip_nlon,
186         & snowprecip_lat0, snowprecip_lat_inc, snowprecip_nlat,
187         & uwind_lon0, uwind_lon_inc, uwind_lat0, uwind_lat_inc,
188         & vwind_lon0, vwind_lon_inc, vwind_lat0, vwind_lat_inc,
189         & uwind_nlon, uwind_nlat, vwind_nlon, vwind_nlat,
190         & wspeed_lon0, wspeed_lon_inc, wspeed_lat0, wspeed_lat_inc,
191         & wspeed_nlon, wspeed_nlat,
192         & swdown_lon0, swdown_lon_inc, swdown_lat0, swdown_lat_inc,
193         & lwdown_lon0, lwdown_lon_inc, lwdown_lat0, lwdown_lat_inc,
194         & swdown_nlon, swdown_nlat, lwdown_nlon, lwdown_nlat,
195         & apressure_lon0,apressure_lon_inc,apressure_nlon,
196         & apressure_lat0,apressure_lat_inc,apressure_nlat,
197         & areamask_lon0,areamask_lon_inc,areamask_nlon,
198         & areamask_lat0,areamask_lat_inc,areamask_nlat,
199         & climsst_lon0, climsst_lon_inc, climsst_nlon,
200         & climsst_lat0, climsst_lat_inc, climsst_nlat,
201         & climsss_lon0, climsss_lon_inc, climsss_nlon,
202         & climsss_lat0, climsss_lat_inc, climsss_nlat,
203         & climustr_lon0, climustr_lon_inc, climustr_nlon,
204         & climustr_lat0, climustr_lat_inc, climustr_nlat,
205         & climvstr_lon0, climvstr_lon_inc, climvstr_nlon,
206         & climvstr_lat0, climvstr_lat_inc, climvstr_nlat
207    #endif
208    
209          NAMELIST /EXF_NML_SGRUNOFF/
210         &    sgrunoffstartdate1, sgrunoffstartdate2,
211         &    sgrunoffstartdate,  sgrunoffperiod,
212         &    sgrunoffconst,      sgrunoff_exfremo_intercept,
213         &    sgrunoff_exfremo_slope, exf_inscal_sgrunoff
214    
215          NAMELIST /EXF_NML_OBCS/
216       &    obcsNstartdate1,    obcsNstartdate2,   obcsNperiod,       &    obcsNstartdate1,    obcsNstartdate2,   obcsNperiod,
217       &    obcsSstartdate1,    obcsSstartdate2,   obcsSperiod,       &    obcsSstartdate1,    obcsSstartdate2,   obcsSperiod,
218       &    obcsEstartdate1,    obcsEstartdate2,   obcsEperiod,       &    obcsEstartdate1,    obcsEstartdate2,   obcsEperiod,
219       &    obcsWstartdate1,    obcsWstartdate2,   obcsWperiod,       &    obcsWstartdate1,    obcsWstartdate2,   obcsWperiod,
220       &apressurestartdate1,apressurestartdate2,apressureperiod,       &    siobNstartdate1,    siobNstartdate2,   siobNperiod,
221       &          hfluxfile,          atempfile,       aqhfile,       &    siobSstartdate1,    siobSstartdate2,   siobSperiod,
222       &          sfluxfile,         precipfile,    runofffile,       &    siobEstartdate1,    siobEstartdate2,   siobEperiod,
223       &        ustressfile,        vstressfile,       &    siobWstartdate1,    siobWstartdate2,   siobWperiod
224       &          uwindfile,          vwindfile,  
      &         swfluxfile,         lwfluxfile, apressurefile,  
      &          exf_iprec,         exf_yftype,  
      &           scal_hfl,           scal_ust,       scal_vst,  
      &           scal_swf,           scal_sst,       scal_sss,  
      &     scal_apressure,           scal_prc,       scal_sfl,  
      &    windspeedstartdate1,    windspeedstartdate2,    
      &    windspeedperiod, windspeedfile  
225        _BEGIN_MASTER(mythid)        _BEGIN_MASTER(mythid)
226    
227  c     Set default values.  c     Set default values.
228    
229          year2sec           = 365.*86400.
230          exf_monFreq        = monitorFreq
231          useExfCheckRange   = .TRUE.
232          useExfZenAlbedo    = .FALSE.
233          select_ZenAlbedo   = 0
234          useExfZenIncoming  = .FALSE.
235          readStressOnAgrid  = .FALSE.
236          readStressOnCgrid  = .FALSE.
237          useRelativeWind    = .FALSE.
238          noNegativeEvap     = .FALSE.
239    
240    C-  default value should be set to main model parameter:
241    c     cen2kel     =  celsius2K
242    c     gravity_mks = gravity
243    c     atmcp       =  atm_Cp
244    c     humid_fac   =  atm_Rq     <- default is zero !!!
245    
246          cen2kel        =      273.150  _d 0
247          gravity_mks    =        9.81   _d 0
248          atmrho         =        1.200  _d 0
249          atmcp          =     1005.000  _d 0
250          flamb          =  2500000.000  _d 0
251          flami          =   334000.000  _d 0
252          cvapor_fac     =   640380.000  _d 0
253          cvapor_exp     =     5107.400  _d 0
254          cvapor_fac_ice = 11637800.000  _d 0
255          cvapor_exp_ice =     5897.800  _d 0
256          humid_fac      =        0.606  _d 0
257          gamma_blk      =        0.010  _d 0
258          saltsat        =        0.980  _d 0
259          sstExtrapol    =        0.0    _d 0
260          cdrag_1        =        0.0027000 _d 0
261          cdrag_2        =        0.0001420 _d 0
262          cdrag_3        =        0.0000764 _d 0
263          cstanton_1     =        0.0327 _d 0
264          cstanton_2     =        0.0180 _d 0
265          cdalton        =        0.0346 _d 0
266          zolmin         =     -100.000  _d 0
267          psim_fac       =        5.000  _d 0
268          zref           =       10.000  _d 0
269          hu             =       10.000  _d 0
270          ht             =        2.000  _d 0
271          umin           =        0.5    _d 0
272          useStabilityFct_overIce = .FALSE.
273          exf_iceCd        = 1.63 _d -3
274          exf_iceCe        = 1.63 _d -3
275          exf_iceCh        = 1.63 _d -3
276          exf_albedo       = 0.1 _d 0
277    c--   this default is chosen to be backward compatible with
278    c--   an earlier setting of 5.5 = ocean_emissivity*stefanBoltzmann
279          ocean_emissivity = 5.50 _d-8 / 5.670 _d-8
280          ice_emissivity   = 0.95 _d 0
281          snow_emissivity  = 0.95 _d 0
282    
283  c     Calendar data.  c     Calendar data.
284        hfluxstartdate1    = 0        hfluxstartdate1    = 0
285        hfluxstartdate2    = 0        hfluxstartdate2    = 0
286        hfluxperiod        = 0.0 _d 0        hfluxperiod        = 0.0 _d 0
287          hfluxconst         = 0.0 _d 0
288          hflux_exfremo_intercept = 0.0 _d 0
289          hflux_exfremo_slope = 0.0 _d 0
290    
291        atempstartdate1    = 0        atempstartdate1    = 0
292        atempstartdate2    = 0        atempstartdate2    = 0
293        atempperiod        = 0.0 _d 0        atempperiod        = 0.0 _d 0
294          atempconst         = celsius2K
295          atemp_exfremo_intercept = 0.0 _d 0
296          atemp_exfremo_slope = 0.0 _d 0
297    
298        aqhstartdate1      = 0        aqhstartdate1      = 0
299        aqhstartdate2      = 0        aqhstartdate2      = 0
300        aqhperiod          = 0.0 _d 0        aqhperiod          = 0.0 _d 0
301          aqhconst           = 0.0 _d 0
302          aqh_exfremo_intercept = 0.0 _d 0
303          aqh_exfremo_slope = 0.0 _d 0
304    
305        sfluxstartdate1    = 0        sfluxstartdate1    = 0
306        sfluxstartdate2    = 0        sfluxstartdate2    = 0
307        sfluxperiod        = 0.0 _d 0        sfluxperiod        = 0.0 _d 0
308          sfluxconst         = 0.0 _d 0
309          sflux_exfremo_intercept = 0.0 _d 0
310          sflux_exfremo_slope = 0.0 _d 0
311    
312          evapstartdate1   = 0
313          evapstartdate2   = 0
314          evapperiod       = 0.0 _d 0
315          evapconst        = 0.0 _d 0
316          evap_exfremo_intercept = 0.0 _d 0
317          evap_exfremo_slope = 0.0 _d 0
318    
319        precipstartdate1   = 0        precipstartdate1   = 0
320        precipstartdate2   = 0        precipstartdate2   = 0
321        precipperiod       = 0.0 _d 0        precipperiod       = 0.0 _d 0
322          precipconst        = 0.0 _d 0
323          precip_exfremo_intercept = 0.0 _d 0
324          precip_exfremo_slope = 0.0 _d 0
325    
326          snowprecipstartdate1   = 0
327          snowprecipstartdate2   = 0
328          snowprecipperiod       = 0.0 _d 0
329          snowprecipconst        = 0.0 _d 0
330          snowprecip_exfremo_intercept = 0.0 _d 0
331          snowprecip_exfremo_slope = 0.0 _d 0
332    
333        runoffstartdate1   = 0        runoffstartdate1   = 0
334        runoffstartdate2   = 0        runoffstartdate2   = 0
335        runoffperiod       = 0.0 _d 0        runoffperiod       = 0.0 _d 0
336          runoffconst        = 0.0 _d 0
337          runoff_exfremo_intercept = 0.0 _d 0
338          runoff_exfremo_slope = 0.0 _d 0
339    
340        ustressstartdate1  = 0        ustressstartdate1  = 0
341        ustressstartdate2  = 0        ustressstartdate2  = 0
342        ustressperiod      = 0.0 _d 0        ustressperiod      = 0.0 _d 0
343          ustressconst       = 0.0 _d 0
344          ustress_exfremo_intercept = 0.0 _d 0
345          ustress_exfremo_slope = 0.0 _d 0
346    
347        vstressstartdate1  = 0        vstressstartdate1  = 0
348        vstressstartdate2  = 0        vstressstartdate2  = 0
349        vstressperiod      = 0.0 _d 0        vstressperiod      = 0.0 _d 0
350          vstressconst       = 0.0 _d 0
351          vstress_exfremo_intercept = 0.0 _d 0
352          vstress_exfremo_slope = 0.0 _d 0
353    
354        uwindstartdate1    = 0        uwindstartdate1    = 0
355        uwindstartdate2    = 0        uwindstartdate2    = 0
356        uwindperiod        = 0.0 _d 0        uwindperiod        = 0.0 _d 0
357          uwindconst         = 0.0 _d 0
358          uwind_exfremo_intercept = 0.0 _d 0
359          uwind_exfremo_slope = 0.0 _d 0
360    
361        vwindstartdate1    = 0        vwindstartdate1    = 0
362        vwindstartdate2    = 0        vwindstartdate2    = 0
363        vwindperiod        = 0.0 _d 0        vwindperiod        = 0.0 _d 0
364          vwindconst         = 0.0 _d 0
365          vwind_exfremo_intercept = 0.0 _d 0
366          vwind_exfremo_slope = 0.0 _d 0
367    
368          wspeedstartdate1    = 0
369          wspeedstartdate2    = 0
370          wspeedperiod        = 0.0 _d 0
371          wspeedconst         = 0.0 _d 0
372          wspeed_exfremo_intercept = 0.0 _d 0
373          wspeed_exfremo_slope = 0.0 _d 0
374    
375        swfluxstartdate1   = 0        swfluxstartdate1   = 0
376        swfluxstartdate2   = 0        swfluxstartdate2   = 0
377        swfluxperiod       = 0.0 _d 0        swfluxperiod       = 0.0 _d 0
378          swfluxconst        = 0.0 _d 0
379          swflux_exfremo_intercept = 0.0 _d 0
380          swflux_exfremo_slope = 0.0 _d 0
381    
382        lwfluxstartdate1   = 0        lwfluxstartdate1   = 0
383        lwfluxstartdate2   = 0        lwfluxstartdate2   = 0
384        lwfluxperiod       = 0.0 _d 0        lwfluxperiod       = 0.0 _d 0
385          lwfluxconst        = 0.0 _d 0
386          lwflux_exfremo_intercept = 0.0 _d 0
387          lwflux_exfremo_slope = 0.0 _d 0
388    
389          swdownstartdate1   = 0
390          swdownstartdate2   = 0
391          swdownperiod       = 0.0 _d 0
392          swdownconst        = 0.0 _d 0
393          swdown_exfremo_intercept = 0.0 _d 0
394          swdown_exfremo_slope = 0.0 _d 0
395    
396          lwdownstartdate1   = 0
397          lwdownstartdate2   = 0
398          lwdownperiod       = 0.0 _d 0
399          lwdownconst        = 0.0 _d 0
400          lwdown_exfremo_intercept = 0.0 _d 0
401          lwdown_exfremo_slope = 0.0 _d 0
402    
403          apressurestartdate1    = 0
404          apressurestartdate2    = 0
405          apressureperiod        = 0.0 _d 0
406          apressureconst         = 0.0 _d 0
407          apressure_exfremo_intercept = 0.0 _d 0
408          apressure_exfremo_slope = 0.0 _d 0
409    
410          areamaskstartdate1    = 0
411          areamaskstartdate2    = 0
412          areamaskperiod        = 0.0 _d 0
413          areamaskTauRelax      = 0.0 _d 0
414          areamaskconst         = 0.0 _d 0
415          areamask_exfremo_intercept = 0. _d 0
416          areamask_exfremo_slope = 0. _d 0
417    
418          climsststartdate1  = 0
419          climsststartdate2  = 0
420          climsstperiod      = 0
421          climsstTauRelax    = 0.0 _d 0
422          climsstconst         = 0.0 _d 0
423          climsst_exfremo_intercept = 0.0 _d 0
424          climsst_exfremo_slope = 0.0 _d 0
425    
426          climsssstartdate1  = 0
427          climsssstartdate2  = 0
428          climsssperiod      = 0
429          climsssTauRelax    = 0.0 _d 0
430          climsssconst         = 0.0 _d 0
431          climsss_exfremo_intercept = 0.0 _d 0
432          climsss_exfremo_slope = 0.0 _d 0
433    
434          climustrstartdate1  = 0
435          climustrstartdate2  = 0
436          climustrperiod      = 0
437          climustrTauRelax    = 0.0 _d 0
438          climustrconst         = 0.0 _d 0
439          climustr_exfremo_intercept = 0.0 _d 0
440          climustr_exfremo_slope = 0.0 _d 0
441    
442          climvstrstartdate1  = 0
443          climvstrstartdate2  = 0
444          climvstrperiod      = 0
445          climvstrTauRelax    = 0.0 _d 0
446          climvstrconst         = 0.0 _d 0
447          climvstr_exfremo_intercept = 0.0 _d 0
448          climvstr_exfremo_slope = 0.0 _d 0
449    
450          sgrunoffstartdate1         = 0
451          sgrunoffstartdate2         = 0
452          sgrunoffstartdate          = 0.
453          sgrunoffperiod             = 0.0 _d 0
454          sgrunoffconst              = 0.0 _d 0
455          sgrunoff_exfremo_intercept = 0.0 _d 0
456          sgrunoff_exfremo_slope     = 0.0 _d 0
457          exf_inscal_sgrunoff        = 1. _d 0
458    
459        obcsNstartdate1    = 0        obcsNstartdate1    = 0
460        obcsNstartdate2    = 0        obcsNstartdate2    = 0
461        obcsNperiod        = 0.0 _d 0        obcsNperiod        = 0.0 _d 0
   
462        obcsSstartdate1    = 0        obcsSstartdate1    = 0
463        obcsSstartdate2    = 0        obcsSstartdate2    = 0
464        obcsSperiod        = 0.0 _d 0        obcsSperiod        = 0.0 _d 0
   
465        obcsEstartdate1    = 0        obcsEstartdate1    = 0
466        obcsEstartdate2    = 0        obcsEstartdate2    = 0
467        obcsEperiod        = 0.0 _d 0        obcsEperiod        = 0.0 _d 0
   
468        obcsWstartdate1    = 0        obcsWstartdate1    = 0
469        obcsWstartdate2    = 0        obcsWstartdate2    = 0
470        obcsWperiod        = 0.0 _d 0        obcsWperiod        = 0.0 _d 0
471    
472        apressurestartdate1    = 0        siobNstartdate1    = UNSET_I
473        apressurestartdate2    = 0        siobNstartdate2    = UNSET_I
474        apressureperiod        = 0.0 _d 0        siobNperiod        = UNSET_RL
475          siobSstartdate1    = UNSET_I
476        windspeedstartdate1    = 0        siobSstartdate2    = UNSET_I
477        windspeedstartdate2    = 0        siobSperiod        = UNSET_RL
478        windspeedperiod        = 0.0 _d 0        siobEstartdate1    = UNSET_I
479          siobEstartdate2    = UNSET_I
480          siobEperiod        = UNSET_RL
481          siobWstartdate1    = UNSET_I
482          siobWstartdate2    = UNSET_I
483          siobWperiod        = UNSET_RL
484    
485          repeatPeriod       = 0.0 _d 0
486          windstressmax      = 2.0 _d 0
487    
488        repeatPeriod           = 0.0 _d 0        exf_scal_BulkCdn   = 1.0  _d 0
489    
490    c     Initialise freezing temperature of sea water
491          climtempfreeze     = -1.9 _d 0
492    
493  c     Data files.  c     Data files.
494        hfluxfile          = ' '        hfluxfile          = ' '
495        atempfile          = ' '        atempfile          = ' '
496        aqhfile            = ' '        aqhfile            = ' '
497          evapfile           = ' '
498        precipfile         = ' '        precipfile         = ' '
499          snowprecipfile     = ' '
500        sfluxfile          = ' '        sfluxfile          = ' '
501        runofffile         = ' '        runofffile         = ' '
502        ustressfile        = ' '        ustressfile        = ' '
503        vstressfile        = ' '        vstressfile        = ' '
504        uwindfile          = ' '        uwindfile          = ' '
505        vwindfile          = ' '        vwindfile          = ' '
506          wspeedfile         = ' '
507        swfluxfile         = ' '        swfluxfile         = ' '
508        lwfluxfile         = ' '        lwfluxfile         = ' '
509          swdownfile         = ' '
510          lwdownfile         = ' '
511        apressurefile      = ' '        apressurefile      = ' '
512        windspeedfile      = ' '        areamaskfile       = ' '
513          climsstfile        = ' '
514  c     Initialise the date arrays.        climsssfile        = ' '
515        do i = 1,4        climustrfile       = ' '
516           hfluxstartdate(i)    = 0        climvstrfile       = ' '
517           atempstartdate(i)    = 0  
518           aqhstartdate(i)      = 0  c     Start dates.
519           precipstartdate(i)   = 0        hfluxstartdate     = 0.
520           sfluxstartdate(i)    = 0        atempstartdate     = 0.
521           runoffstartdate(i)   = 0        aqhstartdate       = 0.
522           ustressstartdate(i)  = 0        evapstartdate      = 0.
523           vstressstartdate(i)  = 0        precipstartdate    = 0.
524           uwindstartdate(i)    = 0        snowprecipstartdate= 0.
525           vwindstartdate(i)    = 0        sfluxstartdate     = 0.
526           swfluxstartdate(i)   = 0        runoffstartdate    = 0.
527           lwfluxstartdate(i)   = 0        ustressstartdate   = 0.
528           obcsNstartdate(i)    = 0        vstressstartdate   = 0.
529           obcsSstartdate(i)    = 0        uwindstartdate     = 0.
530           obcsEstartdate(i)    = 0        vwindstartdate     = 0.
531           obcsWstartdate(i)    = 0        wspeedstartdate    = 0.
532           apressurestartdate(i)= 0        swfluxstartdate    = 0.
533           windspeedstartdate(i)= 0        lwfluxstartdate    = 0.
534        enddo        swdownstartdate    = 0.
535          lwdownstartdate    = 0.
536          obcsNstartdate     = 0.
537          obcsSstartdate     = 0.
538          obcsEstartdate     = 0.
539          obcsWstartdate     = 0.
540          siobNstartdate     = 0.
541          siobSstartdate     = 0.
542          siobEstartdate     = 0.
543          siobWstartdate     = 0.
544          apressurestartdate = 0.
545          areamaskstartdate  = 0.
546          climsststartdate   = 0.
547          climsssstartdate   = 0.
548          climustrstartdate  = 0.
549          climvstrstartdate  = 0.
550    
551  c     Initialise file type and field precision  c     Initialise file type and field precision
552        exf_iprec       = 32        exf_iprec            = 32
553        exf_yftype      = 'RL'        exf_iprec_obcs       = UNSET_I
554          exf_yftype           = 'RL'
555  c     scaling between exf units and MITgcm units        useExfYearlyFields   = .FALSE.
556        scal_hfl       =  1. _d 0        twoDigitYear         = .FALSE.
557        scal_ust       =  1. _d 0  
558        scal_vst       =  1. _d 0  c     Input scaling factors.
559        scal_swf       =  1. _d 0        exf_inscal_hflux     =  1. _d 0
560        scal_sst       =  1. _d 0        exf_inscal_sflux     =  1. _d 0
561        scal_sss       =  1. _d 0        exf_inscal_ustress   =  1. _d 0
562        scal_apressure =  1. _d 0        exf_inscal_vstress   =  1. _d 0
563  #if (defined (ALLOW_BULKFORMULAE) && defined (ALLOW_ATM_TEMP))        exf_inscal_uwind     =  1. _d 0
564        scal_prc       =  1. _d 0        exf_inscal_vwind     =  1. _d 0
565  #else        exf_inscal_wspeed    =  1. _d 0
566        scal_sfl       =  1. _d 0            exf_inscal_swflux    =  1. _d 0
567  #endif        exf_inscal_lwflux    =  1. _d 0
568          exf_inscal_precip    =  1. _d 0
569  c     Check for the availability of the right calendar version.        exf_inscal_snowprecip=  1. _d 0
570        if ( calendarversion .ne. usescalendarversion ) then        exf_inscal_sst       =  1. _d 0
571           print*,' exf_readparms: You are not using the appropriate'        exf_inscal_sss       =  1. _d 0
572           print*,'           version of the calendar package.'        exf_inscal_atemp     =  1. _d 0
573           print*        exf_offset_atemp     =  0. _d 0
574           print*,' You are using Calendar version: ', calendarversion        exf_inscal_aqh       =  1. _d 0
575           print*,' Please use    Calendar version: ', usescalendarversion        exf_inscal_evap      =  1. _d 0
576           stop ' stopped in exf_readparms.'        exf_inscal_apressure =  1. _d 0
577        endif        exf_inscal_runoff    =  1. _d 0
578          exf_inscal_swdown    =  1. _d 0
579          exf_inscal_lwdown    =  1. _d 0
580          exf_inscal_climsst   =  1. _d 0
581          exf_inscal_climsss   =  1. _d 0
582          exf_inscal_climustr  =  1. _d 0
583          exf_inscal_climvstr  =  1. _d 0
584    
585    c     Output scaling factors.
586          exf_outscal_hflux    =  1. _d 0
587          exf_outscal_sflux    =  1. _d 0
588          exf_outscal_ustress  =  1. _d 0
589          exf_outscal_vstress  =  1. _d 0
590          exf_outscal_swflux   =  1. _d 0
591          exf_outscal_sst      =  1. _d 0
592          exf_outscal_sss      =  1. _d 0
593          exf_outscal_apressure=  1. _d 0
594    
595    #ifdef USE_EXF_INTERPOLATION
596          ustress_lon0   = xgOrigin
597          uwind_lon0     = xgOrigin
598          vstress_lon0   = xgOrigin + delX(1)*exf_half
599          hflux_lon0     = xgOrigin + delX(1)*exf_half
600          sflux_lon0     = xgOrigin + delX(1)*exf_half
601          swflux_lon0    = xgOrigin + delX(1)*exf_half
602          runoff_lon0    = xgOrigin + delX(1)*exf_half
603          atemp_lon0     = xgOrigin + delX(1)*exf_half
604          aqh_lon0       = xgOrigin + delX(1)*exf_half
605          evap_lon0      = xgOrigin + delX(1)*exf_half
606          precip_lon0    = xgOrigin + delX(1)*exf_half
607          snowprecip_lon0= xgOrigin + delX(1)*exf_half
608          vwind_lon0     = xgOrigin + delX(1)*exf_half
609          wspeed_lon0    = xgOrigin + delX(1)*exf_half
610          lwflux_lon0    = xgOrigin + delX(1)*exf_half
611          swdown_lon0    = xgOrigin + delX(1)*exf_half
612          lwdown_lon0    = xgOrigin + delX(1)*exf_half
613          apressure_lon0 = xgOrigin + delX(1)*exf_half
614          areamask_lon0  = xgOrigin + delX(1)*exf_half
615          vstress_lat0   = ygOrigin
616          vwind_lat0     = ygOrigin
617          wspeed_lat0    = ygOrigin
618          ustress_lat0   = ygOrigin + delY(1)*exf_half
619          hflux_lat0     = ygOrigin + delY(1)*exf_half
620          sflux_lat0     = ygOrigin + delY(1)*exf_half
621          runoff_lat0    = ygOrigin + delY(1)*exf_half
622          swflux_lat0    = ygOrigin + delY(1)*exf_half
623          atemp_lat0     = ygOrigin + delY(1)*exf_half
624          aqh_lat0       = ygOrigin + delY(1)*exf_half
625          evap_lat0      = ygOrigin + delY(1)*exf_half
626          precip_lat0    = ygOrigin + delY(1)*exf_half
627          snowprecip_lat0= ygOrigin + delY(1)*exf_half
628          uwind_lat0     = ygOrigin + delY(1)*exf_half
629          lwflux_lat0    = ygOrigin + delY(1)*exf_half
630          swdown_lat0    = ygOrigin + delY(1)*exf_half
631          lwdown_lat0    = ygOrigin + delY(1)*exf_half
632          apressure_lat0 = ygOrigin + delY(1)*exf_half
633          areamask_lat0  = ygOrigin + delY(1)*exf_half
634          ustress_nlon   = Nx
635          ustress_nlat   = Ny
636          vstress_nlon   = Nx
637          vstress_nlat   = Ny
638          hflux_nlon     = Nx
639          hflux_nlat     = Ny
640          sflux_nlon     = Nx
641          sflux_nlat     = Ny
642          swflux_nlon    = Nx
643          swflux_nlat    = Ny
644          runoff_nlon    = Nx
645          runoff_nlat    = Ny
646          atemp_nlon     = Nx
647          atemp_nlat     = Ny
648          aqh_nlon       = Nx
649          aqh_nlat       = Ny
650          evap_nlon      = Nx
651          evap_nlat      = Ny
652          precip_nlon    = Nx
653          snowprecip_nlon= Nx
654          precip_nlat    = Ny
655          snowprecip_nlat= Ny
656          uwind_nlon     = Nx
657          uwind_nlat     = Ny
658          vwind_nlon     = Nx
659          vwind_nlat     = Ny
660          wspeed_nlon    = Nx
661          wspeed_nlat    = Ny
662          lwflux_nlon    = Nx
663          lwflux_nlat    = Ny
664          swdown_nlon    = Nx
665          swdown_nlat    = Ny
666          lwdown_nlon    = Nx
667          lwdown_nlat    = Ny
668          apressure_nlon = Nx
669          apressure_nlat = Ny
670          areamask_nlon  = Nx
671          areamask_nlat  = Ny
672          ustress_lon_inc   = delX(1)
673          vstress_lon_inc   = delX(1)
674          hflux_lon_inc     = delX(1)
675          sflux_lon_inc     = delX(1)
676          swflux_lon_inc    = delX(1)
677          runoff_lon_inc    = delX(1)
678          atemp_lon_inc     = delX(1)
679          aqh_lon_inc       = delX(1)
680          evap_lon_inc      = delX(1)
681          precip_lon_inc    = delX(1)
682          snowprecip_lon_inc= delX(1)
683          uwind_lon_inc     = delX(1)
684          vwind_lon_inc     = delX(1)
685          wspeed_lon_inc    = delX(1)
686          lwflux_lon_inc    = delX(1)
687          swdown_lon_inc    = delX(1)
688          lwdown_lon_inc    = delX(1)
689          apressure_lon_inc = delX(1)
690          areamask_lon_inc  = delX(1)
691          climsst_lon0    = xgOrigin + delX(1)*exf_half
692          climsss_lon0    = xgOrigin + delX(1)*exf_half
693          climsst_lat0    = ygOrigin + delY(1)*exf_half
694          climsss_lat0    = ygOrigin + delY(1)*exf_half
695          climsst_nlon    = Nx
696          climsst_nlat    = Ny
697          climsss_nlon    = Nx
698          climsss_nlat    = Ny
699          climsst_lon_inc = delX(1)
700          climsss_lon_inc = delX(1)
701          climustr_lon0   = xgOrigin
702          climvstr_lon0   = xgOrigin + delX(1)*exf_half
703          climustr_lat0   = ygOrigin + delY(1)*exf_half
704          climvstr_lat0   = ygOrigin
705          climustr_nlon   = Nx
706          climustr_nlat   = Ny
707          climvstr_nlon   = Nx
708          climvstr_nlat   = Ny
709          climustr_lon_inc   = delX(1)
710          climvstr_lon_inc   = delX(1)
711    
712          DO i=1,MAX_LAT_INC
713             IF (i.LT.Ny) THEN
714                vstress_lat_inc(i)   =  delY(i)
715                vwind_lat_inc(i)     =  delY(i)
716                wspeed_lat_inc(i)    =  delY(i)
717                ustress_lat_inc(i)   = (delY(i) + delY(i))*exf_half
718                hflux_lat_inc(i)     = (delY(i) + delY(i))*exf_half
719                sflux_lat_inc(i)     = (delY(i) + delY(i))*exf_half
720                swflux_lat_inc(i)    = (delY(i) + delY(i))*exf_half
721                runoff_lat_inc(i)    = (delY(i) + delY(i))*exf_half
722                atemp_lat_inc(i)     = (delY(i) + delY(i))*exf_half
723                aqh_lat_inc(i)       = (delY(i) + delY(i))*exf_half
724                evap_lat_inc(i)      = (delY(i) + delY(i))*exf_half
725                precip_lat_inc(i)    = (delY(i) + delY(i))*exf_half
726                snowprecip_lat_inc(i)= (delY(i) + delY(i))*exf_half
727                uwind_lat_inc(i)     = (delY(i) + delY(i))*exf_half
728                lwflux_lat_inc(i)    = (delY(i) + delY(i))*exf_half
729                swdown_lat_inc(i)    = (delY(i) + delY(i))*exf_half
730                lwdown_lat_inc(i)    = (delY(i) + delY(i))*exf_half
731                apressure_lat_inc(i) = (delY(i) + delY(i))*exf_half
732                areamask_lat_inc(i)  = (delY(i) + delY(i))*exf_half
733                climsst_lat_inc(i)   = (delY(i) + delY(i))*exf_half
734                climsss_lat_inc(i)   = (delY(i) + delY(i))*exf_half
735                climustr_lat_inc(i)  = (delY(i) + delY(i))*exf_half
736                climvstr_lat_inc(i)  =  delY(i)
737             ELSE
738                ustress_lat_inc(i)   = 0.
739                vstress_lat_inc(i)   = 0.
740                hflux_lat_inc(i)     = 0.
741                sflux_lat_inc(i)     = 0.
742                swflux_lat_inc(i)    = 0.
743                runoff_lat_inc(i)    = 0.
744                atemp_lat_inc(i)     = 0.
745                aqh_lat_inc(i)       = 0.
746                evap_lat_inc(i)      = 0.
747                precip_lat_inc(i)    = 0.
748                snowprecip_lat_inc(i)= 0.
749                uwind_lat_inc(i)     = 0.
750                vwind_lat_inc(i)     = 0.
751                wspeed_lat_inc(i)    = 0.
752                lwflux_lat_inc(i)    = 0.
753                swdown_lat_inc(i)    = 0.
754                lwdown_lat_inc(i)    = 0.
755                apressure_lat_inc(i) = 0.
756                areamask_lat_inc(i)  = 0.
757                climsst_lat_inc(i)   = 0.
758                climsss_lat_inc(i)   = 0.
759                climustr_lat_inc(i)  = 0.
760                climvstr_lat_inc(i)  = 0.
761             ENDIF
762          ENDDO
763    #endif /* USE_EXF_INTERPOLATION */
764    
765  c     Next, read the forcing data file.  c     Next, read the forcing data file.
766        call nml_filter( 'data.exf', scrunit1, myThid )        WRITE(msgBuf,'(A)') 'EXF_READPARMS: opening data.exf'
767        if (scrunit1 .eq. 0) then        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
768           stop 'exf_readparms: reading namelist failed'       &     SQUEEZE_RIGHT , 1)
769        end if  
770        read(  scrunit1, nml = exf_nml )        CALL OPEN_COPY_DATA_FILE(
771        close( scrunit1 )       I                          'data.exf', 'EXF_READPARMS',
772         O                          iUnit,
773         I                          myThid )
774    
775          WRITE(msgBuf,'(A)')
776         &     'EXF_READPARMS: reading EXF_NML_01'
777          CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
778         &     SQUEEZE_RIGHT , 1)
779          READ(  iUnit, nml = EXF_NML_01 )
780          WRITE(msgBuf,'(A)')
781         &     'EXF_READPARMS: reading EXF_NML_02'
782          CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
783         &     SQUEEZE_RIGHT , 1)
784          READ(  iUnit, nml = EXF_NML_02 )
785          WRITE(msgBuf,'(A)')
786         &     'EXF_READPARMS: reading EXF_NML_03'
787          CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
788         &     SQUEEZE_RIGHT , 1)
789          READ(  iUnit, nml = EXF_NML_03 )
790          WRITE(msgBuf,'(A)')
791         &     'EXF_READPARMS: reading EXF_NML_04'
792          CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
793         &     SQUEEZE_RIGHT , 1)
794          READ(  iUnit, nml = EXF_NML_04 )
795    
796    #ifdef ALLOW_ICEFRONT
797          WRITE(msgBuf,'(A)')
798         &     'EXF_READPARMS: reading EXF_NML_SGRUNOFF'
799          CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
800         &     SQUEEZE_RIGHT , 1)
801          READ(  iUnit, nml = EXF_NML_SGRUNOFF )
802    #endif /* ALLOW_ICEFRONT */
803    
804  c     Complete the start date specifications for the forcing  #ifdef ALLOW_OBCS
805  c     fields to get a complete calendar date array.        WRITE(msgBuf,'(A)')
806         &     'EXF_READPARMS: reading EXF_NML_OBCS'
807  c     check for consistency        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
808         &     SQUEEZE_RIGHT , 1)
809        if (.NOT.        READ(  iUnit, nml = EXF_NML_OBCS )
810       &     (exf_iprec .EQ. 32 .OR. exf_iprec .EQ. 64)        IF(siobNstartdate1.EQ.UNSET_I ) siobNstartdate1 = obcsNstartdate1
811       &     ) then        IF(siobNstartdate2.EQ.UNSET_I ) siobNstartdate2 = obcsNstartdate2
812           stop 'stop in exf_readparms: value of exf_iprec not allowed'        IF(siobNperiod    .EQ.UNSET_RL) siobNperiod     = obcsNperiod
813        else if (.NOT.        IF(siobSstartdate1.EQ.UNSET_I ) siobSstartdate1 = obcsSstartdate1
814       &        (exf_yftype .EQ. 'RS' .OR.        IF(siobSstartdate2.EQ.UNSET_I ) siobSstartdate2 = obcsSstartdate2
815       &        exf_yftype .EQ. 'RL')        IF(siobSperiod    .EQ.UNSET_RL) siobSperiod     = obcsSperiod
816       &        ) then        IF(siobEstartdate1.EQ.UNSET_I ) siobEstartdate1 = obcsEstartdate1
817           stop 'stop in exf_readparms: value of exf_yftype not allowed'        IF(siobEstartdate2.EQ.UNSET_I ) siobEstartdate2 = obcsEstartdate2
818        end if        IF(siobEperiod    .EQ.UNSET_RL) siobEperiod     = obcsEperiod
819          IF(siobWstartdate1.EQ.UNSET_I ) siobWstartdate1 = obcsWstartdate1
820  #ifdef ALLOW_RUNOFF        IF(siobWstartdate2.EQ.UNSET_I ) siobWstartdate2 = obcsWstartdate2
821        call cal_FullDate(  runoffstartdate1,  runoffstartdate2,        IF(siobWperiod    .EQ.UNSET_RL) siobWperiod     = obcsWperiod
822       &                    runoffstartdate,            mythid )  
823  #endif        IF(exf_iprec_obcs .EQ. UNSET_I) exf_iprec_obcs  = exf_iprec
824    #endif /* ALLOW_OBCS */
825  #ifdef ALLOW_BULKFORMULAE  
826          WRITE(msgBuf,'(A)')
827  #ifdef ALLOW_ATM_TEMP       &     'EXF_READPARMS: finished reading data.exf'
828        call cal_FullDate(   atempstartdate1,   atempstartdate2,        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
829       &                     atempstartdate,            mythid )       &                SQUEEZE_RIGHT , 1)
830        call cal_FullDate(     aqhstartdate1,     aqhstartdate2,  
831       &                       aqhstartdate,            mythid )        CLOSE( iUnit )
832        call cal_FullDate(  swfluxstartdate1,  swfluxstartdate2,  
833       &                    swfluxstartdate,            mythid )  C--   Derive other parameters:
834        call cal_FullDate(  lwfluxstartdate1,  lwfluxstartdate2,        hq = ht
835       &                    lwfluxstartdate,            mythid )  #if ( ( defined (ALLOW_BULKFORMULAE) && defined (ALLOW_ATM_WIND) ) \
836        call cal_FullDate(  precipstartdate1,  precipstartdate2,       || defined (USE_EXF_INTERPOLATION) )
837       &                    precipstartdate,            mythid )        stressIsOnCgrid = .FALSE.
       call cal_FullDate(windspeedstartdate1, windspeedstartdate2,  
      &                     windspeedstartdate,            mythid )  
838  #else  #else
839        call cal_FullDate(   hfluxstartdate1,   hfluxstartdate2,        stressIsOnCgrid = readStressOnCgrid
      &                     hfluxstartdate,            mythid )  
       call cal_FullDate(   sfluxstartdate1,  sfluxstartdate2,  
      &                     sfluxstartdate,           mythid )  
 #ifdef ALLOW_KPP  
       call cal_FullDate(  swfluxstartdate1,  swfluxstartdate2,  
      &                    swfluxstartdate,            mythid )  
840  #endif  #endif
841    
842  #endif        if ( select_ZenAlbedo.GT.0 ) then
843               useExfZenAlbedo=.TRUE.
844  #ifdef ALLOW_ATM_WIND        endif
       call cal_FullDate(   uwindstartdate1,   uwindstartdate2,  
      &                     uwindstartdate,            mythid )  
       call cal_FullDate(   vwindstartdate1,   vwindstartdate2,  
      &                     vwindstartdate,            mythid )  
 #else  
       call cal_FullDate( ustressstartdate1, ustressstartdate2,  
      &                   ustressstartdate,            mythid )  
       call cal_FullDate( vstressstartdate1, vstressstartdate2,  
      &                   vstressstartdate,            mythid )  
 #endif  
845    
846  #else  #ifdef ALLOW_CLIMSST_RELAXATION
847        call cal_FullDate(   hfluxstartdate1,  hfluxstartdate2,  cgf warning before we overwrite tauThetaClimRelax/thetaClimFile:
848       &                     hfluxstartdate,           mythid )        if ( (tauThetaClimRelax.NE.0.).AND.
849        call cal_FullDate(   sfluxstartdate1,  sfluxstartdate2,       &     (climsstTauRelax.NE.0.) ) then
850       &                     sfluxstartdate,           mythid )          WRITE(msgBuf,'(2A)') '***WARNING***',
851        call cal_FullDate( ustressstartdate1, ustressstartdate2,       &   ' useEXF implies that tauThetaClimRelax and '
852       &                   ustressstartdate,            mythid )          CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
853        call cal_FullDate( vstressstartdate1, vstressstartdate2,       &       SQUEEZE_RIGHT , myThid)
854       &                   vstressstartdate,            mythid )          WRITE(msgBuf,'(2A)') '***WARNING***',
855  #ifdef ALLOW_KPP       &   'thetaClimFile from "data" file are overwritten'
856        call cal_FullDate(  swfluxstartdate1,  swfluxstartdate2,          CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
857       &                    swfluxstartdate,            mythid )       &       SQUEEZE_RIGHT , myThid)
858          endif
859    cgf overwrite doThetaClimRelax based on data.exf:
860          if ( climsstTauRelax.NE.0.) then
861            if (climsstfile.EQ.' ') then
862               WRITE(msgBuf,'(A)')
863         &     'S/R EXF_READPARMS: climsstTauRelax > 0 but'
864               CALL PRINT_ERROR( msgBuf, myThid )
865               WRITE(msgBuf,'(A)')
866         &     'S/R EXF_READPARMS: climsstfile is undefined'
867               CALL PRINT_ERROR( msgBuf, myThid )
868               STOP 'ABNORMAL END: S/R EXF_READPARMS'
869            else
870               doThetaClimRelax=.TRUE.
871            endif
872          else
873               doThetaClimRelax=.FALSE.
874          endif
875    cgf overwrite tauThetaClimRelax/thetaClimFile:
876          tauThetaClimRelax=climsstTauRelax
877          thetaClimFile=' '
878    #endif
879    
880    #ifdef ALLOW_CLIMSSS_RELAXATION
881    cgf warning before we overwrite tauSaltClimRelax/saltClimFile:
882          if ( (tauSaltClimRelax.NE.0.).AND.
883         &     (climsssTauRelax.NE.0.) ) then
884            WRITE(msgBuf,'(2A)') '***WARNING***',
885         &   ' useEXF implies that tauSaltClimRelax and '
886            CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
887         &       SQUEEZE_RIGHT , myThid)
888            WRITE(msgBuf,'(2A)') '***WARNING***',
889         &   'saltClimFile from "data" file are overwritten'
890            CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
891         &       SQUEEZE_RIGHT , myThid)
892          endif
893    cgf overwrite doSaltClimRelax based on data.exf:
894          if ( climsssTauRelax.NE.0.) then
895            if (climsssfile.EQ.' ') then
896               WRITE(msgBuf,'(A)')
897         &     'S/R EXF_READPARMS: climsssTauRelax > 0 but'
898               CALL PRINT_ERROR( msgBuf, myThid )
899               WRITE(msgBuf,'(A)')
900         &     'S/R EXF_READPARMS: climsssfile is undefined'
901               CALL PRINT_ERROR( msgBuf, myThid )
902               STOP 'ABNORMAL END: S/R EXF_READPARMS'
903            else
904               doSaltClimRelax=.TRUE.
905            endif
906          else
907               doSaltClimRelax=.FALSE.
908          endif
909    cgf overwrite tauSaltClimRelax/saltClimFile:
910          tauSaltClimRelax=climsssTauRelax
911          saltClimFile=' '
912  #endif  #endif
913    
 #endif  
914    
915  #ifdef ALLOW_OBCS        CALL EXF_CHECK( myThid )
 #ifdef ALLOW_OBCS_NORTH  
       call cal_FullDate(  obcsNstartdate1,  obcsNstartdate2,  
      &                    obcsNstartdate,           mythid )  
 #endif  
 #ifdef ALLOW_OBCS_SOUTH  
       call cal_FullDate(  obcsSstartdate1,  obcsSstartdate2,  
      &                    obcsSstartdate,           mythid )  
 #endif  
 #ifdef ALLOW_OBCS_EAST  
       call cal_FullDate(  obcsEstartdate1,  obcsEstartdate2,  
      &                    obcsEstartdate,           mythid )  
 #endif  
 #ifdef ALLOW_OBCS_WEST  
       call cal_FullDate(  obcsWstartdate1,  obcsWstartdate2,  
      &                    obcsWstartdate,           mythid )  
 #endif  
 #endif  
916    
917  #ifdef ATMOSPHERIC_LOADING  c     Complete the start date specifications for the forcing
918        call cal_FullDate(   apressurestartdate1, apressurestartdate2,  c     fields to get a complete calendar date array.
919       &                     apressurestartdate,          mythid )  C     => moved to EXF_INIT_FIXED
 #endif  
920    
921        _END_MASTER( mythid )        _END_MASTER( mythid )
   
922        _BARRIER        _BARRIER
923    
924  c--   Summarize the External forcing's setup.        RETURN
925        call exf_summary( mythid )        END
   
   
 c--   set climatology parameters  
       call exf_clim_readparms( mythid )  
   
 c--   summarize climatologic forcing configuration  
       call exf_clim_summary( mythid )  
   
       end  

Legend:
Removed from v.1.4.2.1  
changed lines
  Added in v.1.62

  ViewVC Help
Powered by ViewVC 1.1.22