/[MITgcm]/MITgcm/pkg/exf/README
ViewVC logotype

Annotation of /MITgcm/pkg/exf/README

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


Revision 1.1 - (hide annotations) (download)
Mon May 14 22:08:40 2001 UTC (23 years, 1 month ago) by heimbach
Branch: MAIN
CVS Tags: checkpoint46n_post, checkpoint40pre1, branch-exfmods-tag, checkpoint47e_post, checkpoint44h_pre, ecco_c44_e17, ecco_c44_e16, checkpoint46j_post, checkpoint47c_post, checkpoint46i_post, checkpoint47d_post, ecco_c44_e21, ecco_c44_e24, checkpoint44f_pre, checkpoint47a_post, checkpoint46f_post, checkpoint46d_pre, checkpoint46e_post, release1-branch_tutorials, checkpoint44g_post, checkpoint46h_pre, checkpoint44h_post, checkpoint44e_post, checkpoint46k_post, checkpoint46e_pre, ecco-branch-mod4, checkpoint43a-release1mods, checkpoint45d_post, checkpoint46l_pre, checkpoint46j_pre, checkpoint45b_post, checkpoint46b_pre, checkpoint46l_post, chkpt44a_pre, release1-branch-end, release1_final_v1, ecco_c44_e19, checkpoint46, ecco_c44_e20, checkpoint44, ecco_c44_e18, checkpoint44f_post, checkpoint47b_post, checkpoint40pre2, checkpoint40pre5, checkpoint40pre6, checkpoint40pre8, release1_b1, checkpoint44b_post, chkpt44c_post, chkpt44d_post, checkpoint42, release1_p9, release1_p8, checkpoint43, checkpoint46g_pre, release1_p2, release1_p3, release1_p4, release1_p6, checkpoint46a_post, chkpt44a_post, checkpoint44b_pre, release1_p1, checkpoint46m_post, checkpoint40pre4, checkpoint46a_pre, ecco-branch-mod1, checkpoint40pre3, checkpoint45c_post, release1_p5, checkpoint44e_pre, chkpt44c_pre, checkpoint40pre9, release1_p7, ecco_ice1, checkpoint46b_post, checkpoint46d_post, ecco-branch-mod2, checkpoint46g_post, checkpoint45a_post, checkpoint46c_pre, ecco-branch-mod3, checkpoint47d_pre, ecco-branch-mod5, ecco_c44_e22, release1_beta1, ecco_c44_e23, release1-branch_branchpoint, checkpoint47, checkpoint40pre7, checkpoint46c_post, checkpoint40, checkpoint45, checkpoint39, checkpoint46h_post, release1_chkpt44d_post, ecco_c44_e25, checkpoint41
Branch point for: c24_e25_ice, ecco-branch, release1_coupled, release1_final, release1-branch, release1, branch-exfmods-curt
Added external forcing package.
Not presently supported by mitgcm, i.e. disabled by default.

