/[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.50 by dimitri, Fri Feb 22 20:25:54 2008 UTC revision 1.80 by jmc, Thu Jun 5 15:37:46 2014 UTC
# Line 2  C $Header$ Line 2  C $Header$
2  C $Name$  C $Name$
3    
4  #include "EXF_OPTIONS.h"  #include "EXF_OPTIONS.h"
5    #ifdef ALLOW_EXCH2
6    # include "W2_OPTIONS.h"
7    #endif /* ALLOW_EXCH2 */
8    
9        SUBROUTINE EXF_READPARMS( myThid )        SUBROUTINE EXF_READPARMS( myThid )
10    
11  c     ==================================================================  C     ==================================================================
12  c     SUBROUTINE exf_readparms  C     SUBROUTINE exf_readparms
13  c     ==================================================================  C     ==================================================================
14  c  C
15  c     o This routine initialises the package that calculates external  C     o This routine initialises the package that calculates external
16  c       forcing fields for a given timestep of the MITgcmUV. Parameters  C       forcing fields for a given timestep of the MITgcmUV. Parameters
17  c       for this package are set in "data.externalforcing". Some additional  C       for this package are set in "data.externalforcing". Some additional
18  c       precompiler switches have to be specified in "EXF_OPTIONS.h".  C       precompiler switches have to be specified in "EXF_OPTIONS.h".
19  c  C
20  c     started: Christian Eckert eckert@mit.edu  30-Jun-1999  C     started: Christian Eckert eckert@mit.edu  30-Jun-1999
21  c  C
22  c     changed: Christian Eckert eckert@mit.edu  11-Jan-2000  C     changed: Christian Eckert eckert@mit.edu  11-Jan-2000
23  c              - Restructured the code in order to create a package  C              - Restructured the code in order to create a package
24  c                for the MITgcmUV.  C                for the MITgcmUV.
25  c              Christian Eckert eckert@mit.edu  12-Feb-2000  C              Christian Eckert eckert@mit.edu  12-Feb-2000
26  c              - Changed Routine names (package prefix: exf_)  C              - Changed Routine names (package prefix: exf_)
27  c     changed: Patrick Heimbach, heimbach@mit.edu  04-May-2000  C     changed: Patrick Heimbach, heimbach@mit.edu  04-May-2000
28  c              - changed the handling of precip and sflux with respect  C              - changed the handling of precip and sflux with respect
29  c                to CPP options ALLOW_BULKFORMULAE and ALLOW_ATM_TEMP  C                to CPP options ALLOW_BULKFORMULAE and ALLOW_ATM_TEMP
30  c     changed: Ralf.Giering@FastOpt.de 25-Mai-20000  C     changed: Ralf.Giering@FastOpt.de 25-Mai-20000
31  c              - moved relaxation and climatology to extra routines  C              - moved relaxation and climatology to extra routines
32  c              Patrick Heimbach, heimbach@mit.edu  04-May-2000  C              Patrick Heimbach, heimbach@mit.edu  04-May-2000
33  c              - added obcs parameters  C              - added obcs parameters
34  c     changed: Virginie Thierry, vthierry@ucsd.edu 04-June-2001  C     changed: Virginie Thierry, vthierry@ucsd.edu 04-June-2001
35  c              - added new obcs parameters (for each boundaries)  C              - added new obcs parameters (for each boundaries)
36  c     included runoff D. Stammer, Nov. 25, 2001  C     included runoff D. Stammer, Nov. 25, 2001
37  c     included pressure forcing. heimbach@mit.edu 05-Nov-2002  C     included pressure forcing. heimbach@mit.edu 05-Nov-2002
38  c     added "repeatPeriod" for cycling of forcing datasets 19-Dec-2002  C     added "repeatPeriod" for cycling of forcing datasets 19-Dec-2002
39  c     mods for pkg/seaice: menemenlis@jpl.nasa.gov 20-Dec-2002  C     mods for pkg/seaice: menemenlis@jpl.nasa.gov 20-Dec-2002
40  c  C
41  c     ==================================================================  C     ==================================================================
42  c     SUBROUTINE exf_readparms  C     SUBROUTINE exf_readparms
43  c     ==================================================================  C     ==================================================================
44    
45        implicit none        implicit none
46    
47  c     == global variables ==  C     == global variables ==
48    
49  #include "EEPARAMS.h"  #include "EEPARAMS.h"
50  #include "SIZE.h"  #include "SIZE.h"
51  #include "PARAMS.h"  #include "PARAMS.h"
52    #ifdef USE_EXF_INTERPOLATION
53    # ifdef ALLOW_EXCH2
54    # include "W2_EXCH2_SIZE.h"
55    # include "W2_EXCH2_TOPOLOGY.h"
56    # endif /* ALLOW_EXCH2 */
57    # include "SET_GRID.h"
58    #endif /* USE_EXF_INTERPOLATION */
59  c#include "cal.h"  c#include "cal.h"
60  #include "EXF_PARAM.h"  #include "EXF_PARAM.h"
61  #include "EXF_CONSTANTS.h"  #include "EXF_CONSTANTS.h"
62    
63  c     == routine arguments ==  C     == routine arguments ==
64          INTEGER myThid
       integer myThid  
   
 c     == local variables ==  
   
       integer i, idummy  
       integer iUnit  
65    
66        character*(max_len_mbuf) msgbuf  C     == local variables ==
67    #ifdef USE_EXF_INTERPOLATION
68  c     == end of interface ==        INTEGER gridNx, gridNy
69          INTEGER j
70          _RL inp_lon0, inp_lat0, inp_dLon, inp_dLat
71    #endif /* USE_EXF_INTERPOLATION */
72          INTEGER iUnit
73          LOGICAL exf_verbose
74          CHARACTER*(2) exf_yftype
75          CHARACTER*(MAX_LEN_MBUF) msgBuf
76    C     == end of interface ==
77    
78  c     Surface flux data.  C     Surface flux data.
79        NAMELIST /EXF_NML_01/        NAMELIST /EXF_NML_01/
80       &      windstressmax,       repeatPeriod,    exf_albedo,       &      windstressmax,       repeatPeriod,    exf_albedo,
81       &   ocean_emissivity,     ice_emissivity, snow_emissivity,       &   ocean_emissivity,     ice_emissivity, snow_emissivity,
82       &          exf_iceCd,          exf_iceCe,     exf_iceCh,       &          exf_iceCd,          exf_iceCe,     exf_iceCh,
83       &   exf_scal_BulkCdn,     climtempfreeze,       &   exf_scal_BulkCdn,     climtempfreeze, useExfCheckRange,
84       &          exf_iprec,         exf_yftype,   exf_monFreq,       &      exf_iprec    ,   exf_iprec_obcs  , exf_yftype,
85       & useExfYearlyFields,  twoDigitYear,   useExfCheckRange,       &      exf_verbose  ,   exf_debugLev    , exf_monFreq,
86         & useExfYearlyFields,  twoDigitYear,
87       & useStabilityFct_overIce, readStressOnAgrid, readStressOnCgrid,       & useStabilityFct_overIce, readStressOnAgrid, readStressOnCgrid,
88       &    useRelativeWind,       & useAtmWind, useRelativeWind, noNegativeEvap,
89         & select_ZenAlbedo, useExfZenIncoming,
90       & hu, ht, umin, atmrho, atmcp, cen2kel, gravity_mks,       & hu, ht, umin, atmrho, atmcp, cen2kel, gravity_mks,
91       & cdrag_1, cdrag_2, cdrag_3, cstanton_1, cstanton_2, cdalton,       & cdrag_1, cdrag_2, cdrag_3, cstanton_1, cstanton_2, cdalton,
92       & flamb, flami, zolmin, zref,       & flamb, flami, zolmin, zref,
93       & cvapor_fac, cvapor_exp, cvapor_fac_ice, cvapor_exp_ice,       & cvapor_fac, cvapor_exp, cvapor_fac_ice, cvapor_exp_ice,
94       & humid_fac, gamma_blk, saltsat, psim_fac       & humid_fac, gamma_blk, saltsat, sstExtrapol, psim_fac
95    
96        NAMELIST /EXF_NML_02/        NAMELIST /EXF_NML_02/
97       &          hfluxfile,          atempfile,       aqhfile,       &          hfluxfile,          atempfile,       aqhfile,
98       &          sfluxfile,         precipfile,    runofffile,       &          sfluxfile,         precipfile,    runofffile,
99         &                                         runoftempfile,
100       &        ustressfile,        vstressfile,      evapfile,       &        ustressfile,        vstressfile,      evapfile,
101       &     snowprecipfile,          uwindfile,     vwindfile,       &     snowprecipfile,          uwindfile,     vwindfile,
102       &         wspeedfile,         swfluxfile,    lwfluxfile,       &         wspeedfile,         swfluxfile,    lwfluxfile,
103       &      apressurefile,         swdownfile,    lwdownfile,       &      apressurefile,         swdownfile,    lwdownfile,
104       &        climsstfile,        climsssfile,             &       areamaskfile,        climsstfile,   climsssfile,
105         &                           climustrfile,  climvstrfile,
106       &    hfluxstartdate1,    hfluxstartdate2,   hfluxperiod,       &    hfluxstartdate1,    hfluxstartdate2,   hfluxperiod,
107       &    atempstartdate1,    atempstartdate2,   atempperiod,       &    atempstartdate1,    atempstartdate2,   atempperiod,
108       &      aqhstartdate1,      aqhstartdate2,     aqhperiod,       &      aqhstartdate1,      aqhstartdate2,     aqhperiod,
# Line 105  c     Surface flux data. Line 121  c     Surface flux data.
121       &   swdownstartdate1,   swdownstartdate2,  swdownperiod,       &   swdownstartdate1,   swdownstartdate2,  swdownperiod,
122       &   lwdownstartdate1,   lwdownstartdate2,  lwdownperiod,       &   lwdownstartdate1,   lwdownstartdate2,  lwdownperiod,
123       &apressurestartdate1,apressurestartdate2,apressureperiod,       &apressurestartdate1,apressurestartdate2,apressureperiod,
124       &  climsststartdate1,  climsststartdate2,  climsstperiod,       &  areamaskstartdate1,areamaskstartdate2,areamaskperiod,
125       &  climsssstartdate1,  climsssstartdate2,  climsssperiod       &  climsststartdate1,  climsststartdate2, climsstperiod,
126         &  climsssstartdate1,  climsssstartdate2, climsssperiod,
127         & climustrstartdate1, climustrstartdate2,climustrperiod,
128         & climvstrstartdate1, climvstrstartdate2,climvstrperiod,
129         &   areamaskTauRelax,    climsstTauRelax, climsssTauRelax,
130         &   climustrTauRelax,climvstrTauRelax
131    
132        NAMELIST /EXF_NML_03/        NAMELIST /EXF_NML_03/
133       &   exf_inscal_hflux,  exf_inscal_sflux,      exf_inscal_evap,       &   exf_inscal_hflux,  exf_inscal_sflux,      exf_inscal_evap,
# Line 116  c     Surface flux data. Line 137  c     Surface flux data.
137       &     exf_inscal_sst,  exf_inscal_sss,       &     exf_inscal_sst,  exf_inscal_sss,
138       &  exf_inscal_swflux,  exf_inscal_lwflux,   exf_inscal_precip,       &  exf_inscal_swflux,  exf_inscal_lwflux,   exf_inscal_precip,
139       &  exf_inscal_runoff,  exf_inscal_apressure, exf_inscal_snowprecip,       &  exf_inscal_runoff,  exf_inscal_apressure, exf_inscal_snowprecip,
140         &  exf_inscal_runoftemp,
141       &  exf_inscal_swdown,  exf_inscal_lwdown,       &  exf_inscal_swdown,  exf_inscal_lwdown,
142       & exf_inscal_climsst, exf_inscal_climsss,       & exf_inscal_climsst, exf_inscal_climsss,
143         & exf_inscal_climustr, exf_inscal_climvstr,
144       &  exf_outscal_hflux,  exf_outscal_ustress, exf_outscal_vstress,       &  exf_outscal_hflux,  exf_outscal_ustress, exf_outscal_vstress,
145       & exf_outscal_swflux,  exf_outscal_sst,     exf_outscal_sss,       & exf_outscal_swflux,  exf_outscal_sst,     exf_outscal_sss,
146       &  exf_outscal_sflux,  exf_outscal_apressure,       &  exf_outscal_sflux,  exf_outscal_apressure,
147       &  hfluxconst, atempconst, aqhconst, sfluxconst, evapconst,       & exf_inscal_areamask, exf_outscal_areamask,
148         &  hfluxconst, atempconst, aqhconst, sfluxconst, evapconst,
149       &  precipconst, snowprecipconst, runoffconst, ustressconst,       &  precipconst, snowprecipconst, runoffconst, ustressconst,
150         &  runoftempconst,
151       &  vstressconst, uwindconst, vwindconst, wspeedconst, swfluxconst,       &  vstressconst, uwindconst, vwindconst, wspeedconst, swfluxconst,
152       &  lwfluxconst, swdownconst, lwdownconst, apressureconst,       &  lwfluxconst, swdownconst, lwdownconst, apressureconst,
153       &  climsstconst,   climsssconst,       &  areamaskconst, climsstconst,   climsssconst,
154         &  climustrconst, climvstrconst,
155       &     hflux_exfremo_intercept, hflux_exfremo_slope,       &     hflux_exfremo_intercept, hflux_exfremo_slope,
156       &     atemp_exfremo_intercept, atemp_exfremo_slope,       &     atemp_exfremo_intercept, atemp_exfremo_slope,
157       &     aqh_exfremo_intercept, aqh_exfremo_slope,       &     aqh_exfremo_intercept, aqh_exfremo_slope,
# Line 134  c     Surface flux data. Line 160  c     Surface flux data.
160       &     precip_exfremo_intercept, precip_exfremo_slope,       &     precip_exfremo_intercept, precip_exfremo_slope,
161       &     snowprecip_exfremo_intercept, snowprecip_exfremo_slope,       &     snowprecip_exfremo_intercept, snowprecip_exfremo_slope,
162       &     runoff_exfremo_intercept, runoff_exfremo_slope,       &     runoff_exfremo_intercept, runoff_exfremo_slope,
163         &     runoftemp_exfremo_intercept, runoftemp_exfremo_slope,
164       &     ustress_exfremo_intercept, ustress_exfremo_slope,       &     ustress_exfremo_intercept, ustress_exfremo_slope,
165       &     vstress_exfremo_intercept, vstress_exfremo_slope,       &     vstress_exfremo_intercept, vstress_exfremo_slope,
166       &     uwind_exfremo_intercept, uwind_exfremo_slope,       &     uwind_exfremo_intercept, uwind_exfremo_slope,
# Line 144  c     Surface flux data. Line 171  c     Surface flux data.
171       &     swdown_exfremo_intercept, swdown_exfremo_slope,       &     swdown_exfremo_intercept, swdown_exfremo_slope,
172       &     lwdown_exfremo_intercept, lwdown_exfremo_slope,       &     lwdown_exfremo_intercept, lwdown_exfremo_slope,
173       &     apressure_exfremo_intercept, apressure_exfremo_slope,       &     apressure_exfremo_intercept, apressure_exfremo_slope,
174         &     areamask_exfremo_intercept, areamask_exfremo_slope,
175       &     climsst_exfremo_intercept, climsst_exfremo_slope,       &     climsst_exfremo_intercept, climsst_exfremo_slope,
176       &     climsss_exfremo_intercept, climsss_exfremo_slope       &     climsss_exfremo_intercept, climsss_exfremo_slope,
177         &     climustr_exfremo_intercept, climustr_exfremo_slope,
178         &     climvstr_exfremo_intercept, climvstr_exfremo_slope
179    
       NAMELIST /EXF_NML_04/  
      & idummy  
180  #ifdef USE_EXF_INTERPOLATION  #ifdef USE_EXF_INTERPOLATION
181       & , ustress_lon0, ustress_lon_inc, ustress_lat0, ustress_lat_inc,        NAMELIST /EXF_NML_04/
182         & ustress_lon0, ustress_lon_inc, ustress_lat0, ustress_lat_inc,
183         & ustress_nlon, ustress_nlat, ustress_interpMethod,
184       & vstress_lon0, vstress_lon_inc, vstress_lat0, vstress_lat_inc,       & vstress_lon0, vstress_lon_inc, vstress_lat0, vstress_lat_inc,
185       & ustress_nlon, ustress_nlat, vstress_nlon, vstress_nlat,       & vstress_nlon, vstress_nlat, vstress_interpMethod,
186       & hflux_lon0, hflux_lon_inc, hflux_lat0, hflux_lat_inc,       & hflux_lon0, hflux_lon_inc, hflux_lat0, hflux_lat_inc,
187         & hflux_nlon, hflux_nlat, hflux_interpMethod,
188       & sflux_lon0, sflux_lon_inc, sflux_lat0, sflux_lat_inc,       & sflux_lon0, sflux_lon_inc, sflux_lat0, sflux_lat_inc,
189       & hflux_nlon, hflux_nlat, sflux_nlon, sflux_nlat,       & sflux_nlon, sflux_nlat, sflux_interpMethod,
190       & swflux_lon0, swflux_lon_inc, swflux_lat0, swflux_lat_inc,       & swflux_lon0, swflux_lon_inc, swflux_lat0, swflux_lat_inc,
191         & swflux_nlon, swflux_nlat, swflux_interpMethod,
192       & lwflux_lon0, lwflux_lon_inc, lwflux_lat0, lwflux_lat_inc,       & lwflux_lon0, lwflux_lon_inc, lwflux_lat0, lwflux_lat_inc,
193       & swflux_nlon, swflux_nlat, lwflux_nlon, lwflux_nlat,       & lwflux_nlon, lwflux_nlat, lwflux_interpMethod,
194       & atemp_lon0, atemp_lon_inc, atemp_lat0, atemp_lat_inc,       & atemp_lon0, atemp_lon_inc, atemp_lat0, atemp_lat_inc,
195       & atemp_nlon, atemp_nlat,       & atemp_nlon, atemp_nlat, atemp_interpMethod,
196       & aqh_lon0, aqh_lon_inc, aqh_lat0, aqh_lat_inc, aqh_nlon, aqh_nlat,       & aqh_lon0, aqh_lon_inc, aqh_lat0,aqh_lat_inc,
197       &evap_lon0,evap_lon_inc,evap_lat0,evap_lat_inc,evap_nlon,evap_nlat,       & aqh_nlon, aqh_nlat, aqh_interpMethod,
198         & evap_lon0, evap_lon_inc, evap_lat0, evap_lat_inc,
199         & evap_nlon, evap_nlat, evap_interpMethod,
200       & precip_lon0, precip_lon_inc, precip_lat0, precip_lat_inc,       & precip_lon0, precip_lon_inc, precip_lat0, precip_lat_inc,
201         & precip_nlon, precip_nlat, precip_interpMethod,
202       & runoff_lon0, runoff_lon_inc, runoff_lat0, runoff_lat_inc,       & runoff_lon0, runoff_lon_inc, runoff_lat0, runoff_lat_inc,
203       & precip_nlon, precip_nlat, runoff_nlon, runoff_nlat,       & runoff_nlon, runoff_nlat, runoff_interpMethod,
204       & snowprecip_lon0, snowprecip_lon_inc, snowprecip_nlon,       & snowprecip_lon0, snowprecip_lon_inc,
205       & snowprecip_lat0, snowprecip_lat_inc, snowprecip_nlat,       & snowprecip_lat0, snowprecip_lat_inc,
206         & snowprecip_nlon, snowprecip_nlat, snowprecip_interpMethod,
207       & uwind_lon0, uwind_lon_inc, uwind_lat0, uwind_lat_inc,       & uwind_lon0, uwind_lon_inc, uwind_lat0, uwind_lat_inc,
208         & uwind_nlon, uwind_nlat, uwind_interpMethod,
209       & vwind_lon0, vwind_lon_inc, vwind_lat0, vwind_lat_inc,       & vwind_lon0, vwind_lon_inc, vwind_lat0, vwind_lat_inc,
210       & uwind_nlon, uwind_nlat, vwind_nlon, vwind_nlat,       & vwind_nlon, vwind_nlat, vwind_interpMethod,
211       & wspeed_lon0, wspeed_lon_inc, wspeed_lat0, wspeed_lat_inc,       & wspeed_lon0, wspeed_lon_inc, wspeed_lat0, wspeed_lat_inc,
212       & wspeed_nlon, wspeed_nlat,       & wspeed_nlon, wspeed_nlat, wspeed_interpMethod,
213       & swdown_lon0, swdown_lon_inc, swdown_lat0, swdown_lat_inc,       & swdown_lon0, swdown_lon_inc, swdown_lat0, swdown_lat_inc,
214         & swdown_nlon, swdown_nlat, swdown_interpMethod,
215       & lwdown_lon0, lwdown_lon_inc, lwdown_lat0, lwdown_lat_inc,       & lwdown_lon0, lwdown_lon_inc, lwdown_lat0, lwdown_lat_inc,
216       & swdown_nlon, swdown_nlat, lwdown_nlon, lwdown_nlat,       & lwdown_nlon, lwdown_nlat, lwdown_interpMethod,
217       & apressure_lon0,apressure_lon_inc,apressure_nlon,       & apressure_lon0,apressure_lon_inc,apressure_lat0,apressure_lat_inc
218       & apressure_lat0,apressure_lat_inc,apressure_nlat,       & , apressure_nlon, apressure_nlat, apressure_interpMethod,
219       & climsst_lon0, climsst_lon_inc, climsst_nlon,       & areamask_lon0, areamask_lon_inc, areamask_lat0, areamask_lat_inc,
220       & climsst_lat0, climsst_lat_inc, climsst_nlat,       & areamask_nlon, areamask_nlat, areamask_interpMethod,
221       & climsss_lon0, climsss_lon_inc, climsss_nlon,       & climsst_lon0, climsst_lon_inc, climsst_lat0, climsst_lat_inc,
222       & climsss_lat0, climsss_lat_inc, climsss_nlat       & climsst_nlon, climsst_nlat, climsst_interpMethod,
223  #endif       & climsss_lon0, climsss_lon_inc,climsss_lat0, climsss_lat_inc,
224         & climsss_nlon, climsss_nlat, climsss_interpMethod,
225         & climustr_lon0, climustr_lon_inc, climustr_lat0, climustr_lat_inc,
226         & climustr_nlon, climustr_nlat, climustr_interpMethod,
227         & climvstr_lon0, climvstr_lon_inc, climvstr_lat0, climvstr_lat_inc,
228         & climvstr_nlon, climvstr_nlat, climvstr_interpMethod
229    #endif /* USE_EXF_INTERPOLATION */
230    
231    #ifdef ALLOW_ICEFRONT
232          NAMELIST /EXF_NML_SGRUNOFF/
233         &    sgrunoffstartdate1, sgrunoffstartdate2,
234         &    sgrunoffstartdate,  sgrunoffperiod,
235         &    sgrunoffconst,      sgrunoff_exfremo_intercept,
236         &    sgrunoff_exfremo_slope, exf_inscal_sgrunoff
237    #endif /* ALLOW_ICEFRONT */
238    
239    #ifdef ALLOW_OBCS
240        NAMELIST /EXF_NML_OBCS/        NAMELIST /EXF_NML_OBCS/
241         &    useOBCSYearlyFields,
242       &    obcsNstartdate1,    obcsNstartdate2,   obcsNperiod,       &    obcsNstartdate1,    obcsNstartdate2,   obcsNperiod,
243       &    obcsSstartdate1,    obcsSstartdate2,   obcsSperiod,       &    obcsSstartdate1,    obcsSstartdate2,   obcsSperiod,
244       &    obcsEstartdate1,    obcsEstartdate2,   obcsEperiod,       &    obcsEstartdate1,    obcsEstartdate2,   obcsEperiod,
# Line 193  c     Surface flux data. Line 247  c     Surface flux data.
247       &    siobSstartdate1,    siobSstartdate2,   siobSperiod,       &    siobSstartdate1,    siobSstartdate2,   siobSperiod,
248       &    siobEstartdate1,    siobEstartdate2,   siobEperiod,       &    siobEstartdate1,    siobEstartdate2,   siobEperiod,
249       &    siobWstartdate1,    siobWstartdate2,   siobWperiod       &    siobWstartdate1,    siobWstartdate2,   siobWperiod
250    #endif /* ALLOW_OBCS */
251    
252    #ifdef USE_EXF_INTERPOLATION
253    # ifdef ALLOW_EXCH2
254          gridNx = exch2_mydNx(1)
255          gridNy = exch2_mydNy(1)
256    # else /* ALLOW_EXCH2 */
257          gridNx = Nx
258          gridNy = Ny
259    # endif /* ALLOW_EXCH2 */
260    #endif /* USE_EXF_INTERPOLATION */
261    
262          IF ( .NOT.useEXF ) THEN
263    C-    pkg EXF is not used
264            _BEGIN_MASTER(myThid)
265    C-    Track pkg activation status:
266    C     print a (weak) warning if data.exf is found
267             CALL PACKAGES_UNUSED_MSG( 'useEXF', ' ', ' ' )
268            _END_MASTER(myThid)
269            RETURN
270          ENDIF
271    
272        _BEGIN_MASTER(mythid)        _BEGIN_MASTER(myThid)
273    
274  c     Set default values.  C     Set default values.
275    
276        year2sec           = 365.*86400.        year2sec           = 365.*86400.
277    c     exf_verbose        = debugMode
278          exf_verbose        = .FALSE.
279          exf_debugLev       = debugLevel
280        exf_monFreq        = monitorFreq        exf_monFreq        = monitorFreq
281        useExfCheckRange   = .TRUE.        useExfCheckRange   = .TRUE.
282          useExfZenAlbedo    = .FALSE.
283          select_ZenAlbedo   = 0
284          useExfZenIncoming  = .FALSE.
285        readStressOnAgrid  = .FALSE.        readStressOnAgrid  = .FALSE.
286        readStressOnCgrid  = .FALSE.        readStressOnCgrid  = .FALSE.
287    #ifdef ALLOW_ATM_WIND
288          useAtmWind         = .TRUE.
289    #else
290          useAtmWind         = .FALSE.
291    #endif
292        useRelativeWind    = .FALSE.        useRelativeWind    = .FALSE.
293          noNegativeEvap     = .FALSE.
294    
295  C-  default value should be set to main model parameter:  C-  default value should be set to main model parameter:
296  c     cen2kel     =  celsius2K  c     cen2kel     =  celsius2K
# Line 224  c     humid_fac   =  atm_Rq     <- defau Line 311  c     humid_fac   =  atm_Rq     <- defau
311        humid_fac      =        0.606  _d 0        humid_fac      =        0.606  _d 0
312        gamma_blk      =        0.010  _d 0        gamma_blk      =        0.010  _d 0
313        saltsat        =        0.980  _d 0        saltsat        =        0.980  _d 0
314          sstExtrapol    =        0.0    _d 0
315        cdrag_1        =        0.0027000 _d 0        cdrag_1        =        0.0027000 _d 0
316        cdrag_2        =        0.0001420 _d 0        cdrag_2        =        0.0001420 _d 0
317        cdrag_3        =        0.0000764 _d 0        cdrag_3        =        0.0000764 _d 0
# Line 241  c     humid_fac   =  atm_Rq     <- defau Line 329  c     humid_fac   =  atm_Rq     <- defau
329        exf_iceCe        = 1.63 _d -3        exf_iceCe        = 1.63 _d -3
330        exf_iceCh        = 1.63 _d -3        exf_iceCh        = 1.63 _d -3
331        exf_albedo       = 0.1 _d 0        exf_albedo       = 0.1 _d 0
332  c--   this default is chosen to be backward compatible with  C--   this default is chosen to be backward compatible with
333  c--   an earlier setting of 5.5 = ocean_emissivity*stefanBoltzmann  C--   an earlier setting of 5.5 = ocean_emissivity*stefanBoltzmann
334        ocean_emissivity = 5.50 _d-8 / 5.670 _d-8        ocean_emissivity = 5.50 _d -8 / 5.670 _d -8
335        ice_emissivity   = 0.95 _d 0        ice_emissivity   = 0.95 _d 0
336        snow_emissivity  = 0.95 _d 0        snow_emissivity  = 0.95 _d 0
337    
338  c     Calendar data.  C     Calendar data.
339        hfluxstartdate1    = 0        hfluxstartdate1    = 0
340        hfluxstartdate2    = 0        hfluxstartdate2    = 0
341        hfluxperiod        = 0.0 _d 0        hfluxperiod        = 0.0 _d 0
# Line 304  c     Calendar data. Line 392  c     Calendar data.
392        runoff_exfremo_intercept = 0.0 _d 0        runoff_exfremo_intercept = 0.0 _d 0
393        runoff_exfremo_slope = 0.0 _d 0        runoff_exfremo_slope = 0.0 _d 0
394    
395          runoftempconst              = 0.0 _d 0
396          runoftemp_exfremo_intercept = 0.0 _d 0
397          runoftemp_exfremo_slope     = 0.0 _d 0
398    
399        ustressstartdate1  = 0        ustressstartdate1  = 0
400        ustressstartdate2  = 0        ustressstartdate2  = 0
401        ustressperiod      = 0.0 _d 0        ustressperiod      = 0.0 _d 0
# Line 374  c     Calendar data. Line 466  c     Calendar data.
466        apressure_exfremo_intercept = 0.0 _d 0        apressure_exfremo_intercept = 0.0 _d 0
467        apressure_exfremo_slope = 0.0 _d 0        apressure_exfremo_slope = 0.0 _d 0
468    
469          areamaskstartdate1    = 0
470          areamaskstartdate2    = 0
471          areamaskperiod        = 0.0 _d 0
472          areamaskTauRelax      = 0.0 _d 0
473          areamaskconst         = 0.0 _d 0
474          areamask_exfremo_intercept = 0. _d 0
475          areamask_exfremo_slope = 0. _d 0
476    
477        climsststartdate1  = 0        climsststartdate1  = 0
478        climsststartdate2  = 0        climsststartdate2  = 0
479        climsstperiod      = 0        climsstperiod      = 0
480          climsstTauRelax    = 0.0 _d 0
481        climsstconst         = 0.0 _d 0        climsstconst         = 0.0 _d 0
482        climsst_exfremo_intercept = 0.0 _d 0        climsst_exfremo_intercept = 0.0 _d 0
483        climsst_exfremo_slope = 0.0 _d 0        climsst_exfremo_slope = 0.0 _d 0
# Line 384  c     Calendar data. Line 485  c     Calendar data.
485        climsssstartdate1  = 0        climsssstartdate1  = 0
486        climsssstartdate2  = 0        climsssstartdate2  = 0
487        climsssperiod      = 0        climsssperiod      = 0
488          climsssTauRelax    = 0.0 _d 0
489        climsssconst         = 0.0 _d 0        climsssconst         = 0.0 _d 0
490        climsss_exfremo_intercept = 0.0 _d 0        climsss_exfremo_intercept = 0.0 _d 0
491        climsss_exfremo_slope = 0.0 _d 0        climsss_exfremo_slope = 0.0 _d 0
492    
493          climustrstartdate1  = 0
494          climustrstartdate2  = 0
495          climustrperiod      = 0
496          climustrTauRelax    = 0.0 _d 0
497          climustrconst         = 0.0 _d 0
498          climustr_exfremo_intercept = 0.0 _d 0
499          climustr_exfremo_slope = 0.0 _d 0
500    
501          climvstrstartdate1  = 0
502          climvstrstartdate2  = 0
503          climvstrperiod      = 0
504          climvstrTauRelax    = 0.0 _d 0
505          climvstrconst         = 0.0 _d 0
506          climvstr_exfremo_intercept = 0.0 _d 0
507          climvstr_exfremo_slope = 0.0 _d 0
508    
509          sgrunoffstartdate1         = 0
510          sgrunoffstartdate2         = 0
511          sgrunoffstartdate          = 0.
512          sgrunoffperiod             = 0.0 _d 0
513          sgrunoffconst              = 0.0 _d 0
514          sgrunoff_exfremo_intercept = 0.0 _d 0
515          sgrunoff_exfremo_slope     = 0.0 _d 0
516          exf_inscal_sgrunoff        = 1. _d 0
517    
518          useOBCSYearlyFields = .FALSE.
519        obcsNstartdate1    = 0        obcsNstartdate1    = 0
520        obcsNstartdate2    = 0        obcsNstartdate2    = 0
521        obcsNperiod        = 0.0 _d 0        obcsNperiod        = 0.0 _d 0
# Line 419  c     Calendar data. Line 547  c     Calendar data.
547    
548        exf_scal_BulkCdn   = 1.0  _d 0        exf_scal_BulkCdn   = 1.0  _d 0
549    
550  c     Initialise freezing temperature of sea water  C     Initialise freezing temperature of sea water
551        climtempfreeze     = -1.9 _d 0        climtempfreeze     = -1.9 _d 0
552    
553  c     Data files.  C     Data files.
554        hfluxfile          = ' '        hfluxfile          = ' '
555        atempfile          = ' '        atempfile          = ' '
556        aqhfile            = ' '        aqhfile            = ' '
# Line 431  c     Data files. Line 559  c     Data files.
559        snowprecipfile     = ' '        snowprecipfile     = ' '
560        sfluxfile          = ' '        sfluxfile          = ' '
561        runofffile         = ' '        runofffile         = ' '
562          runoftempfile      = ' '
563        ustressfile        = ' '        ustressfile        = ' '
564        vstressfile        = ' '        vstressfile        = ' '
565        uwindfile          = ' '        uwindfile          = ' '
# Line 441  c     Data files. Line 570  c     Data files.
570        swdownfile         = ' '        swdownfile         = ' '
571        lwdownfile         = ' '        lwdownfile         = ' '
572        apressurefile      = ' '        apressurefile      = ' '
573          areamaskfile       = ' '
574        climsstfile        = ' '        climsstfile        = ' '
575        climsssfile        = ' '        climsssfile        = ' '
576          climustrfile       = ' '
577          climvstrfile       = ' '
578    
579  c     Start dates.  C     Start dates.
580        hfluxstartdate     = 0.        hfluxstartdate     = 0.
581        atempstartdate     = 0.        atempstartdate     = 0.
582        aqhstartdate       = 0.        aqhstartdate       = 0.
# Line 471  c     Start dates. Line 603  c     Start dates.
603        siobEstartdate     = 0.        siobEstartdate     = 0.
604        siobWstartdate     = 0.        siobWstartdate     = 0.
605        apressurestartdate = 0.        apressurestartdate = 0.
606          areamaskstartdate  = 0.
607        climsststartdate   = 0.        climsststartdate   = 0.
608        climsssstartdate   = 0.        climsssstartdate   = 0.
609          climustrstartdate  = 0.
610          climvstrstartdate  = 0.
611    
612  c     Initialise file type and field precision  C     Initialise file type and field precision
613        exf_iprec            = 32        exf_iprec            = 32
614          exf_iprec_obcs       = UNSET_I
615        exf_yftype           = 'RL'        exf_yftype           = 'RL'
616        useExfYearlyFields   = .FALSE.        useExfYearlyFields   = .FALSE.
617        twoDigitYear         = .FALSE.        twoDigitYear         = .FALSE.
618    
619  c     Input scaling factors.  C     Input scaling factors.
620        exf_inscal_hflux     =  1. _d 0        exf_inscal_hflux     =  1. _d 0
621        exf_inscal_sflux     =  1. _d 0        exf_inscal_sflux     =  1. _d 0
622        exf_inscal_ustress   =  1. _d 0        exf_inscal_ustress   =  1. _d 0
# Line 500  c     Input scaling factors. Line 636  c     Input scaling factors.
636        exf_inscal_evap      =  1. _d 0        exf_inscal_evap      =  1. _d 0
637        exf_inscal_apressure =  1. _d 0        exf_inscal_apressure =  1. _d 0
638        exf_inscal_runoff    =  1. _d 0        exf_inscal_runoff    =  1. _d 0
639          exf_inscal_runoftemp =  1. _d 0
640        exf_inscal_swdown    =  1. _d 0        exf_inscal_swdown    =  1. _d 0
641        exf_inscal_lwdown    =  1. _d 0        exf_inscal_lwdown    =  1. _d 0
642        exf_inscal_climsst   =  1. _d 0        exf_inscal_climsst   =  1. _d 0
643        exf_inscal_climsss   =  1. _d 0        exf_inscal_climsss   =  1. _d 0
644          exf_inscal_climustr  =  1. _d 0
645          exf_inscal_climvstr  =  1. _d 0
646          exf_inscal_areamask  =  1. _d 0
647    
648  c     Output scaling factors.  C     Output scaling factors.
649        exf_outscal_hflux    =  1. _d 0        exf_outscal_hflux    =  1. _d 0
650        exf_outscal_sflux    =  1. _d 0        exf_outscal_sflux    =  1. _d 0
651        exf_outscal_ustress  =  1. _d 0        exf_outscal_ustress  =  1. _d 0
# Line 514  c     Output scaling factors. Line 654  c     Output scaling factors.
654        exf_outscal_sst      =  1. _d 0        exf_outscal_sst      =  1. _d 0
655        exf_outscal_sss      =  1. _d 0        exf_outscal_sss      =  1. _d 0
656        exf_outscal_apressure=  1. _d 0        exf_outscal_apressure=  1. _d 0
657          exf_outscal_areamask =  1. _d 0
658    
659  #ifdef USE_EXF_INTERPOLATION  #ifdef USE_EXF_INTERPOLATION
660        ustress_lon0   = thetaMin  C--   set default input location to match (in case of simple Lat-Lonp grid)
661        uwind_lon0     = thetaMin  C     model grid cell-center position (leading to trivial interpolation)
662        vstress_lon0   = thetaMin + delX(1)*exf_half        inp_lon0 = xgOrigin + delX(1)*exf_half
663        hflux_lon0     = thetaMin + delX(1)*exf_half        inp_lat0 = ygOrigin + delY(1)*exf_half
664        sflux_lon0     = thetaMin + delX(1)*exf_half        inp_dLon = delX(1)
665        swflux_lon0    = thetaMin + delX(1)*exf_half        inp_dLat = delY(1)
666        runoff_lon0    = thetaMin + delX(1)*exf_half  
667        atemp_lon0     = thetaMin + delX(1)*exf_half        ustress_lon0   = inp_lon0
668        aqh_lon0       = thetaMin + delX(1)*exf_half        uwind_lon0     = inp_lon0
669        evap_lon0      = thetaMin + delX(1)*exf_half        vstress_lon0   = inp_lon0
670        precip_lon0    = thetaMin + delX(1)*exf_half        hflux_lon0     = inp_lon0
671        snowprecip_lon0= thetaMin + delX(1)*exf_half        sflux_lon0     = inp_lon0
672        vwind_lon0     = thetaMin + delX(1)*exf_half        swflux_lon0    = inp_lon0
673        wspeed_lon0    = thetaMin + delX(1)*exf_half        runoff_lon0    = inp_lon0
674        lwflux_lon0    = thetaMin + delX(1)*exf_half        atemp_lon0     = inp_lon0
675        swdown_lon0    = thetaMin + delX(1)*exf_half        aqh_lon0       = inp_lon0
676        lwdown_lon0    = thetaMin + delX(1)*exf_half        evap_lon0      = inp_lon0
677        apressure_lon0 = thetaMin + delX(1)*exf_half        precip_lon0    = inp_lon0
678        vstress_lat0   = phimin        snowprecip_lon0= inp_lon0
679        vwind_lat0     = phimin        vwind_lon0     = inp_lon0
680        wspeed_lat0    = phimin        wspeed_lon0    = inp_lon0
681        ustress_lat0   = phimin   + delY(1)*exf_half        lwflux_lon0    = inp_lon0
682        hflux_lat0     = phimin   + delY(1)*exf_half        swdown_lon0    = inp_lon0
683        sflux_lat0     = phimin   + delY(1)*exf_half        lwdown_lon0    = inp_lon0
684        runoff_lat0    = phimin   + delY(1)*exf_half        apressure_lon0 = inp_lon0
685        swflux_lat0    = phimin   + delY(1)*exf_half        areamask_lon0  = inp_lon0
686        atemp_lat0     = phimin   + delY(1)*exf_half        vstress_lat0   = inp_lat0
687        aqh_lat0       = phimin   + delY(1)*exf_half        vwind_lat0     = inp_lat0
688        evap_lat0      = phimin   + delY(1)*exf_half        wspeed_lat0    = inp_lat0
689        precip_lat0    = phimin   + delY(1)*exf_half        ustress_lat0   = inp_lat0
690        snowprecip_lat0= phimin   + delY(1)*exf_half        hflux_lat0     = inp_lat0
691        uwind_lat0     = phimin   + delY(1)*exf_half        sflux_lat0     = inp_lat0
692        lwflux_lat0    = phimin   + delY(1)*exf_half        runoff_lat0    = inp_lat0
693        swdown_lat0    = phimin   + delY(1)*exf_half        swflux_lat0    = inp_lat0
694        lwdown_lat0    = phimin   + delY(1)*exf_half        atemp_lat0     = inp_lat0
695        apressure_lat0 = phimin   + delY(1)*exf_half        aqh_lat0       = inp_lat0
696        ustress_nlon   = Nx        evap_lat0      = inp_lat0
697        ustress_nlat   = Ny        precip_lat0    = inp_lat0
698        vstress_nlon   = Nx        snowprecip_lat0= inp_lat0
699        vstress_nlat   = Ny        uwind_lat0     = inp_lat0
700        hflux_nlon     = Nx        lwflux_lat0    = inp_lat0
701        hflux_nlat     = Ny        swdown_lat0    = inp_lat0
702        sflux_nlon     = Nx        lwdown_lat0    = inp_lat0
703        sflux_nlat     = Ny        apressure_lat0 = inp_lat0
704        swflux_nlon    = Nx        areamask_lat0  = inp_lat0
705        swflux_nlat    = Ny        ustress_nlon   = gridNx
706        runoff_nlon    = Nx        ustress_nlat   = gridNy
707        runoff_nlat    = Ny        vstress_nlon   = gridNx
708        atemp_nlon     = Nx        vstress_nlat   = gridNy
709        atemp_nlat     = Ny        hflux_nlon     = gridNx
710        aqh_nlon       = Nx        hflux_nlat     = gridNy
711        aqh_nlat       = Ny        sflux_nlon     = gridNx
712        evap_nlon      = Nx        sflux_nlat     = gridNy
713        evap_nlat      = Ny        swflux_nlon    = gridNx
714        precip_nlon    = Nx        swflux_nlat    = gridNy
715        snowprecip_nlon= Nx        runoff_nlon    = gridNx
716        precip_nlat    = Ny        runoff_nlat    = gridNy
717        snowprecip_nlat= Ny        atemp_nlon     = gridNx
718        uwind_nlon     = Nx        atemp_nlat     = gridNy
719        uwind_nlat     = Ny        aqh_nlon       = gridNx
720        vwind_nlon     = Nx        aqh_nlat       = gridNy
721        vwind_nlat     = Ny        evap_nlon      = gridNx
722        wspeed_nlon    = Nx        evap_nlat      = gridNy
723        wspeed_nlat    = Ny        precip_nlon    = gridNx
724        lwflux_nlon    = Nx        snowprecip_nlon= gridNx
725        lwflux_nlat    = Ny        precip_nlat    = gridNy
726        swdown_nlon    = Nx        snowprecip_nlat= gridNy
727        swdown_nlat    = Ny        uwind_nlon     = gridNx
728        lwdown_nlon    = Nx        uwind_nlat     = gridNy
729        lwdown_nlat    = Ny        vwind_nlon     = gridNx
730        apressure_nlon = Nx        vwind_nlat     = gridNy
731        apressure_nlat = Ny        wspeed_nlon    = gridNx
732        Ustress_lon_inc   = delX(1)        wspeed_nlat    = gridNy
733        vstress_lon_inc   = delX(1)        lwflux_nlon    = gridNx
734        hflux_lon_inc     = delX(1)        lwflux_nlat    = gridNy
735        sflux_lon_inc     = delX(1)        swdown_nlon    = gridNx
736        swflux_lon_inc    = delX(1)        swdown_nlat    = gridNy
737        runoff_lon_inc    = delX(1)        lwdown_nlon    = gridNx
738        atemp_lon_inc     = delX(1)        lwdown_nlat    = gridNy
739        aqh_lon_inc       = delX(1)        apressure_nlon = gridNx
740        evap_lon_inc      = delX(1)        apressure_nlat = gridNy
741        precip_lon_inc    = delX(1)        areamask_nlon  = gridNx
742        snowprecip_lon_inc= delX(1)        areamask_nlat  = gridNy
743        uwind_lon_inc     = delX(1)        ustress_lon_inc   = inp_dLon
744        vwind_lon_inc     = delX(1)        vstress_lon_inc   = inp_dLon
745        wspeed_lon_inc    = delX(1)        hflux_lon_inc     = inp_dLon
746        lwflux_lon_inc    = delX(1)        sflux_lon_inc     = inp_dLon
747        swdown_lon_inc    = delX(1)        swflux_lon_inc    = inp_dLon
748        lwdown_lon_inc    = delX(1)        runoff_lon_inc    = inp_dLon
749        apressure_lon_inc = delX(1)        atemp_lon_inc     = inp_dLon
750        climsst_lon0    = thetaMin + delX(1)*exf_half        aqh_lon_inc       = inp_dLon
751        climsss_lon0    = thetaMin + delX(1)*exf_half        evap_lon_inc      = inp_dLon
752        climsst_lat0    = phimin   + delY(1)*exf_half        precip_lon_inc    = inp_dLon
753        climsss_lat0    = phimin   + delY(1)*exf_half        snowprecip_lon_inc= inp_dLon
754        climsst_nlon    = Nx        uwind_lon_inc     = inp_dLon
755        climsst_nlat    = Ny        vwind_lon_inc     = inp_dLon
756        climsss_nlon    = Nx        wspeed_lon_inc    = inp_dLon
757        climsss_nlat    = Ny        lwflux_lon_inc    = inp_dLon
758        climsst_lon_inc = delX(1)        swdown_lon_inc    = inp_dLon
759        climsss_lon_inc = delX(1)        lwdown_lon_inc    = inp_dLon
760        DO i=1,MAX_LAT_INC        apressure_lon_inc = inp_dLon
761           IF (i.LT.Ny) THEN        areamask_lon_inc  = inp_dLon
762              vstress_lat_inc(i)   =  delY(i)  
763              vwind_lat_inc(i)     =  delY(i)        climsst_lon0    = inp_lon0
764              wspeed_lat_inc(i)    =  delY(i)        climsss_lon0    = inp_lon0
765              ustress_lat_inc(i)   = (delY(i) + delY(i))*exf_half        climustr_lon0   = inp_lon0
766              hflux_lat_inc(i)     = (delY(i) + delY(i))*exf_half        climvstr_lon0   = inp_lon0
767              sflux_lat_inc(i)     = (delY(i) + delY(i))*exf_half        climsst_lat0    = inp_lat0
768              swflux_lat_inc(i)    = (delY(i) + delY(i))*exf_half        climsss_lat0    = inp_lat0
769              runoff_lat_inc(i)    = (delY(i) + delY(i))*exf_half        climustr_lat0   = inp_lat0
770              atemp_lat_inc(i)     = (delY(i) + delY(i))*exf_half        climvstr_lat0   = inp_lat0
771              aqh_lat_inc(i)       = (delY(i) + delY(i))*exf_half        climsst_nlon    = gridNx
772              evap_lat_inc(i)      = (delY(i) + delY(i))*exf_half        climsst_nlat    = gridNy
773              precip_lat_inc(i)    = (delY(i) + delY(i))*exf_half        climsss_nlon    = gridNx
774              snowprecip_lat_inc(i)= (delY(i) + delY(i))*exf_half        climsss_nlat    = gridNy
775              uwind_lat_inc(i)     = (delY(i) + delY(i))*exf_half        climustr_nlon   = gridNx
776              lwflux_lat_inc(i)    = (delY(i) + delY(i))*exf_half        climustr_nlat   = gridNy
777              swdown_lat_inc(i)    = (delY(i) + delY(i))*exf_half        climvstr_nlon   = gridNx
778              lwdown_lat_inc(i)    = (delY(i) + delY(i))*exf_half        climvstr_nlat   = gridNy
779              apressure_lat_inc(i) = (delY(i) + delY(i))*exf_half        climsst_lon_inc = inp_dLon
780              climsst_lat_inc(i)   = (delY(i) + delY(i))*exf_half        climsss_lon_inc = inp_dLon
781              climsss_lat_inc(i)   = (delY(i) + delY(i))*exf_half        climustr_lon_inc= inp_dLon
782           ELSE        climvstr_lon_inc= inp_dLon
783              ustress_lat_inc(i)   = 0.  
784              vstress_lat_inc(i)   = 0.        DO j=1,MAX_LAT_INC
785              hflux_lat_inc(i)     = 0.          IF (j.LT.gridNy) THEN
786              sflux_lat_inc(i)     = 0.            inp_dLat = (delY(j) + delY(j+1))*exf_half
787              swflux_lat_inc(i)    = 0.          ELSE
788              runoff_lat_inc(i)    = 0.            inp_dLat = 0.
789              atemp_lat_inc(i)     = 0.          ENDIF
790              aqh_lat_inc(i)       = 0.          ustress_lat_inc(j)   = inp_dLat
791              evap_lat_inc(i)      = 0.          vstress_lat_inc(j)   = inp_dLat
792              precip_lat_inc(i)    = 0.          hflux_lat_inc(j)     = inp_dLat
793              snowprecip_lat_inc(i)= 0.          sflux_lat_inc(j)     = inp_dLat
794              uwind_lat_inc(i)     = 0.          swflux_lat_inc(j)    = inp_dLat
795              vwind_lat_inc(i)     = 0.          runoff_lat_inc(j)    = inp_dLat
796              wspeed_lat_inc(i)    = 0.          atemp_lat_inc(j)     = inp_dLat
797              lwflux_lat_inc(i)    = 0.          aqh_lat_inc(j)       = inp_dLat
798              swdown_lat_inc(i)    = 0.          evap_lat_inc(j)      = inp_dLat
799              lwdown_lat_inc(i)    = 0.          precip_lat_inc(j)    = inp_dLat
800              apressure_lat_inc(i) = 0.          snowprecip_lat_inc(j)= inp_dLat
801              climsst_lat_inc(i)   = 0.          uwind_lat_inc(j)     = inp_dLat
802              climsss_lat_inc(i)   = 0.          vwind_lat_inc(j)     = inp_dLat
803           ENDIF          wspeed_lat_inc(j)    = inp_dLat
804            lwflux_lat_inc(j)    = inp_dLat
805            swdown_lat_inc(j)    = inp_dLat
806            lwdown_lat_inc(j)    = inp_dLat
807            apressure_lat_inc(j) = inp_dLat
808            areamask_lat_inc(j)  = inp_dLat
809            climsst_lat_inc(j)   = inp_dLat
810            climsss_lat_inc(j)   = inp_dLat
811            climustr_lat_inc(j)  = inp_dLat
812            climvstr_lat_inc(j)  = inp_dLat
813        ENDDO        ENDDO
814    
815          ustress_interpMethod   = 12
816          vstress_interpMethod   = 22
817          hflux_interpMethod     =  1
818          sflux_interpMethod     =  1
819          swflux_interpMethod    =  1
820          runoff_interpMethod    =  1
821          atemp_interpMethod     =  1
822          aqh_interpMethod       =  1
823          evap_interpMethod      =  1
824          precip_interpMethod    =  1
825          snowprecip_interpMethod=  1
826          uwind_interpMethod     = 12
827          vwind_interpMethod     = 22
828          wspeed_interpMethod    =  1
829          lwflux_interpMethod    =  1
830          swdown_interpMethod    =  1
831          lwdown_interpMethod    =  1
832          apressure_interpMethod =  1
833          areamask_interpMethod  =  1
834          climsst_interpMethod   =  2
835          climsss_interpMethod   =  2
836          climustr_interpMethod  = 12
837          climvstr_interpMethod  = 22
838    
839  #endif /* USE_EXF_INTERPOLATION */  #endif /* USE_EXF_INTERPOLATION */
840    
841  c     Next, read the forcing data file.  C     Next, read the forcing data file.
842        WRITE(msgBuf,'(A)') 'EXF_READPARMS: opening data.exf'        WRITE(msgBuf,'(A)') 'EXF_READPARMS: opening data.exf'
843        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
844       &     SQUEEZE_RIGHT , 1)       &     SQUEEZE_RIGHT , 1)
# Line 673  c     Next, read the forcing data file. Line 848  c     Next, read the forcing data file.
848       O                          iUnit,       O                          iUnit,
849       I                          myThid )       I                          myThid )
850    
851        WRITE(msgBuf,'(A)')        WRITE(msgBuf,'(A)')
852       &     'EXF_READPARMS: reading EXF_NML_01'       &     'EXF_READPARMS: reading EXF_NML_01'
853        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
854       &     SQUEEZE_RIGHT , 1)       &     SQUEEZE_RIGHT , 1)
855        READ(  iUnit, nml = EXF_NML_01 )        READ(  iUnit, nml = EXF_NML_01 )
856        WRITE(msgBuf,'(A)')        WRITE(msgBuf,'(A)')
857       &     'EXF_READPARMS: reading EXF_NML_02'       &     'EXF_READPARMS: reading EXF_NML_02'
858        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
859       &     SQUEEZE_RIGHT , 1)       &     SQUEEZE_RIGHT , 1)
860        READ(  iUnit, nml = EXF_NML_02 )        READ(  iUnit, nml = EXF_NML_02 )
861        WRITE(msgBuf,'(A)')        WRITE(msgBuf,'(A)')
862       &     'EXF_READPARMS: reading EXF_NML_03'       &     'EXF_READPARMS: reading EXF_NML_03'
863        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
864       &     SQUEEZE_RIGHT , 1)       &     SQUEEZE_RIGHT , 1)
865        READ(  iUnit, nml = EXF_NML_03 )        READ(  iUnit, nml = EXF_NML_03 )
866        WRITE(msgBuf,'(A)')  #ifdef USE_EXF_INTERPOLATION
867          WRITE(msgBuf,'(A)')
868       &     'EXF_READPARMS: reading EXF_NML_04'       &     'EXF_READPARMS: reading EXF_NML_04'
869        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
870       &     SQUEEZE_RIGHT , 1)       &     SQUEEZE_RIGHT , 1)
871        READ(  iUnit, nml = EXF_NML_04 )        READ(  iUnit, nml = EXF_NML_04 )
872    #endif /* USE_EXF_INTERPOLATION */
873    
874    #ifdef ALLOW_ICEFRONT
875          IF ( useIcefront ) THEN
876           WRITE(msgBuf,'(A)')
877         &      'EXF_READPARMS: reading EXF_NML_SGRUNOFF'
878           CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
879         &      SQUEEZE_RIGHT , 1)
880           READ(  iUnit, nml = EXF_NML_SGRUNOFF )
881          ENDIF
882    #endif /* ALLOW_ICEFRONT */
883    
884  #ifdef ALLOW_OBCS  #ifdef ALLOW_OBCS
885        WRITE(msgBuf,'(A)')        IF ( useOBCS ) THEN
886       &     'EXF_READPARMS: reading EXF_NML_OBCS'         WRITE(msgBuf,'(A)')
887        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,       &      'EXF_READPARMS: reading EXF_NML_OBCS'
888       &     SQUEEZE_RIGHT , 1)         CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
889        READ(  iUnit, nml = EXF_NML_OBCS )       &      SQUEEZE_RIGHT , 1)
890        IF(siobNstartdate1.EQ.UNSET_I ) siobNstartdate1 = obcsNstartdate1         READ(  iUnit, nml = EXF_NML_OBCS )
891        IF(siobNstartdate2.EQ.UNSET_I ) siobNstartdate2 = obcsNstartdate2        ENDIF
892        IF(siobNperiod    .EQ.UNSET_RL) siobNperiod     = obcsNperiod         IF(siobNstartdate1.EQ.UNSET_I ) siobNstartdate1=obcsNstartdate1
893        IF(siobSstartdate1.EQ.UNSET_I ) siobSstartdate1 = obcsSstartdate1         IF(siobNstartdate2.EQ.UNSET_I ) siobNstartdate2=obcsNstartdate2
894        IF(siobSstartdate2.EQ.UNSET_I ) siobSstartdate2 = obcsSstartdate2         IF(siobNperiod    .EQ.UNSET_RL) siobNperiod    =obcsNperiod
895        IF(siobSperiod    .EQ.UNSET_RL) siobSperiod     = obcsSperiod         IF(siobSstartdate1.EQ.UNSET_I ) siobSstartdate1=obcsSstartdate1
896        IF(siobEstartdate1.EQ.UNSET_I ) siobEstartdate1 = obcsEstartdate1         IF(siobSstartdate2.EQ.UNSET_I ) siobSstartdate2=obcsSstartdate2
897        IF(siobEstartdate2.EQ.UNSET_I ) siobEstartdate2 = obcsEstartdate2         IF(siobSperiod    .EQ.UNSET_RL) siobSperiod    =obcsSperiod
898        IF(siobEperiod    .EQ.UNSET_RL) siobEperiod     = obcsEperiod         IF(siobEstartdate1.EQ.UNSET_I ) siobEstartdate1=obcsEstartdate1
899        IF(siobWstartdate1.EQ.UNSET_I ) siobWstartdate1 = obcsWstartdate1         IF(siobEstartdate2.EQ.UNSET_I ) siobEstartdate2=obcsEstartdate2
900        IF(siobWstartdate2.EQ.UNSET_I ) siobWstartdate2 = obcsWstartdate2         IF(siobEperiod    .EQ.UNSET_RL) siobEperiod    =obcsEperiod
901        IF(siobWperiod    .EQ.UNSET_RL) siobWperiod     = obcsWperiod         IF(siobWstartdate1.EQ.UNSET_I ) siobWstartdate1=obcsWstartdate1
902  #endif         IF(siobWstartdate2.EQ.UNSET_I ) siobWstartdate2=obcsWstartdate2
903           IF(siobWperiod    .EQ.UNSET_RL) siobWperiod    =obcsWperiod
904    
905           IF(exf_iprec_obcs .EQ. UNSET_I) exf_iprec_obcs =exf_iprec
906    #endif /* ALLOW_OBCS */
907    
908        WRITE(msgBuf,'(A)')        WRITE(msgBuf,'(A)')
909       &     'EXF_READPARMS: finished reading data.exf'       &     'EXF_READPARMS: finished reading data.exf'
910        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
911       &                SQUEEZE_RIGHT , 1)       &                SQUEEZE_RIGHT , 1)
912    
913        CLOSE( iUnit )        CLOSE( iUnit )
914    
915    C--   Retired parameters
916          IF ( exf_yftype.NE.'RL' ) THEN
917           STOP 'S/R EXF_READPARAMS: value of exf_yftype not allowed'
918          ENDIF
919    
920  C--   Derive other parameters:  C--   Derive other parameters:
921          IF ( exf_verbose ) exf_debugLev = MAX( exf_debugLev, debLevD )
922        hq = ht        hq = ht
 #if ( ( defined (ALLOW_BULKFORMULAE) && defined (ALLOW_ATM_WIND) ) \  
      || defined (USE_EXF_INTERPOLATION) )  
       stressIsOnCgrid = .FALSE.  
 #else  
