/[MITgcm]/MITgcm_contrib/dcarroll/highres_darwin/code/exf_init_varia.F
ViewVC logotype

Annotation of /MITgcm_contrib/dcarroll/highres_darwin/code/exf_init_varia.F

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


Revision 1.1 - (hide annotations) (download)
Sun Sep 22 21:23:46 2019 UTC (5 years, 10 months ago) by dcarroll
Branch: MAIN
CVS Tags: HEAD
Initial check in of high resolution Darwin simulation code

1 dcarroll 1.1 C $Header: /u/gcmpack/MITgcm_contrib/ecco_darwin/v4_llc270/code_darwin/exf_init_varia.F,v 1.1 2017/12/01 19:02:11 dimitri Exp $
2     C $Name: $
3    
4     #include "EXF_OPTIONS.h"
5    
6     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
7    
8     CBOP
9     C !ROUTINE: EXF_INIT_VARIA
10     C !INTERFACE:
11     SUBROUTINE EXF_INIT_VARIA( myThid )
12    
13     C !DESCRIPTION: \bv
14     C *=================================================================*
15     C | SUBROUTINE EXF_INIT_VARIA
16     C | o This routine initialises the forcing
17     C *=================================================================*
18     C | started: Ralf.Giering@FastOpt.de 25-Mai-20000
19     C | mods for pkg/seaice: menemenlis@jpl.nasa.gov 20-Dec-2002
20     C *=================================================================*
21     C \ev
22    
23     C !USES:
24     IMPLICIT NONE
25     C == global variables ==
26     #include "EEPARAMS.h"
27     #include "SIZE.h"
28     #include "GRID.h"
29     #include "EXF_PARAM.h"
30     #include "EXF_FIELDS.h"
31     #ifdef ALLOW_BULK_OFFLINE
32     # include "PARAMS.h"
33     # include "DYNVARS.h"
34     #endif
35    
36     C !INPUT/OUTPUT PARAMETERS:
37     C myThid :: My Thread Id number
38     INTEGER myThid
39    
40     C !LOCAL VARIABLES:
41     INTEGER i,j,bi,bj
42     CEOP
43    
44     C-- Initialise to zero intermediate fields (in common block)
45     DO bj = myByLo(myThid), myByHi(myThid)
46     DO bi = myBxLo(myThid), myBxHi(myThid)
47     DO j=1-OLy,sNy+OLy
48     DO i=1-OLx,sNx+OLx
49     wStress(i,j,bi,bj) = 0.
50     cw(i,j,bi,bj) = 0.
51     sw(i,j,bi,bj) = 0.
52     sh(i,j,bi,bj) = 0.
53     #ifdef ALLOW_ATM_TEMP
54     hs(i,j,bi,bj) = 0.
55     hl(i,j,bi,bj) = 0.
56     #endif
57     ENDDO
58     ENDDO
59     ENDDO
60     ENDDO
61    
62     IF ( .NOT.useAtmWind ) THEN
63     C- Note: In case of constant-in-time wind-stress ( u,v stressperiod = 0 &
64     C u,v stressfile.NE.' ' ) interpolated from 2-component wind-stress field
65     C with ( usingCurvilinearGrid .OR. rotateGrid .OR. uvInterp_stress )
66     C this initial setting of ustress & vstress (+ ustress0,1 & vstress0,1)
67     C will be over-written at first time-step when calling EXF_SET_UV.
68     CALL EXF_INIT_FLD(
69     I 'ustress', ustressfile, ustressmask,
70     I ustressperiod, exf_inscal_ustress, ustressconst,
71     O ustress, ustress0, ustress1,
72     #ifdef USE_EXF_INTERPOLATION
73     I ustress_lon0, ustress_lon_inc,
74     I ustress_lat0, ustress_lat_inc,
75     I ustress_nlon, ustress_nlat, xC, yC, ustress_interpMethod,
76     #endif
77     I myThid )
78    
79     CALL EXF_INIT_FLD(
80     I 'vstress', vstressfile, vstressmask,
81     I vstressperiod, exf_inscal_vstress, vstressconst,
82     O vstress, vstress0, vstress1,
83     #ifdef USE_EXF_INTERPOLATION
84     I vstress_lon0, vstress_lon_inc,
85     I vstress_lat0, vstress_lat_inc,
86     I vstress_nlon, vstress_nlat, xC, yC, vstress_interpMethod,
87     #endif
88     I myThid )
89    
90     ELSE
91     DO bj = myByLo(myThid), myByHi(myThid)
92     DO bi = myBxLo(myThid), myBxHi(myThid)
93     DO j=1-OLy,sNy+OLy
94     DO i=1-OLx,sNx+OLx
95     uwind(i,j,bi,bj) = 0.
96     vwind(i,j,bi,bj) = 0.
97     ENDDO
98     ENDDO
99     ENDDO
100     ENDDO
101     ENDIF
102    
103     IF ( useAtmWind ) THEN
104     C- Note: In case of constant-in-time winds ( u,v windperiod = 0 &
105     C u,v windfile.NE.' ' ) interpolated from 2-component wind field
106     C with ( usingCurvilinearGrid .OR. rotateGrid .OR. uvInterp_wind )
107     C this initial setting of uwind & vwind (+ uwind0,1 & vwind0,1)
108     C will be over-written at first time-step when calling EXF_SET_UV.
109     CALL EXF_INIT_FLD(
110     I 'uwind', uwindfile, uwindmask,
111     I uwindperiod, exf_inscal_uwind, uwindconst,
112     O uwind, uwind0, uwind1,
113     #ifdef USE_EXF_INTERPOLATION
114     I uwind_lon0, uwind_lon_inc,
115     I uwind_lat0, uwind_lat_inc,
116     I uwind_nlon, uwind_nlat, xC, yC, uwind_interpMethod,
117     #endif
118     I myThid )
119    
120     CALL EXF_INIT_FLD(
121     I 'vwind', vwindfile, vwindmask,
122     I vwindperiod, exf_inscal_vwind, vwindconst,
123     O vwind, vwind0, vwind1,
124     #ifdef USE_EXF_INTERPOLATION
125     I vwind_lon0, vwind_lon_inc,
126     I vwind_lat0, vwind_lat_inc,
127     I vwind_nlon, vwind_nlat, xC, yC, vwind_interpMethod,
128     #endif
129     I myThid )
130    
131     ELSE
132     DO bj = myByLo(myThid), myByHi(myThid)
133     DO bi = myBxLo(myThid), myBxHi(myThid)
134     DO j=1-OLy,sNy+OLy
135     DO i=1-OLx,sNx+OLx
136     uwind(i,j,bi,bj) = 0.
137     vwind(i,j,bi,bj) = 0.
138     ENDDO
139     ENDDO
140     ENDDO
141     ENDDO
142     ENDIF
143    
144     CALL EXF_INIT_FLD(
145     I 'wspeed', wspeedfile, wspeedmask,
146     I wspeedperiod, exf_inscal_wspeed, wspeedconst,
147     O wspeed, wspeed0, wspeed1,
148     #ifdef USE_EXF_INTERPOLATION
149     I wspeed_lon0, wspeed_lon_inc,
150     I wspeed_lat0, wspeed_lat_inc,
151     I wspeed_nlon, wspeed_nlat, xC, yC, wspeed_interpMethod,
152     #endif
153     I myThid )
154    
155     CALL EXF_INIT_FLD(
156     I 'hflux', hfluxfile, hfluxmask,
157     I hfluxperiod, exf_inscal_hflux, hfluxconst,
158     O hflux, hflux0, hflux1,
159     #ifdef USE_EXF_INTERPOLATION
160     I hflux_lon0, hflux_lon_inc,
161     I hflux_lat0, hflux_lat_inc,
162     I hflux_nlon, hflux_nlat, xC, yC, hflux_interpMethod,
163     #endif
164     I myThid )
165    
166     CALL EXF_INIT_FLD(
167     I 'sflux', sfluxfile, sfluxmask,
168     I sfluxperiod, exf_inscal_sflux, sfluxconst,
169     O sflux, sflux0, sflux1,
170     #ifdef USE_EXF_INTERPOLATION
171     I sflux_lon0, sflux_lon_inc,
172     I sflux_lat0, sflux_lat_inc,
173     I sflux_nlon, sflux_nlat, xC, yC, sflux_interpMethod,
174     #endif
175     I myThid )
176    
177     #ifdef ALLOW_ATM_TEMP
178    
179     CALL EXF_INIT_FLD(
180     I 'atemp', atempfile, atempmask,
181     I atempperiod, exf_inscal_atemp, atempconst,
182     O atemp, atemp0, atemp1,
183     #ifdef USE_EXF_INTERPOLATION
184     I atemp_lon0, atemp_lon_inc,
185     I atemp_lat0, atemp_lat_inc,
186     I atemp_nlon, atemp_nlat, xC, yC, atemp_interpMethod,
187     #endif
188     I myThid )
189    
190     CALL EXF_INIT_FLD(
191     I 'aqh', aqhfile, aqhmask,
192     I aqhperiod, exf_inscal_aqh, aqhconst,
193     O aqh, aqh0, aqh1,
194     #ifdef USE_EXF_INTERPOLATION
195     I aqh_lon0, aqh_lon_inc,
196     I aqh_lat0, aqh_lat_inc,
197     I aqh_nlon, aqh_nlat, xC, yC, aqh_interpMethod,
198     #endif
199     I myThid )
200    
201     # ifdef ALLOW_READ_TURBFLUXES
202    
203     CALL EXF_INIT_FLD(
204     I 'hs', hs_file, hs_mask,
205     I hs_period, exf_inscal_hs, hs_const,
206     O hs, hs0, hs1,
207     # ifdef USE_EXF_INTERPOLATION
208     I hs_lon0, hs_lon_inc,
209     I hs_lat0, hs_lat_inc,
210     I hs_nlon, hs_nlat, xC, yC, hs_interpMethod,
211     # endif
212     I myThid )
213    
214     CALL EXF_INIT_FLD(
215     I 'hl', hl_file, hl_mask,
216     I hl_period, exf_inscal_hl, hl_const,
217     O hl, hl0, hl1,
218     # ifdef USE_EXF_INTERPOLATION
219     I hl_lon0, hl_lon_inc,
220     I hl_lat0, hl_lat_inc,
221     I hl_nlon, hl_nlat, xC, yC, hl_interpMethod,
222     # endif
223     I myThid )
224    
225     # endif /* ALLOW_READ_TURBFLUXES */
226    
227     CALL EXF_INIT_FLD(
228     I 'lwflux', lwfluxfile, lwfluxmask,
229     I lwfluxperiod, exf_inscal_lwflux, lwfluxconst,
230     O lwflux, lwflux0, lwflux1,
231     #ifdef USE_EXF_INTERPOLATION
232     I lwflux_lon0, lwflux_lon_inc,
233     I lwflux_lat0, lwflux_lat_inc,
234     I lwflux_nlon, lwflux_nlat, xC, yC, lwflux_interpMethod,
235     #endif
236     I myThid )
237    
238     #ifdef EXF_READ_EVAP
239     CALL EXF_INIT_FLD(
240     I 'evap', evapfile, evapmask,
241     I evapperiod, exf_inscal_evap, evapconst,
242     O evap, evap0, evap1,
243     #ifdef USE_EXF_INTERPOLATION
244     I evap_lon0, evap_lon_inc,
245     I evap_lat0, evap_lat_inc,
246     I evap_nlon, evap_nlat, xC, yC, evap_interpMethod,
247     #endif
248     I myThid )
249     #endif /* EXF_READ_EVAP */
250    
251     CALL EXF_INIT_FLD(
252     I 'precip', precipfile, precipmask,
253     I precipperiod, exf_inscal_precip, precipconst,
254     O precip, precip0, precip1,
255     #ifdef USE_EXF_INTERPOLATION
256     I precip_lon0, precip_lon_inc,
257     I precip_lat0, precip_lat_inc,
258     I precip_nlon, precip_nlat, xC, yC, precip_interpMethod,
259     #endif
260     I myThid )
261    
262     CALL EXF_INIT_FLD(
263     I 'snowprecip', snowprecipfile, snowprecipmask,
264     I snowprecipperiod, exf_inscal_snowprecip, snowprecipconst,
265     O snowprecip, snowprecip0, snowprecip1,
266     #ifdef USE_EXF_INTERPOLATION
267     I snowprecip_lon0, snowprecip_lon_inc,
268     I snowprecip_lat0, snowprecip_lat_inc,
269     I snowprecip_nlon, snowprecip_nlat, xC, yC,
270     I snowprecip_interpMethod,
271     #endif
272     I myThid )
273    
274     #endif /* ALLOW_ATM_TEMP */
275    
276     #if defined(ALLOW_ATM_TEMP) || defined(SHORTWAVE_HEATING)
277     CALL EXF_INIT_FLD(
278     I 'swflux', swfluxfile, swfluxmask,
279     I swfluxperiod, exf_inscal_swflux, swfluxconst,
280     O swflux, swflux0, swflux1,
281     #ifdef USE_EXF_INTERPOLATION
282     I swflux_lon0, swflux_lon_inc,
283     I swflux_lat0, swflux_lat_inc,
284     I swflux_nlon, swflux_nlat, xC, yC, swflux_interpMethod,
285     #endif
286     I myThid )
287     #endif /* defined(ALLOW_ATM_TEMP) || defined(SHORTWAVE_HEATING) */
288    
289     #ifdef ALLOW_DOWNWARD_RADIATION
290    
291     CALL EXF_INIT_FLD(
292     I 'swdown', swdownfile, swdownmask,
293     I swdownperiod, exf_inscal_swdown, swdownconst,
294     O swdown, swdown0, swdown1,
295     #ifdef USE_EXF_INTERPOLATION
296     I swdown_lon0, swdown_lon_inc,
297     I swdown_lat0, swdown_lat_inc,
298     I swdown_nlon, swdown_nlat, xC, yC, swdown_interpMethod,
299     #endif
300     I myThid )
301    
302     CALL EXF_INIT_FLD(
303     I 'lwdown', lwdownfile, lwdownmask,
304     I lwdownperiod, exf_inscal_lwdown, lwdownconst,
305     O lwdown, lwdown0, lwdown1,
306     #ifdef USE_EXF_INTERPOLATION
307     I lwdown_lon0, lwdown_lon_inc,
308     I lwdown_lat0, lwdown_lat_inc,
309     I lwdown_nlon, lwdown_nlat, xC, yC, lwdown_interpMethod,
310     #endif
311     I myThid )
312    
313     #endif /* ALLOW_DOWNWARD_RADIATION */
314    
315     #ifdef ATMOSPHERIC_LOADING
316     CALL EXF_INIT_FLD(
317     I 'apressure', apressurefile, apressuremask,
318     I apressureperiod, exf_inscal_apressure, apressureconst,
319     O apressure, apressure0, apressure1,
320     #ifdef USE_EXF_INTERPOLATION
321     I apressure_lon0, apressure_lon_inc,
322     I apressure_lat0, apressure_lat_inc,
323     I apressure_nlon, apressure_nlat, xC, yC,
324     I apressure_interpMethod,
325     #endif
326     I myThid )
327     #endif /* ATMOSPHERIC_LOADING */
328    
329     #ifdef EXF_ALLOW_TIDES
330     CALL EXF_INIT_FLD(
331     I 'tidePot', tidePotFile, tidePotMask,
332     I tidePotPeriod, exf_inscal_tidePot, tidePotconst,
333     O tidePot, tidePot0, tidePot1,
334     #ifdef USE_EXF_INTERPOLATION
335     I tidePot_lon0, tidePot_lon_inc,
336     I tidePot_lat0, tidePot_lat_inc,
337     I tidePot_nlon, tidePot_nlat, xC, yC, tidePot_interpMethod,
338     #endif
339     I myThid )
340     #endif /* EXF_ALLOW_TIDES */
341    
342     #ifdef EXF_SEAICE_FRACTION
343     CALL EXF_INIT_FLD(
344     I 'areamask', areamaskfile, areamaskmask,
345     I areamaskperiod, exf_inscal_areamask, areamaskconst,
346     O areamask, areamask0, areamask1,
347     #ifdef USE_EXF_INTERPOLATION
348     I areamask_lon0, areamask_lon_inc,
349     I areamask_lat0, areamask_lat_inc,
350     I areamask_nlon, areamask_nlat, xC, yC, areamask_interpMethod,
351     #endif
352     I myThid )
353     #endif /* EXF_SEAICE_FRACTION */
354    
355     #ifdef ALLOW_RUNOFF
356     CALL EXF_INIT_FLD(
357     I 'runoff', runofffile, runoffmask,
358     I runoffperiod, exf_inscal_runoff, runoffconst,
359     O runoff, runoff0, runoff1,
360     # ifdef USE_EXF_INTERPOLATION
361     I runoff_lon0, runoff_lon_inc,
362     I runoff_lat0, runoff_lat_inc,
363     I runoff_nlon, runoff_nlat, xC, yC, runoff_interpMethod,
364     # endif
365     I myThid )
366     # ifdef ALLOW_RUNOFTEMP
367     CALL EXF_INIT_FLD(
368     I 'runoftemp', runoftempfile, runoffmask,
369     I runoffperiod, exf_inscal_runoftemp, runoftempconst,
370     O runoftemp, runoftemp0, runoftemp1,
371     # ifdef USE_EXF_INTERPOLATION
372     I runoff_lon0, runoff_lon_inc,
373     I runoff_lat0, runoff_lat_inc,
374     I runoff_nlon, runoff_nlat, xC, yC, runoff_interpMethod,
375     # endif
376     I myThid )
377     # endif /* ALLOW_RUNOFTEMP */
378     #endif /* ALLOW_RUNOFF */
379    
380     #ifdef ALLOW_SALTFLX
381     CALL EXF_INIT_FLD(
382     I 'saltflx', saltflxfile, saltflxmask,
383     I saltflxperiod, exf_inscal_saltflx, saltflxconst,
384     O saltflx, saltflx0, saltflx1,
385     #ifdef USE_EXF_INTERPOLATION
386     I saltflx_lon0, saltflx_lon_inc,
387     I saltflx_lat0, saltflx_lat_inc,
388     I saltflx_nlon, saltflx_nlat, xC, yC, saltflx_interpMethod,
389     #endif
390     I myThid )
391     #endif /* ALLOW_SALTFLX */
392    
393     #ifdef ALLOW_CLIMSST_RELAXATION
394     CALL EXF_INIT_FLD(
395     I 'climsst', climsstfile, climsstmask,
396     I climsstperiod, exf_inscal_climsst, climsstconst,
397     O climsst, climsst0, climsst1,
398     #ifdef USE_EXF_INTERPOLATION
399     I climsst_lon0, climsst_lon_inc,
400     I climsst_lat0, climsst_lat_inc,
401     I climsst_nlon, climsst_nlat, xC, yC, climsst_interpMethod,
402     #endif
403     I myThid )
404     #endif
405    
406     #ifdef ALLOW_CLIMSSS_RELAXATION
407     CALL EXF_INIT_FLD(
408     I 'climsss', climsssfile, climsssmask,
409     I climsssperiod, exf_inscal_climsss, climsssconst,
410     O climsss, climsss0, climsss1,
411     #ifdef USE_EXF_INTERPOLATION
412     I climsss_lon0, climsss_lon_inc,
413     I climsss_lat0, climsss_lat_inc,
414     I climsss_nlon, climsss_nlat, xC, yC, climsss_interpMethod,
415     #endif
416     I myThid )
417     #endif
418    
419     #ifdef ALLOW_CLIMSTRESS_RELAXATION
420     CALL EXF_INIT_FLD(
421     I 'climustr', climustrfile, climustrmask,
422     I climustrperiod, exf_inscal_climustr, climustrconst,
423     O climustr, climustr0, climustr1,
424     #ifdef USE_EXF_INTERPOLATION
425     I climustr_lon0, climustr_lon_inc,
426     I climustr_lat0, climustr_lat_inc,
427     I climustr_nlon, climustr_nlat, xC, yC, climustr_interpMethod,
428     #endif
429     I myThid )
430    
431     CALL EXF_INIT_FLD(
432     I 'climvstr', climvstrfile, climvstrmask,
433     I climvstrperiod, exf_inscal_climvstr, climvstrconst,
434     O climvstr, climvstr0, climvstr1,
435     #ifdef USE_EXF_INTERPOLATION
436     I climvstr_lon0, climvstr_lon_inc,
437     I climvstr_lat0, climvstr_lat_inc,
438     I climvstr_nlon, climvstr_nlat, xC, yC, climvstr_interpMethod,
439     #endif
440     I myThid )
441     #endif /* CLIMSTRESS_RELAXATION */
442    
443     #ifdef ALLOW_BULK_OFFLINE
444     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
445    
446     # ifdef ALLOW_CLIMSST_RELAXATION
447     _EXCH_XY_RL(climsst, myThid)
448     # endif
449     # ifdef ALLOW_CLIMSSS_RELAXATION
450     _EXCH_XY_RL(climsss, myThid)
451     # endif
452     # ifdef ALLOW_CLIMSTRESS_RELAXATION
453     CALL EXCH_UV_XY_RL( climustr, climvstr, .TRUE., myThid )
454     # endif
455     DO bj=myByLo(myThid),myByHi(myThid)
456     DO bi=myBxLo(myThid),myBxHi(myThid)
457     DO j=1-oLy,sNy+oLy
458     DO i=1-oLx,sNx+oLx
459     # ifdef ALLOW_CLIMSST_RELAXATION
460     IF ( climsstfile .NE. ' ' .AND.
461     & climsstperiod .EQ. 0. )
462     & theta(i,j,1,bi,bj) = climsst(i,j,bi,bj)
463     # endif
464     # ifdef ALLOW_CLIMSSS_RELAXATION
465     IF ( climsssfile .NE. ' ' .AND.
466     & climsssperiod .EQ. 0. )
467     & salt(i,j,1,bi,bj) = climsss(i,j,bi,bj)
468     # endif
469     # ifdef ALLOW_CLIMSTRESS_RELAXATION
470     IF ( climustrfile .NE. ' ' .AND.
471     & climustrperiod .EQ. 0. )
472     & uvel(i,j,1,bi,bj) = climustr(i,j,bi,bj)
473     IF ( climvstrfile .NE. ' ' .AND.
474     & climvstrperiod .EQ. 0. )
475     & vvel(i,j,1,bi,bj) = climvstr(i,j,bi,bj)
476     # endif
477     IF ( maskC(i,j,1,bi,bj) .NE. 0. .AND.
478     & theta(i,j,1,bi,bj) .EQ. 0. ) then
479     print *, 'ph-warn-exf-init ', i, j, theta(i,j,1,bi,bj)
480     cph STOP 'in exf_init'
481     endif
482     ENDDO
483     ENDDO
484     ENDDO
485     ENDDO
486    
487     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
488     #endif /* ALLOW_BULK_OFFLINE */
489    
490     CALL EXF_INIT_FLD(
491     I 'apco2', apco2file, apco2mask,
492     I apco2period, exf_inscal_apco2, apco2const,
493     O apco2, apco20, apco21,
494     # ifdef USE_EXF_INTERPOLATION
495     I apco2_lon0, apco2_lon_inc,
496     I apco2_lat0, apco2_lat_inc,
497     I apco2_nlon, apco2_nlat, xC, yC, apco2_interpMethod,
498     # endif
499     I myThid )
500    
501     RETURN
502     END

  ViewVC Help
Powered by ViewVC 1.1.22