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

Contents 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 - (show 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 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