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

Annotation 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 - (hide 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 dimitri 1.2
2     C $Header: /u/gcmpack/MITgcm/pkg/exf/exf_init.F,v 1.25 2010/04/28 22:52:08 jmc Exp $
3 dimitri 1.1 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