1 heimbach 1.1 c $Header: /u/gcmpack/development/heimbach/ecco_env/pkg/exf/README,v 1.4 2001/02/02 19:43:45 heimbach Exp $
2     c
3     c
4     c =========================================
5     c External Forcing Package for the MITgcmUV
6     c =========================================
7     c
8     c Current Version: 0.2.0 (20-Jun-2000)
9     c
10     c
11     c General Outline:
12     c ----------------
13     c
14     c This package contains routines to handle external forcing of the
15     c MITgcmUV general circulation model. The following features are
16     c available:
17     c
18     c (a) Surface flux forcing by:
19     c
20     c surface heat flux --> qnet
21     c fresh water flux --> empmr
22     c zonal wind stress --> fu
23     c meridional wind stress --> fv
24     c
25     c In order to get the appropriate fluxes users can either use
26     c flux data directly or they can provide atmospheric states
27     c (atmospheric temperature, atmospheric specific humidity, etc.)
28     c which are subsequently used to estimate the fluxes by using
29     c bulk parameterizations.
30     c
31     c (b) Relaxation to monthly climatologies of:
32     c
33     c potential temperature --> theta( k = 1,nr )
34     c salinity --> salt ( k = 1,nr )
35     c sea surface temperature --> theta( k = 1 )
36     c sea surface salinity --> salt ( k = 1 )
37     c
38     c The relaxation can be done with relaxation coefficients
39     c that vary spatially. The corresponding routines will have
40     c to be customized.
41     c
42     c (c) Generic Routine prefix for this package:
43     c
44     c exf_<RoutineName>
45     c
46     c
47     c Modifying the MITgcmUV:
48     c -----------------------
49     c
50     c The package is set up such that it can be easily added to the
51     c MITgcmUV standard distribution. The following MITgcmUV files
52     c have to be modified:
53     c
54     c EXF_CPPOPTIONS.h - Append this file at of the MITgcmUV's
55     c "CPP_OPTIONS.h" file:
56     c
57     c #include "EXF_CPPOPTIONS.h"
58     c
59     c the_model_main.F - Replace the call to initialise by two
60     c calls ( see below) and replace the call
61     c of load_external_fields by get_forcing.
62     c
63     c
64     c Modifications in subroutine
65     c THE_MODEL_MAIN (before c27):
66     c ----------------------------
67     c .
68     c .
69     c .
70     c CALL TIMER_START('SPIN-UP',myThid)
71     c
72     c C-- Set model initial conditions
73     c CALL TIMER_START('INITIALISE [SPIN-UP]',myThid)
74     c #ifdef INCLUDE_EXTERNAL_FORCING_PACKAGE
75     c call exf_InitialiseFixed( mythid )
76     c call exf_InitialiseVaria( mythid )
77     c #else
78     c CALL INITIALISE( myThid )
79     c #endif
80     c .
81     c .
82     c .
83     c C-- Begin time stepping loop
84     c CALL TIMER_START('MAIN LOOP',myThid)
85     c DO I=1, nTimeSteps
86     c
87     c C-- Load forcing/external data fields
88     c CALL TIMER_START('I/O (READ) [MAIN LOOP]',myThid)
89     c #ifdef INCLUDE_EXTERNAL_FORCING_PACKAGE
90     c call exf_GetForcing(
91     c I mycurrenttime,
92     c I mycurrentiter,
93     c I mythid
94     c & )
95     c #else
96     c CALL LOAD_EXTERNAL_FIELDS( myCurrentTime, myCurrentIter, myThid )
97     c #endif
98     c CALL TIMER_STOP ('I/O (READ) [MAIN LOOP]',myThid)
99     c .
100     c .
101     c .
102     c
103     c
104     c Modifications in subroutine
105     c THE_MODEL_MAIN (from c27 on):
106     c -----------------------------
107     c .
108     c .
109     c .
110     c
111     c
112     c Modifications in subroutine
113     c FORWARD_STEP (from c27 on):
114     c ---------------------------
115     c .
116     c .
117     c .
118     c C-- Load forcing/external data fields
119     c CALL TIMER_START('I/O (READ) [MAIN LOOP]',myThid)
120     c #ifdef INCLUDE_EXTERNAL_FORCING_PACKAGE
121     c call exf_GetForcing(
122     c I myCurrentTime,
123     c I myCurrentIter,
124     c I myThid
125     c & )
126     c #else
127     c CALL LOAD_EXTERNAL_FIELDS( myCurrentTime, myCurrentIter, myThid )
128     c #endif
129     c CALL TIMER_STOP ('I/O (READ) [MAIN LOOP]',myThid)
130     c .
131     c .
132     c .
133     c
134     c
135     c Modifications in subroutine
136     c INITIALISE_FIXED (from c27 on):
137     c -------------------------------
138     c .
139     c .
140     c .
141     c C-- Set coriolis operators
142     c CALL INI_CORI( myThid )
143     c
144     c#ifdef INCLUDE_LAT_CIRC_FFT_FILTER_CODE
145     cC-- Latitude circle filter initialisation
146     c CALL FILTER_LATCIRC_FFT_INIT(myThid)
147     c _BARRIER
148     c#endif
149     c
150     c #ifdef INCLUDE_EXTERNAL_FORCING_PACKAGE
151     c
152     c call exf_Init( mythid )
153     c
154     c #ifdef ALLOW_CLIMTEMP_RELAXATION
155     c c-- Set the relaxation coefficient to the temperature climatology.
156     c call exf_GetTempClimLambda(
157     c I mythid
158     c & )
159     c _BARRIER
160     c #endif
161     c #ifdef ALLOW_CLIMSALT_RELAXATION
162     c c-- Set the relaxation coefficient to the salinity climatology.
163     c call exf_GetSaltClimLambda(
164     c I mythid
165     c & )
166     c _BARRIER
167     c #endif
168     c #ifdef ALLOW_CLIMSST_RELAXATION
169     c c-- Set the relaxation coefficient to the sst climatology.
170     c call exf_GetSSTClimLambda(
171     c I mythid
172     c & )
173     c _BARRIER
174     c #endif
175     c #ifdef ALLOW_CLIMSSS_RELAXATION
176     c c-- Set the relaxation coefficient to the sss climatology.
177     c call exf_GetSSSClimLambda(
178     c I mythid
179     c & )
180     c _BARRIER
181     c #endif
182     c #endif
183     c
184     c c-- Finally, summarise the model cofiguration.
185     c CALL CONFIG_SUMMARY( myThid )
186     c .
187     c .
188     c .
189     c
190     c
191     c external_forcing.F - Add relaxation to climatological fields.
192     c
193     c
194     c Modifications in subroutine
195     c EXTERNAL_FORCING_T (taken from c25):
196     c ------------------------------------
197     c .
198     c .
199     c .
200     c #ifdef INCLUDE_EXTERNAL_FORCING_PACKAGE
201     c #include "exf_clim.h"
202     c #endif
203     c .
204     c .
205     c .
206     c C-- Forcing term
207     c C Add heat in top-layer
208     c IF ( kLev .EQ. 1 ) THEN
209     c DO j=jMin,jMax
210     c DO i=iMin,iMax
211     c gT(i,j,kLev,bi,bj)=gT(i,j,kLev,bi,bj)
212     c & +maskC(i,j)*(
213     c & -lambdaThetaClimRelax*(theta(i,j,kLev,bi,bj)-SST(i,j,bi,bj))
214     c & -Qnet(i,j,bi,bj)*recip_Cp*recip_rhoNil*recip_dRf(kLev) )
215     c
216     c #ifdef INCLUDE_EXTERNAL_FORCING_PACKAGE
217     c #ifdef ALLOW_CLIMSST_RELAXATION
218     c gt(i,j,klev,bi,bj) = gt(i,j,klev,bi,bj) -
219     c & maskc(i,j)*lambda_climsst(i,j,bi,bj)*
220     c & ( theta(i,j,klev,bi,bj) -
221     c & climsst(i,j,bi,bj) )
222     c #endif
223     c #endif
224     c
225     c ENDDO
226     c ENDDO
227     c ENDIF
228     c
229     c #ifdef INCLUDE_EXTERNAL_FORCING_PACKAGE
230     c #ifdef ALLOW_CLIMTEMP_RELAXATION
231     c do j=jmin,jmax
232     c do i=imin,imax
233     c gt(i,j,klev,bi,bj) = gt(i,j,klev,bi,bj) -
234     c & maskc(i,j)*lambda_climtemp(i,j,klev,bi,bj)*
235     c & ( theta(i,j,klev,bi,bj) -
236     c & climtemp(i,j,klev,bi,bj) )
237     c enddo
238     c enddo
239     c #endif
240     c #endif
241     c .
242     c .
243     c .
244     c
245     c
246     c Modifications in subroutine
247     c EXTERNAL_FORCING_S (taken from c25):
248     c ------------------------------------
249     c .
250     c .
251     c .
252     c #ifdef INCLUDE_EXTERNAL_FORCING_PACKAGE
253     c #include "exf_clim.h"
254     c #endif
255     c .
256     c .
257     c .
258     c C-- Forcing term
259     c C Add fresh-water in top-layer
260     c IF ( kLev .EQ. 1 ) THEN
261     c DO j=jMin,jMax
262     c DO i=iMin,iMax
263     c gS(i,j,kLev,bi,bj)=gS(i,j,kLev,bi,bj)
264     c & +maskC(i,j)*(
265     c & -lambdaSaltClimRelax*(salt(i,j,kLev,bi,bj)-SSS(i,j,bi,bj))
266     c #ifdef ALLOW_NATURAL_BCS
267     c & +EmPmR(i,j,bi,bj)*recip_dRf(1)*salt(i,j,kLev,bi,bj)
268     c #else
269     c & +EmPmR(i,j,bi,bj)*recip_dRf(1)*35.
270     c #endif
271     c & )
272     c
273     c #ifdef INCLUDE_EXTERNAL_FORCING_PACKAGE
274     c #ifdef ALLOW_CLIMSSS_RELAXATION
275     c gs(i,j,kLev,bi,bj) = gs(i,j,kLev,bi,bj) -
276     c & maskc(i,j)*lambda_climsss(i,j,bi,bj)*
277     c & ( salt(i,j,kLev,bi,bj) -
278     c & climsss(i,j,bi,bj) )
279     c #endif
280     c #endif
281     c
282     c ENDDO
283     c ENDDO
284     c ENDIF
285     c
286     c #ifdef INCLUDE_EXTERNAL_FORCING_PACKAGE
287     c #ifdef ALLOW_CLIMSALT_RELAXATION
288     c do j=jmin,jmax
289     c do i=imin,imax
290     c gs(i,j,klev,bi,bj) = gs(i,j,klev,bi,bj) -
291     c & maskc(i,j)*lambda_climsalt(i,j,klev,bi,bj)*
292     c & ( salt(i,j,klev,bi,bj) -
293     c & climsalt(i,j,klev,bi,bj) )
294     c enddo
295     c enddo
296     c #endif
297     c #endif
298     c .
299     c .
300     c .
301     c
302     c
303     c CPP options:
304     c ------------
305     c
306     c The following CPP options are available for this package:
307     c
308     c >>> INCLUDE_EXTERNAL_FORCING_PACKAGE <<<
309     c Include this package into the setup.
310     c
311     c >>> EXTERNAL_FORCING_VERBOSE <<<
312     c Do a bit more printout for the log file than usual.
313     c
314     c >>> ALLOW_BULKFORMULAE <<<
315     c Use bulk formulae to in order to estimate the turbulent
316     c fluxes at the ocean's surface.
317     c
318     c >>> ALLOW_ATM_TEMP <<<
319     c If defined use the atmospheric temperature and specific
320     c humidity to estimate the sensible and latent heat fluxes.
321     c
322     c >>> ALLOW_ATM_WIND <<<
323     c If defined use the atmospheric wind field to estimate the
324     c wind stress at the ocean's surface.
325     c
326     c >>> ALLOW_CLIMTEMP_RELAXATION <<<
327     c Allow the relaxation to a monthly climatology of potential
328     c temperature, e.g. the Levitus climatology.
329     c
330     c >>> ALLOW_CLIMSALT_RELAXATION <<<
331     c Allow the relaxation to a monthly climatology of salinity,
332     c e.g. the Levitus climatology.
333     c
334     c >>> ALLOW_CLIMSST_RELAXATION <<<
335     c Allow the relaxation to a monthly climatology of sea surface
336     c temperature, e.g. the Reynolds climatology.
337     c
338     c >>> ALLOW_CLIMSSS_RELAXATION <<<
339     c Allow the relaxation to a monthly climatology of sea surface
340     c salinity, e.g. the Levitus climatology.
341     c
342     c
343     c
344     c Unit and sign conventions for forcing fields (valid for c28 !)
345     c --------------------------------------------------------------
346    
347     - tflux/qnet: net heat flux (ATTENTION: distinguish qnet vs. qnet-sw)
348     ---------------------------
349     -> read in as tflux: W/m**2 = kg/s**3 (>0 for oceanic cooling)
350     -> scaled to qnet: scal_hfl = +1
351     -> transformed to gT: Qnet -> Qnet/(rhonil*Cp*dR)
352     W/m**2 -> K/s
353     -> usage in gT: gT = gT - qnet[K/s]
354    
355     - swflux/qsw: shortwave flux
356     ----------------------------
357     -> read in as swflux: W/m**2 = kg/s**3 (>0 for oceanic cooling)
358     -> for bulk forcing: swflux ADDED to hfl = tflux
359     -> scaled to qsw: scal_swf = +1
360     -> transformed to gT: only for #ifdef SHORTWAVE_HEATING
361     (currently not used)
362    
363     - lwflux/qlw: longwave flux
364     ---------------------------
365     -> read in as lwflux: m/s (>0 for oceanic cooling)
366     -> for bulk forcing: lwflux ADDED to hfl = tflux
367     -> scaled to qlw: not used.
368     -> transformed to gT: not used.
369    
370     - sflux/empmr: freshwater flux (Evap. minus precip. minus runoff)
371     ------------------------------
372     -> read in as tflux: m/s (>0 for ocean salting)
373     -> scaled to empmr: scal_hfl = +1
374     -> transformed to gS: empmr -> empmr*35./*dR
375     m/s -> psu/s
376     -> usage in gS: gS = gS + empmr[psu/s]
377    
378     - ustress/fu: zonal wind stress (West/East)
379     -------------------------------
380     -> read in as ustress: N/m**2 (>0 from West to East)
381     -> scaled to fu : scal_ust = -1
382     -> transformed to gU: fu -> fu/(rhoNil*dR)
383     N/m**2 -> m/s**2
384     -> usage in gU: gU = gU + fu[m/s**2]
385    
386     - vstress/fv: meridional wind stress (South/North)
387     ------------------------------------
388     -> read in as vstress: N/m**2 (>0 from South to North)
389     -> scaled to fv : scal_vst = -1
390     -> transformed to gV: fv -> fv/(rhoNil*dR)
391     N/m**2 -> m/s**2
392     -> usage in gV: gV = gV + fv[m/s**2]
393     c
394     c
395     c Data files:
396     c -----------
397     c
398     c There are 10 possible setups that can be covered by the external
399     c forcing package. For each of these setups a data file is available.
400     c
401     c data.forcing__blk__uat__uaw__kpp
402     c data.forcing__blk__uat__uaw_nkpp
403     c data.forcing__blk__uat_nuaw__kpp
404     c data.forcing__blk__uat_nuaw_nkpp
405     c data.forcing__blk_nuat__uaw__kpp
406     c data.forcing__blk_nuat__uaw_nkpp
407     c data.forcing__blk_nuat_nuaw__kpp
408     c data.forcing__blk_nuat_nuaw_nkpp
409     c data.forcing_nblk_nuat_nuaw__kpp
410     c data.forcing_nblk_nuat_nuaw_nkpp
411     c
412     c The naming convention is self-explanatory (hopefully).
413     c
414     c Once a specified setup is decided upon use the corresponding data
415     c file in order to set the file names for the individual variables and
416     c provide the necessary calendar information.
417     c
418     c Copy the appropriate data file to .../exe/data.exf .
419     c
420     c
421     c Routines:
422     c ----------
423     c
424     c The package consists of two sets of routines. The first set is
425     c related to surface fluxes, the second set allows one to include
426     c relaxation to climatological fields.
427     c
428     c Call trees:
429     c -----------
430     c
431     c
432     c exf_Init
433     c |
434     c |---- exf_Summary
435     c |---- exf_InitSurfaceFluxes
436     c |---- exf_InitClimatology
437     c
438     c
439     c exf_GetForcing
440     c |
441     c |---- exf_GetTempClim
442     c |---- exf_GetSaltClim
443     c |---- exf_GetSSTClim
444     c |---- exf_GetSSSClim
445     c |---- exf_GetSurfaceFluxes
446     c |---- exf_MapFields
447     c
448     c
449     c ===============
450     c Surface fluxes:
451     c ===============
452     c
453     c Getting the forcing fields:
454     c
455     c o exf_InitSurfaceFluxes - Initialise the external forcing fields.
456     c
457     c o exf_GetsurfaceFluxes - Mid-level routine for adding fluxes as
458     c control variables.
459     c
460     c o exf_GetFFields - Get the current field values.
461     c
462     c o exf_SwapFFields - Swap data fields.
463     c
464     c Routines specific to bulk formulae:
465     c
466     c o exf_qSat - Compute the saturation specific humidity.
467     c
468     c o exf_Cdn - Evaluate the neutral drag coefficient as a
469     c function of the mean wind speed at a given
470     c height.
471     c
472     c o exf_Rhn - Evaluate the Stanton number.
473     c
474     c Getting the time data (calendar):
475     c
476     c o exf_GetFFieldsRec - Get the record number for the current
477     c timestep of a given field, some flags,
478     c and the linear interpolation factor.
479     c
480     c Reading the forcing data:
481     c
482     c o exf_ReadAtmTemp - Read an atmospheric temperature record.
483     c
484     c o exf_ReadAtmQh - Read an atmospheric humidity record.
485     c
486     c o exf_ReadHeatFlux - Read an atmospheric heat flux record.
487     c
488     c o exf_ReadZonStress - Read an atmospheric zonal wind stress record.
489     c
490     c o exf_ReadMerStress - Read an atmospheric meridional wind stress
491     c record.
492     c
493     c o exf_ReadZonWind - Read an atmospheric zonal wind record.
494     c
495     c o exf_ReadMerWind - Read an atmospheric meridional wind record.
496     c
497     c o exf_ReadAtmPrecip - Read a precipitation record.
498     c
499     c o exf_ReadSaltFlux - Read a salt flux record.
500     c
501     c o exf_ReadLwFlux - Read a long wave radiative flux record.
502     c
503     c o exf_ReadSwFlux - Read a short wave radiative flux record.
504     c
505     c
506     c At the moment, a basic premise of this package is that the external
507     c forcing fields are available as data sets that are regularly spaced
508     c in time and space. In later versions this assumption will be relaxed
509     c for time as well as for space.
510     c
511     c
512     c ============
513     c Climatology:
514     c ============
515     c
516     c o exf_InitClimatology - Initialise the climatology code.
517     c
518     c o exf_GetMonthsRec - Get the record number of a monthly
519     c climatology data set for a given model
520     c timestep.
521     c
522     c Temperature climatology:
523     c
524     c o exf_GetTempClim - Get the temperature climatology's
525     c value for a given model timestep.
526     c
527     c o exf_GetTempClimRec - Get the record number, the linear
528     c interpolation factor, and some flags
529     c for the temperature climatology.
530     c
531     c o exf_ReadTempClim - Read a temperature climatology's
532     c data record.
533     c
534     c o exf_GetTempClimLambda - Calculate the relaxation coefficient
535     c for the temperature climatology.
536     c
537     c Salinity climatology.
538     c
539     c o exf_GetSaltClim - Get the salinity climatology's
540     c value for a given model timestep.
541     c
542     c o exf_GetSaltClimRec - Get the record number, the linear
543     c interpolation factor, and some flags
544     c for the salinity climatology.
545     c
546     c o exf_ReadSaltClim - Read a salinity climatology's
547     c data record.
548     c
549     c o exf_GetSaltClimLambda - Calculate the relaxation coefficient
550     c for salinity climatology.
551     c
552     c Sea surface temperature climatology.
553     c
554     c o exf_GetSSTClim - Get the sea surface temp. climatology's
555     c value for a given model timestep.
556     c
557     c o exf_GetSSTClimRec - Get the record number, the linear
558     c interpolation factor, and some flags
559     c for the sea surface temp. climatology.
560     c
561     c o exf_ReadSSTClim - Read a sea surface temp. climatology's
562     c data record.
563     c
564     c o exf_GetSSTClimLambda - Calculate the relaxation coefficient
565     c for the sea surface temperature
566     c climatology.
567     c
568     c Sea surface salinity climatology:
569     c
570     c o exf_GetSSSClim - Get the sea surface salin. climatology's
571     c value for a given model timestep.
572     c
573     c o exf_GetSSSClimRec - Get the record number, the linear
574     c interpolation factor, and some flags
575     c for the sea surface salin. climatology.
576     c
577     c o exf_ReadSSSClim - Read a sea surface salin. climatology's
578     c data record.
579     c
580     c o exf_GetSSSClimLambda - Calculate the relaxation coefficient
581     c for the sea surface salinity
582     c climatology.
583     c
584     c
585     c HOW TO GET STARTED?
586     c
587     c Copy the routines and headers to the distribution after you have
588     c installed the latter. Next, install the calendar tool, which is
589     c quite extenisvely used by the external forcing package.
590     c
591     c http://mitgcm.lcs.mit.edu/cgi-bin/cvsweb/packages/calendar_tool/
592     c
593     c
594     c ATTENTION:
595     c ==========
596     c
597     c Users of this package are urged to CHECK THE SIGNS AND UNITS of
598     c their data sets, especially in relation to the sign conventions
599     c of the MITgcmUV!
600     c
601     c Relevant MITgcmUV routines are:
602     c
603     c calc_gt.F
604     c calc_gs.F
605     c calc_mom_rhs.F
606     c external_forcing.F
607     c
608     c Relevant external forcing package routines are:
609     c
610     c exf_ReadHeatFlux
611     c .
612     c .
613     c exf_ReadZonWind
614     c exf_MapFields
615     c
616     c All adaptations of signs and units to specific data sets should be
617     c done in the routines that read the respective data. Users should
618     c neither modify "external_forcing" nor "exf_MapFields" for this
619     c purpose.Each data set has its own read routine. This eases customi-
620     c zation (signs and units etc.).
621     c
622     c Some routines have to be customized for the current specific
623     c application:
624     c
625     c e.g. exf_GetClimTempLambda
626     c exf_GetClimSaltLambda
627     c exf_GetClimSSTLambda
628     c exf_GetClimSSSLambda
629     c
630     c
631     c
632     c To Do:
633     c ------
634     c
635     c Many assumptions that are made in the current version should, and
636     c can, be relaxed in later versions:
637     c
638     c - gridded data sets --> general data set (other grids, inter-
639     c polation in space)
640     c
641     c - equidistancy in time --> general data set (non-equidistant in
642     c time)
643     c
644     c - climatologies --> arbitrary subinterval of a year, not
645     c just monthly values.
646     c
647     c - relaxation --> relaxation could be done to a given
648     c data set over the model's integration
649     c time. This would generalise the clima-
650     c tology block. One could have 'cyclic'
651     c and 'non-cyclic' fields. In the first
652     c case, the cycle length has to be spe-
653     c cified ('monthly','yearly','period') as
654     c well as the start of the cycle ( irec=1
655     c corresponds to a certain calendar date).
656     c The second case can be treated analog-
657     c ously.
658     c
659     c - There is an inconsistency in the formulation of frocing variables
660     c defined on southern and western points on the C-grid, since the
661     c the atmospheric stability is calculated on center points of the
662     c C-grid.
663     c
664     c ========
665     c HISTORY:
666     c ========
667     c
668     c
669     c started: Christian Eckert eckert@mit.edu 30-Jun-1999
670     c
671     c changed: Christian Eckert eckert@mit.edu 11-Jan-2000
672     c
673     c - Restructured the code in order to create a package
674     c for the MITgcmUV.
675     c
676     c Christian Eckert eckert@mit.edu 12-Feb-2000
677     c
678     c - Changed Routine names (package prefix: exf_)
679     c
680     c Christian Eckert eckert@mit.edu 02-May-2000
681     c
682     c - CVS version of the package.
683     c
684     c Patrick Heimbach, heimbach@mit.edu 04-May-2000
685     c
686     c - Added computation of evaporation rate for
687     c ALLOW_ATM_TEMP case
688     c
689     c - changed the handling of precip and sflux with respect
690     c to CPP options ALLOW_BULKFORMULAE and ALLOW_ATM_TEMP
691     c
692     c - included some CPP flags ALLOW_BULKFORMULAE to make
693     c sure ALLOW_ATM_TEMP, ALLOW_ATM_WIND are used only in
694     c conjunction with defined ALLOW_BULKFORMULAE
695     c
696     c - statement functions discarded and external functions
697     c initialised.
698     c
699     c - file precision and field type are now prescribed in
700     c data.exf;
701     c separately possible for exf_sflx.h and exf_clim.h
702     c related fields.
703     c
704     c - created exf_constants.h that contains
705     c 1. numbers
706     c 2. physical constants
707     c 3. empirical parameters
708     c 4. control parameters
709     c
710     c Ralf Giering ralf.giering@fastopt.de 18-Jun-2000
711     c
712     c - exf_getffields.F:
713     c Swapping of forcing fields has to be switched off
714     c if TAMC is used, because of generation of spurious
715     c dependencies. (P.H.)
716     c
717     c Patrick Heimbach heimbach@mit.edu 20-Jun-2000
718     c
719     c - sign change of ustress/vstress incorporated into
720     c scaling factors scal_ust, scal_vst in exf_mapfields.F
721     c
722     c - Corrected description on how to implement exf package
723     c for c27 onwards.
724     c
725     c - Included unit and sign conventions valid for c28
726     c in README.
727     c
728     c ==================================================================

  ViewVC Help
Powered by ViewVC 1.1.22