923        stressIsOnCgrid = readStressOnCgrid        stressIsOnCgrid = readStressOnCgrid
924    #if ( defined (ALLOW_BULKFORMULAE) )
925          IF ( useAtmWind ) stressIsOnCgrid = .FALSE.
926  #endif  #endif
927    #ifdef USE_EXF_INTERPOLATION
928          IF ( (ustress_interpMethod.GE.1 .AND. ustressfile.NE.' ') .OR.
929         &     (vstress_interpMethod.GE.1 .AND. vstressfile.NE.' ') )
930         &   stressIsOnCgrid = .FALSE.
931    #endif /* USE_EXF_INTERPOLATION */
932    
933        CALL EXF_CHECK( myThid )        IF ( select_ZenAlbedo.GT.0 ) THEN
934               useExfZenAlbedo=.TRUE.
935          ENDIf
936    
937    C--   Overwrite tauThetaClimRelax but stop if already set.
938    C- Note: need this, even if EXF option ALLOW_CLIMSST_RELAXATION is undef;
939    C        this prevents to apply relaxation towards potentially wrong SST since,
940    C        with EXF, we skip the update of loaded SST in EXTERNAL_FIELDS_LOAD.
941    C- Note2: let s see whether we can put this back under ifdef
942    C        ALLOW_CLIMSST_RELAXATION, but always call EXTERNAL_FIELDS_LOAD.
943    C        If ALLOW_CLIMSST_RELAXATION is undef, clim.relaxation could still
944    C        be done outside of exf.
945    #ifdef ALLOW_CLIMSST_RELAXATION
946          IF ( tauThetaClimRelax.NE.0. _d 0 ) THEN
947            WRITE(msgBuf,'(2A)') 'EXF_READPARMS: ',
948         &   'with EXF, cannot use "tauThetaClimRelax" in "data"'
949            CALL PRINT_ERROR( msgBuf, myThid )
950            WRITE(msgBuf,'(2A)') 'since SST relax. is handled by EXF',
951         &   ' (data.exf, "climsstTauRelax")'
952            CALL PRINT_ERROR( msgBuf, myThid )
953            STOP 'ABNORMAL END: S/R EXF_READPARMS'
954          ENDIF
955          tauThetaClimRelax = climsstTauRelax
956    #endif
957    
958    #ifdef ALLOW_CLIMSSS_RELAXATION
959    C--   Overwrite tauSaltClimRelax but stop if already set.
960          IF ( tauSaltClimRelax.NE.0. _d 0 ) THEN
961            WRITE(msgBuf,'(2A)') 'EXF_READPARMS: ',
962         &   'with EXF, cannot use "tauSaltClimRelax" in "data"'
963            CALL PRINT_ERROR( msgBuf, myThid )
964            WRITE(msgBuf,'(2A)') 'since SSS relax. is handled by EXF',
965         &   ' (data.exf, "climsssTauRelax")'
966            CALL PRINT_ERROR( msgBuf, myThid )
967            STOP 'ABNORMAL END: S/R EXF_READPARMS'
968          ENDIF
969          tauSaltClimRelax = climsssTauRelax
970    #endif
971    
972  c     Complete the start date specifications for the forcing  C     Complete the start date specifications for the forcing
973  c     fields to get a complete calendar date array.  C     fields to get a complete calendar date array.
974  C     => moved to EXF_INIT_FIXED  C     => moved to EXF_INIT_FIXED
975    
976        _END_MASTER( mythid )        _END_MASTER( myThid )
977        _BARRIER        _BARRIER
978    
979        RETURN        RETURN

Legend:
Removed from v.1.50  
changed lines
  Added in v.1.80

  ViewVC Help
Powered by ViewVC 1.1.22