/[MITgcm]/MITgcm_contrib/ecco_darwin/v2_cs510_Brix/code/exf_init.F
ViewVC logotype

Contents of /MITgcm_contrib/ecco_darwin/v2_cs510_Brix/code/exf_init.F

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


Revision 1.2 - (show annotations) (download)
Thu Oct 4 05:16:14 2018 UTC (6 years, 10 months ago) by dimitri
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +2 -1 lines
trying to regenerate /nobackup/hbrix/MITgcm_110502/build_darwin_ag4/mitgcmuv

1
2 C $Header: /u/gcmpack/MITgcm/pkg/exf/exf_init.F,v 1.25 2010/04/28 22:52:08 jmc Exp $
3 C $Name: $
4
5 #include "EXF_OPTIONS.h"
6
7
8 subroutine exf_init( mythid )
9
10 c ==================================================================
11 c SUBROUTINE exf_init
12 c ==================================================================
13 c
14 c o This routine initialises the forcing
15 c
16 c started: Ralf.Giering@FastOpt.de 25-Mai-20000
17 c mods for pkg/seaice: menemenlis@jpl.nasa.gov 20-Dec-2002
18 c
19 c ==================================================================
20 c SUBROUTINE exf_init
21 c ==================================================================
22
23 implicit none
24
25 c == global variables ==
26
27 #include "EEPARAMS.h"
28 #include "SIZE.h"
29 #include "GRID.h"
30 #include "cal.h"
31 #include "EXF_PARAM.h"
32 #include "EXF_FIELDS.h"
33 #ifdef ALLOW_BULK_OFFLINE
34 # include "PARAMS.h"
35 # include "DYNVARS.h"
36 #endif
37
38 c == routine arguments ==
39
40 integer mythid
41
42 c == local variables ==
43
44 integer interp_method
45 INTEGER i,j,bi,bj
46
47 c == end of interface ==
48
49 C-- Initialise to zero intermediate fields (in common block)
50 DO bj = myByLo(myThid), myByHi(myThid)
51 DO bi = myBxLo(myThid), myBxHi(myThid)
52 DO j=1-Oly,sNy+Oly
53 DO i=1-Olx,sNx+Olx
54 wStress(i,j,bi,bj) = 0.
55 cw(i,j,bi,bj) = 0.
56 sw(i,j,bi,bj) = 0.
57 sh(i,j,bi,bj) = 0.
58 #ifdef ALLOW_ATM_TEMP
59 hs(i,j,bi,bj) = 0.
60 hl(i,j,bi,bj) = 0.
61 #endif
62 ENDDO
63 ENDDO
64 ENDDO
65 ENDDO
66
67 if ( useCubedSphereExchange
68 & .and. ustressperiod .eq. 0
69 & .and. ustressfile .NE. ' ' ) then
70 stop 'CubedSphereExchange and ustressperiod=0 not supported'
71 endif
72 interp_method=12
73 call exf_init_gen (
74 & ustressfile, ustressperiod, exf_inscal_ustress, ustressmask,
75 & ustressconst, ustress, ustress0, ustress1,
76 #ifdef USE_EXF_INTERPOLATION
77 & ustress_lon0, ustress_lon_inc,
78 & ustress_lat0, ustress_lat_inc,
79 & ustress_nlon, ustress_nlat, xC, yC, interp_method,
80 #endif
81 & mythid )
82
83 if ( useCubedSphereExchange
84 & .and. vstressperiod .eq. 0
85 & .and. vstressfile .NE. ' ' ) then
86 stop 'CubedSphereExchange and vstressperiod=0 not supported'
87 endif
88 interp_method=22
89 call exf_init_gen (
90 & vstressfile, vstressperiod, exf_inscal_vstress, vstressmask,
91 & vstressconst, vstress, vstress0, vstress1,
92 #ifdef USE_EXF_INTERPOLATION
93 & vstress_lon0, vstress_lon_inc,
94 & vstress_lat0, vstress_lat_inc,
95 & vstress_nlon, vstress_nlat, xC, yC, interp_method,
96 #endif
97 & mythid )
98
99 #ifdef ALLOW_ATM_WIND
100
101 if ( useCubedSphereExchange
102 & .and. uwindperiod .eq. 0
103 & .and. uwindfile .NE. ' ' ) then
104 stop 'CubedSphereExchange and uwindperiod=0 not supported'
105 endif
106 interp_method=12
107 call exf_init_gen (
108 & uwindfile, uwindperiod, exf_inscal_uwind, uwindmask,
109 & uwindconst, uwind, uwind0, uwind1,
110 #ifdef USE_EXF_INTERPOLATION
111 & uwind_lon0, uwind_lon_inc,
112 & uwind_lat0, uwind_lat_inc,
113 & uwind_nlon, uwind_nlat, xC, yC, interp_method,
114 #endif
115 & mythid )
116
117 if ( useCubedSphereExchange
118 & .and. vwindperiod .eq. 0
119 & .and. vwindfile .NE. ' ' ) then
120 stop 'CubedSphereExchange and vwindperiod=0 not supported'
121 endif
122 interp_method=22
123 call exf_init_gen (
124 & vwindfile, vwindperiod, exf_inscal_vwind, vwindmask,
125 & vwindconst, vwind, vwind0, vwind1,
126 #ifdef USE_EXF_INTERPOLATION
127 & vwind_lon0, vwind_lon_inc,
128 & vwind_lat0, vwind_lat_inc,
129 & vwind_nlon, vwind_nlat, xC, yC, interp_method,
130 #endif
131 & mythid )
132
133 #endif /* ALLOW_ATM_WIND */
134
135 interp_method=1
136
137 call exf_init_gen (
138 & wspeedfile, wspeedperiod, exf_inscal_wspeed, wspeedmask,
139 & wspeedconst, wspeed, wspeed0, wspeed1,
140 #ifdef USE_EXF_INTERPOLATION
141 & wspeed_lon0, wspeed_lon_inc,
142 & wspeed_lat0, wspeed_lat_inc,
143 & wspeed_nlon, wspeed_nlat, xC, yC, interp_method,
144 #endif
145 & mythid )
146
147 call exf_init_gen (
148 & hfluxfile, hfluxperiod, exf_inscal_hflux, hfluxmask,
149 & hfluxconst, hflux, hflux0, hflux1,
150 #ifdef USE_EXF_INTERPOLATION
151 & hflux_lon0, hflux_lon_inc,
152 & hflux_lat0, hflux_lat_inc,
153 & hflux_nlon, hflux_nlat, xC, yC, interp_method,
154 #endif
155 & mythid )
156
157 call exf_init_gen (
158 & sfluxfile, sfluxperiod, exf_inscal_sflux, sfluxmask,
159 & sfluxconst, sflux, sflux0, sflux1,
160 #ifdef USE_EXF_INTERPOLATION
161 & sflux_lon0, sflux_lon_inc,
162 & sflux_lat0, sflux_lat_inc,
163 & sflux_nlon, sflux_nlat, xC, yC, interp_method,
164 #endif
165 & mythid )
166
167 #ifdef ALLOW_ATM_TEMP
168
169 call exf_init_gen (
170 & atempfile, atempperiod, exf_inscal_atemp, atempmask,
171 & atempconst, atemp, atemp0, atemp1,
172 #ifdef USE_EXF_INTERPOLATION
173 & atemp_lon0, atemp_lon_inc,
174 & atemp_lat0, atemp_lat_inc,
175 & atemp_nlon, atemp_nlat, xC, yC, interp_method,
176 #endif
177 & mythid )
178
179 call exf_init_gen (
180 & aqhfile, aqhperiod, exf_inscal_aqh, aqhmask,
181 & aqhconst, aqh, aqh0, aqh1,
182 #ifdef USE_EXF_INTERPOLATION
183 & aqh_lon0, aqh_lon_inc,
184 & aqh_lat0, aqh_lat_inc,
185 & aqh_nlon, aqh_nlat, xC, yC, interp_method,
186 #endif
187 & mythid )
188
189 call exf_init_gen (
190 & lwfluxfile, lwfluxperiod, exf_inscal_lwflux, lwfluxmask,
191 & lwfluxconst, lwflux, lwflux0, lwflux1,
192 #ifdef USE_EXF_INTERPOLATION
193 & lwflux_lon0, lwflux_lon_inc,
194 & lwflux_lat0, lwflux_lat_inc,
195 & lwflux_nlon, lwflux_nlat, xC, yC, interp_method,
196 #endif
197 & mythid )
198
199 call exf_init_gen (
200 & precipfile, precipperiod, exf_inscal_precip, precipmask,
201 & precipconst, precip, precip0, precip1,
202 #ifdef USE_EXF_INTERPOLATION
203 & precip_lon0, precip_lon_inc,
204 & precip_lat0, precip_lat_inc,
205 & precip_nlon, precip_nlat, xC, yC, interp_method,
206 #endif
207 & mythid )
208
209 call exf_init_gen (
210 & snowprecipfile, snowprecipperiod,
211 & exf_inscal_snowprecip, snowprecipmask,
212 & snowprecipconst, snowprecip, snowprecip0, snowprecip1,
213 #ifdef USE_EXF_INTERPOLATION
214 & snowprecip_lon0, snowprecip_lon_inc,
215 & snowprecip_lat0, snowprecip_lat_inc,
216 & snowprecip_nlon, snowprecip_nlat, xC, yC, interp_method,
217 #endif
218 & mythid )
219
220 #endif /* ALLOW_ATM_TEMP */
221
222 #if defined(ALLOW_ATM_TEMP) || defined(SHORTWAVE_HEATING)
223 call exf_init_gen (
224 & swfluxfile, swfluxperiod, exf_inscal_swflux, swfluxmask,
225 & swfluxconst, swflux, swflux0, swflux1,
226 #ifdef USE_EXF_INTERPOLATION
227 & swflux_lon0, swflux_lon_inc,
228 & swflux_lat0, swflux_lat_inc,
229 & swflux_nlon, swflux_nlat, xC, yC, interp_method,
230 #endif
231 & mythid )
232 #endif /* defined(ALLOW_ATM_TEMP) || defined(SHORTWAVE_HEATING) */
233
234 #if defined(ALLOW_ATM_TEMP) || defined(EXF_READ_EVAP)
235 call exf_init_gen (
236 & evapfile, evapperiod, exf_inscal_evap, evapmask,
237 & evapconst, evap, evap0, evap1,
238 #ifdef USE_EXF_INTERPOLATION
239 & evap_lon0, evap_lon_inc,
240 & evap_lat0, evap_lat_inc,
241 & evap_nlon, evap_nlat, xC, yC, interp_method,
242 #endif
243 & mythid )
244 #endif /* defined(ALLOW_ATM_TEMP) || defined(EXF_READ_EVAP) */
245
246 #ifdef ALLOW_DOWNWARD_RADIATION
247
248 call exf_init_gen (
249 & swdownfile, swdownperiod, exf_inscal_swdown, swdownmask,
250 & swdownconst, swdown, swdown0, swdown1,
251 #ifdef USE_EXF_INTERPOLATION
252 & swdown_lon0, swdown_lon_inc,
253 & swdown_lat0, swdown_lat_inc,
254 & swdown_nlon, swdown_nlat, xC, yC, interp_method,
255 #endif
256 & mythid )
257
258 call exf_init_gen (
259 & lwdownfile, lwdownperiod, exf_inscal_lwdown, lwdownmask,
260 & lwdownconst, lwdown, lwdown0, lwdown1,
261 #ifdef USE_EXF_INTERPOLATION
262 & lwdown_lon0, lwdown_lon_inc,
263 & lwdown_lat0, lwdown_lat_inc,
264 & lwdown_nlon, lwdown_nlat, xC, yC, interp_method,
265 #endif
266 & mythid )
267
268 #endif /* ALLOW_DOWNWARD_RADIATION */
269
270 #ifdef ATMOSPHERIC_LOADING
271 call exf_init_gen (
272 & apressurefile, apressureperiod,
273 & exf_inscal_apressure, apressuremask,
274 & apressureconst, apressure, apressure0, apressure1,
275 #ifdef USE_EXF_INTERPOLATION
276 & apressure_lon0, apressure_lon_inc,
277 & apressure_lat0, apressure_lat_inc,
278 & apressure_nlon, apressure_nlat, xC, yC, interp_method,
279 #endif
280 & mythid )
281 #endif /* ATMOSPHERIC_LOADING */
282
283 #ifdef ALLOW_ICE_AREAMASK
284 call exf_init_gen (
285 & areamaskfile, areamaskperiod,
286 & exf_inscal_areamask, areamaskmask,
287 & areamaskconst, areamask, areamask0, areamask1,
288 #ifdef USE_EXF_INTERPOLATION
289 & areamask_lon0, areamask_lon_inc,
290 & areamask_lat0, areamask_lat_inc,
291 & areamask_nlon, areamask_nlat, xC, yC, interp_method,
292 #endif
293 & mythid )
294 #endif /* ALLOW_ICE_AREAMASK */
295
296 #ifdef ALLOW_RUNOFF
297 #ifdef USE_NO_INTERP_RUNOFF
298 call exf_init_runoff (
299 & runofffile, runoffperiod, exf_inscal_runoff, runoffmask,
300 & runoffconst, runoff, runoff0, runoff1,
301 & mythid )
302 #else /* ndef USE_NO_INTERP_RUNOFF */
303 call exf_init_gen (
304 & runofffile, runoffperiod, exf_inscal_runoff, runoffmask,
305 & runoffconst, runoff, runoff0, runoff1,
306 #ifdef USE_EXF_INTERPOLATION
307 & runoff_lon0, runoff_lon_inc,
308 & runoff_lat0, runoff_lat_inc,
309 & runoff_nlon, runoff_nlat, xC, yC, interp_method,
310 #endif
311 & mythid )
312 #endif /* def USE_NO_INTERP_RUNOFF */
313 #endif /* ALLOW_RUNOFF */
314
315 #ifdef ALLOW_CLIMSST_RELAXATION
316 interp_method=2
317 call exf_init_gen (
318 & climsstfile, climsstperiod, exf_inscal_climsst, climsstmask,
319 & climsstconst, climsst, climsst0, climsst1,
320 #ifdef USE_EXF_INTERPOLATION
321 & climsst_lon0, climsst_lon_inc,
322 & climsst_lat0, climsst_lat_inc,
323 & climsst_nlon, climsst_nlat, xC, yC, interp_method,
324 #endif
325 & mythid )
326 #endif
327
328 #ifdef ALLOW_CLIMSSS_RELAXATION
329 interp_method=2
330 call exf_init_gen (
331 & climsssfile, climsssperiod, exf_inscal_climsss, climsssmask,
332 & climsssconst, climsss, climsss0, climsss1,
333 #ifdef USE_EXF_INTERPOLATION
334 & climsss_lon0, climsss_lon_inc,
335 & climsss_lat0, climsss_lat_inc,
336 & climsss_nlon, climsss_nlat, xC, yC, interp_method,
337 #endif
338 & mythid )
339 #endif
340
341 #ifdef ALLOW_CLIMSTRESS_RELAXATION
342 interp_method=12
343 call exf_init_gen (
344 & climustrfile, climustrperiod, exf_inscal_climustr,
345 & climustrmask, climustrconst, climustr, climustr0, climustr1,
346 #ifdef USE_EXF_INTERPOLATION
347 & climustr_lon0, climustr_lon_inc,
348 & climustr_lat0, climustr_lat_inc,
349 & climustr_nlon, climustr_nlat, xC, yC, interp_method,
350 #endif
351 & mythid )
352 c
353 interp_method=22
354 call exf_init_gen (
355 & climvstrfile, climvstrperiod, exf_inscal_climvstr,
356 & climvstrmask, climvstrconst, climvstr, climvstr0, climvstr1,
357 #ifdef USE_EXF_INTERPOLATION
358 & climvstr_lon0, climvstr_lon_inc,
359 & climvstr_lat0, climvstr_lat_inc,
360 & climvstr_nlon, climvstr_nlat, xC, yC, interp_method,
361 #endif
362 & mythid )
363 #endif /* CLIMSTRESS_RELAXATION */
364
365 #ifdef ALLOW_BULK_OFFLINE
366
367 # ifdef ALLOW_CLIMSST_RELAXATION
368 _EXCH_XY_RL(climsst, mythid)
369 # endif
370 # ifdef ALLOW_CLIMSSS_RELAXATION
371 _EXCH_XY_RL(climsss, mythid)
372 # endif
373 # ifdef ALLOW_CLIMSTRESS_RELAXATION
374 CALL EXCH_UV_XY_RL( climustr, climvstr, .TRUE., myThid )
375 # endif
376
377 DO bj=myByLo(myThid),myByHi(myThid)
378 DO bi=myBxLo(myThid),myBxHi(myThid)
379 DO j=1-oLy,sNy+oLy
380 DO i=1-oLx,sNx+oLx
381 # ifdef ALLOW_CLIMSST_RELAXATION
382 if ( climsstfile .NE. ' ' .AND.
383 & climsstperiod .EQ. 0. )
384 & theta(i,j,1,bi,bj) = climsst(i,j,bi,bj)
385 # endif
386 # ifdef ALLOW_CLIMSSS_RELAXATION
387 if ( climsssfile .NE. ' ' .AND.
388 & climsssperiod .EQ. 0. )
389 & salt(i,j,1,bi,bj) = climsss(i,j,bi,bj)
390 # endif
391 # ifdef ALLOW_CLIMSTRESS_RELAXATION
392 if ( climustrfile .NE. ' ' .AND.
393 & climustrperiod .EQ. 0. )
394 & uvel(i,j,1,bi,bj) = climustr(i,j,bi,bj)
395 if ( climvstrfile .NE. ' ' .AND.
396 & climvstrperiod .EQ. 0. )
397 & vvel(i,j,1,bi,bj) = climvstr(i,j,bi,bj)
398 # endif
399 if ( maskC(i,j,1,bi,bj) .NE. 0. .AND.
400 & theta(i,j,1,bi,bj) .EQ. 0. ) then
401 print *, 'ph-warn-exf-init ', i, j, theta(i,j,1,bi,bj)
402 cph STOP 'in exf_init'
403 endif
404 ENDDO
405 ENDDO
406 ENDDO
407 ENDDO
408
409 #endif /* ALLOW_BULK_OFFLINE */
410
411 #ifdef ALLOW_CARBON
412 #ifdef USE_EXFCO2
413 call exf_init_gen (
414 & apco2file, apco2period, exf_inscal_apco2, apco2mask,
415 & apco2const, apco2, apco20, apco21,
416 # ifdef USE_EXF_INTERPOLATION
417 & apco2_lon0, apco2_lon_inc,
418 & apco2_lat0, apco2_lat_inc,
419 & apco2_nlon, apco2_nlat, xC, yC, interp_method,
420 # endif
421 & mythid )
422 #endif
423 #endif
424
425 RETURN
426 END

  ViewVC Help
Powered by ViewVC 1.1.22