/[MITgcm]/manual/s_phys_pkgs/text/exf.tex
ViewVC logotype

Contents of /manual/s_phys_pkgs/text/exf.tex

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


Revision 1.7 - (show annotations) (download) (as text)
Mon Oct 3 18:12:27 2005 UTC (19 years, 9 months ago) by heimbach
Branch: MAIN
Changes since 1.6: +4 -0 lines
File MIME type: application/x-tex
Updating

1 \subsection{EXF: The external forcing package
2 \label{sec:pkg:exf}}
3 \begin{rawhtml}
4 <!-- CMIREDIR:sectionexf: -->
5 \end{rawhtml}
6
7 Authors: Patrick Heimbach and Dimitris Menemenlis
8
9 \subsubsection{Introduction
10 \label{sec:pkg:exf:intro}}
11
12 The external forcing package, in conjunction with the
13 calendar package (cal), enables the handling of real-time
14 (or ``model-time'') forcing
15 fields of differing temporal forcing patterns.
16 It comprises climatological restoring and relaxation.
17 Bulk formulae are implemented to convert atmospheric fields
18 to surface fluxes.
19 An interpolation routine provides on-the-fly interpolation of
20 forcing fields an arbitrary grid onto the model grid.
21
22 CPP options enable or disable different aspects of the package
23 (Section \ref{sec:pkg:exf:config}).
24 Runtime options, flags, filenames and field-related dates/times are
25 set in \texttt{data.exf} and \texttt{data.exf\_clim}
26 (Section \ref{sec:pkg:exf:runtime}).
27 A description of key subroutines is given in Section
28 \ref{sec:pkg:exf:subroutines}.
29 Input fields, units and sign conventions are summarized in
30 Section \ref{sec:pkg:exf:fields_units}, and available diagnostics
31 output is listed in Section \ref{sec:pkg:exf:fields_diagnostics}.
32
33 %----------------------------------------------------------------------
34
35 \subsubsection{EXF configuration, compiling \& running}
36
37 \paragraph{Compile-time options
38 \label{sec:pkg:exf:config}}
39 ~
40
41 As with all MITgcm packages, EXF can be turned on or off at compile time
42 %
43 \begin{itemize}
44 %
45 \item
46 using the \texttt{packages.conf} file by adding \texttt{exf} to it,
47 %
48 \item
49 or using \texttt{genmake2} adding
50 \texttt{-enable=exf} or \texttt{-disable=exf} switches
51 %
52 \item
53 \textit{required packages and CPP options}: \\
54 EXF requires the calendar package \texttt{cal} to be enabled;
55 no additional CPP options are required.
56 %
57 \end{itemize}
58 (see Section \ref{sect:buildingCode}).
59
60 Parts of the EXF code can be enabled or disabled at compile time
61 via CPP preprocessor flags. These options are set in either
62 \texttt{EXF\_OPTIONS.h} or in \texttt{ECCO\_CPPOPTIONS.h}.
63 Table \ref{tab:pkg:exf:cpp} summarizes these options.
64
65 \begin{table}[b!]
66 \centering
67 \label{tab:pkg:exf:cpp}
68 {\footnotesize
69 \begin{tabular}{|l|l|}
70 \hline
71 \textbf{CPP option} & \textbf{Description} \\
72 \hline \hline
73 \texttt{EXF\_VERBOSE} &
74 verbose mode (recommended only for testing) \\
75 \texttt{ALLOW\_ATM\_TEMP} &
76 compute heat/freshwater fluxes from atmos. state input \\
77 \texttt{ALLOW\_ATM\_WIND} &
78 compute wind stress from wind speed input\\
79 \texttt{ALLOW\_BULKFORMULAE} &
80 is used if \texttt{ALLOW\_ATM\_TEMP} or
81 \texttt{ALLOW\_ATM\_WIND} is enabled \\
82 \texttt{EXF\_READ\_EVAP} & read evaporation instead of computing it \\
83 \texttt{ALLOW\_RUNOFF} & read time-constant river/glacier run-off field \\
84 \texttt{ALLOW\_DOWNWARD\_RADIATION} & compute net from downward or downward from net radiation \\
85 \texttt{USE\_EXF\_INTERPOLATION} & enable on-the-fly bilinear or bicubic interpolation of input fields \\
86 \hline
87 \multicolumn{2}{|c|}{\textit{used in conjunction with relaxation to prescribed (climatological) fields}} \\
88 \hline
89 \texttt{ALLOW\_CLIMTEMP\_RELAXATION} &
90 relaxation to 3-D temperature climatology \\
91 \texttt{ALLOW\_CLIMSALT\_RELAXATION} &
92 relaxation to 3-D salinity climatology \\
93 \texttt{ALLOW\_CLIMSST\_RELAXATION} &
94 relaxation to 2-D SST climatology \\
95 \texttt{ALLOW\_CLIMSSS\_RELAXATION} &
96 relaxation to 2-D SSS climatology \\
97 \hline
98 \multicolumn{2}{|c|}{\textit{these are set outside of EXF in} \texttt{CPP\_OPTIONS.h}} \\
99 \hline
100 \texttt{SHORTWAVE\_HEATING} & enable shortwave radiation \\
101 \texttt{ATMOSPHERIC\_LOADING} & enable surface pressure forcing \\
102 \hline
103 \end{tabular}
104 }
105 \caption{~}
106 \end{table}
107
108
109 %----------------------------------------------------------------------
110
111 \subsubsection{Run-time parameters
112 \label{sec:pkg:exf:runtime}}
113
114 Run-time parameters are set in files
115 \texttt{data.pkg}, \texttt{data.exf}, and
116 \texttt{data.exf\_clim} (for relaxation/climatological fields)
117 which are read in \texttt{exf\_readparms.F}.
118 Run-time parameters may be broken into 3 categories:
119 (i) switching on/off the package at runtime,
120 (ii) general flags and parameters, and
121 (iii) attributes for each forcing and climatological field.
122
123 \paragraph{Enabling the package}
124 ~ \\
125 %
126 A package is usually switched on/off at runtime by setting
127 (e.g. for EXF) \texttt{useEXF = .TRUE.} in \texttt{data.pkg}.
128 For EXF this flag is omitted, i.e. EXF is always ON if it is compiled.
129
130 \paragraph{General flags and parameters}
131 ~ \\
132 %
133 \begin{table}[h!]
134 \centering
135 \label{tab:pkg:exf:runtime_flags}
136 {\footnotesize
137 \begin{tabular}{|l|c|l|}
138 \hline
139 \textbf{Flag/parameter} & \textbf{default} & \textbf{Description} \\
140 \hline \hline
141 useExfCheckRange & \texttt{.TRUE.} &
142 check range of input fields and stop if out of range \\
143 useExfYearlyFields & \texttt{.FALSE.} &
144 append current year postfix of form \texttt{\_YYYY} on filename \\
145 twoDigitYear & \texttt{.FALSE.} &
146 instead of appending \texttt{\_YYYY} append \texttt{YY} \\
147 repeatPeriod & \texttt{0.0} & $ > 0 $ :
148 cycle through all input fields at the same period (in seconds) \\
149 ~ & ~ & $ = 0 $ :
150 use period assigned to each field \\
151 exf\_offset\_atemp & \texttt{0.0} & set to 273.16 to convert from deg. Kelvin (assumed input) to Celsius \\
152 windstressmax & \texttt{2.0} &
153 max. allowed wind stress $N/m^2$ \\
154 exf\_albedo & \texttt{0.1} &
155 surface albedo used to compute downward vs. net radiative fluxes \\
156 exf\_iprec & \texttt{32} &
157 precision of input fields (32-bit or 64-bit) \\
158 exf\_yftype & \texttt{'RL'} &
159 precision of arrays ('RL' vs. 'RS') \\
160 \hline
161 \end{tabular}
162 }
163 \caption{~}
164 \end{table}
165
166
167 \paragraph{Field attributes}
168 ~ \\
169 %
170 All EXF fields are listed in Section \ref{sec:pkg:exf:fields_units}.
171 Each field has a number of attributes which can be customized.
172 They are summarized in
173 Table \ref{tab:pkg:exf:runtime_attributes}.
174 To obtain an attribute for a specific field, e.g. \texttt{uwind}
175 prepend the field name to the listed attribute, e.g. for attribute
176 \texttt{period} this yields \texttt{uwindperiod}:
177 %
178 \begin{eqnarray*}
179 \begin{array}{cccccc}
180 ~ & \texttt{field} & \& & \texttt{attribute} & \longrightarrow & \texttt{parameter} \\
181 \text{e.g.} & \text{uwind} & \& & \text{period} & \longrightarrow & \text{uwindperiod} \\
182 \end{array}
183 \end{eqnarray*}
184 %
185
186 \begin{table}[h!]
187 \centering
188 \label{tab:pkg:exf:runtime_attributes}
189 {\footnotesize
190 \begin{tabular}{|l|c|l|}
191 \hline
192 \textbf{attribute} & \textbf{Default} & \textbf{Description} \\
193 \hline \hline
194 \textit{field}\texttt{file} & ' ' &
195 filename; if left empty no file will be read; \texttt{const} will be used instead \\
196 \textit{field}\texttt{const} & 0. &
197 constant that will be used if no file is read \\
198 \textit{field}\texttt{startdate1} & 0. &
199 format: \texttt{YYYYMMDD}; start year (YYYY), month (MM), day (YY) \\
200 ~&~& of field to determine record number \\
201 \textit{field}\texttt{startdate2} & 0. &
202 format: \texttt{HHMMSS}; start hour (HH), minute (MM), second(SS) \\
203 ~&~& of field to determine record number\\
204 \textit{field}\texttt{period} & 0. &
205 interval in seconds between two records \\
206 \texttt{exf\_inscal\_}\textit{field}& ~ &
207 optional rescaling of input fields to comply with EXF units \\
208 \texttt{exf\_outscal\_}\textit{field}& ~ &
209 optional rescaling of EXF fields when mapped onto MITgcm fields \\
210 \hline
211 \multicolumn{3}{|c|}{\textit{used in conjunction with}
212 \texttt{EXF\_USE\_INTERPOLATION}} \\
213 \hline
214 \textit{field}\texttt{\_lon0} & $thetaMin+delX/2$ &
215 starting longitude of input \\
216 \textit{field}\texttt{\_lon\_inc} & $delX$ &
217 increment in longitude of input \\
218 \textit{field}\texttt{\_lat0} & $phiMin+delY/2$ &
219 starting latitude of input \\
220 \textit{field}\texttt{\_lat\_inc} & $delY$ &
221 increment in latitude of input \\
222 \textit{field}\texttt{\_nlon} & $Nx$ &
223 number of grid points in longitude of input \\
224 \textit{field}\texttt{\_nlat} & $Ny$ &
225 number of grid points in longitude of input \\
226 \hline
227 \end{tabular}
228 }
229 \caption{\newline
230 Note one exception for the default of
231 \texttt{atempconst} = celsius2K = 273.16}
232 \end{table}
233
234 \paragraph{Example configuration} ~ \\
235 %
236 The following block is taken from the \texttt{data.exf} file
237 of the veification experiment \texttt{global\_with\_exf/}.
238 It defines attributes for the heat flux variable \texttt{hflux}:
239
240 \begin{verbatim}
241 hfluxfile = 'ncep_qnet.bin',
242 hfluxstartdate1 = 19920101,
243 hfluxstartdate2 = 000000,
244 hfluxperiod = 2592000.0,
245 hflux_lon0 = 2
246 hflux_lon_inc = 4
247 hflux_lat0 = -78
248 hflux_lat_inc = 39*4
249 hflux_nlon = 90
250 hflux_nlat = 40
251 \end{verbatim}
252
253 EXF will read a file of name 'ncep\_qnet.bin'.
254 Its first record represents January 1st, 1991 at 00:00 UTC.
255 Next record is 2592000 seconds (or 30 days) later.
256 Interpolation on-the-fly is used (in the present case trivially
257 on the same grid, but included nevertheless for illustration),
258 and input field grid starting coordinates and increments are
259 supplied as well.
260
261 %----------------------------------------------------------------------
262
263 \subsubsection{EXF input fields and units
264 \label{sec:pkg:exf:fields_units}}
265
266 The following list is taken from the header file \texttt{exf\_fields.h}.
267 It comprises all EXF input fields.
268
269 Output fields which EXF provides to the MITgcm are fields
270 \textbf{fu}, \textbf{fv}, \textbf{Qnet}, \textbf{Qsw}, \textbf{EmPmR},
271 and \textbf{pload}. They are defined in \texttt{FFIELDS.h}.
272
273 {\footnotesize
274 \begin{verbatim}
275
276 c----------------------------------------------------------------------
277 c |
278 c field :: Description
279 c |
280 c----------------------------------------------------------------------
281 c ustress :: Zonal surface wind stress in N/m^2
282 c | > 0 for increase in uVel, which is west to
283 c | east for cartesian and spherical polar grids
284 c | Typical range: -0.5 < ustress < 0.5
285 c | Southwest C-grid U point
286 c | Input field
287 c----------------------------------------------------------------------
288 c vstress :: Meridional surface wind stress in N/m^2
289 c | > 0 for increase in vVel, which is south to
290 c | north for cartesian and spherical polar grids
291 c | Typical range: -0.5 < vstress < 0.5
292 c | Southwest C-grid V point
293 c | Input field
294 c----------------------------------------------------------------------
295 c hflux :: Net upward surface heat flux in W/m^2
296 c | excluding shortwave (on input)
297 c | hflux = latent + sensible + lwflux
298 c | > 0 for decrease in theta (ocean cooling)
299 c | Typical range: -250 < hflux < 600
300 c | Southwest C-grid tracer point
301 c | Input field
302 c----------------------------------------------------------------------
303 c sflux :: Net upward freshwater flux in m/s
304 c | sflux = evap - precip - runoff
305 c | > 0 for increase in salt (ocean salinity)
306 c | Typical range: -1e-7 < sflux < 1e-7
307 c | Southwest C-grid tracer point
308 c | Input field
309 c----------------------------------------------------------------------
310 c swflux :: Net upward shortwave radiation in W/m^2
311 c | swflux = - ( swdown - ice and snow absorption - reflected )
312 c | > 0 for decrease in theta (ocean cooling)
313 c | Typical range: -350 < swflux < 0
314 c | Southwest C-grid tracer point
315 c | Input field
316 c----------------------------------------------------------------------
317 c uwind :: Surface (10-m) zonal wind velocity in m/s
318 c | > 0 for increase in uVel, which is west to
319 c | east for cartesian and spherical polar grids
320 c | Typical range: -10 < uwind < 10
321 c | Southwest C-grid U point
322 c | Input or input/output field
323 c----------------------------------------------------------------------
324 c vwind :: Surface (10-m) meridional wind velocity in m/s
325 c | > 0 for increase in vVel, which is south to
326 c | north for cartesian and spherical polar grids
327 c | Typical range: -10 < vwind < 10
328 c | Southwest C-grid V point
329 c | Input or input/output field
330 c----------------------------------------------------------------------
331 c atemp :: Surface (2-m) air temperature in deg K
332 c | Typical range: 200 < atemp < 300
333 c | Southwest C-grid tracer point
334 c | Input or input/output field
335 c----------------------------------------------------------------------
336 c aqh :: Surface (2m) specific humidity in kg/kg
337 c | Typical range: 0 < aqh < 0.02
338 c | Southwest C-grid tracer point
339 c | Input or input/output field
340 c----------------------------------------------------------------------
341 c lwflux :: Net upward longwave radiation in W/m^2
342 c | lwflux = - ( lwdown - ice and snow absorption - emitted )
343 c | > 0 for decrease in theta (ocean cooling)
344 c | Typical range: -20 < lwflux < 170
345 c | Southwest C-grid tracer point
346 c | Input field
347 c----------------------------------------------------------------------
348 c evap :: Evaporation in m/s
349 c | > 0 for increase in salt (ocean salinity)
350 c | Typical range: 0 < evap < 2.5e-7
351 c | Southwest C-grid tracer point
352 c | Input, input/output, or output field
353 c----------------------------------------------------------------------
354 c precip :: Precipitation in m/s
355 c | > 0 for decrease in salt (ocean salinity)
356 c | Typical range: 0 < precip < 5e-7
357 c | Southwest C-grid tracer point
358 c | Input or input/output field
359 c----------------------------------------------------------------------
360 c runoff :: River and glacier runoff in m/s
361 c | > 0 for decrease in salt (ocean salinity)
362 c | Typical range: 0 < runoff < ????
363 c | Southwest C-grid tracer point
364 c | Input or input/output field
365 c | !!! WATCH OUT: Default exf_inscal_runoff !!!
366 c | !!! in exf_readparms.F is not 1.0 !!!
367 c----------------------------------------------------------------------
368 c swdown :: Downward shortwave radiation in W/m^2
369 c | > 0 for increase in theta (ocean warming)
370 c | Typical range: 0 < swdown < 450
371 c | Southwest C-grid tracer point
372 c | Input/output field
373 c----------------------------------------------------------------------
374 c lwdown :: Downward longwave radiation in W/m^2
375 c | > 0 for increase in theta (ocean warming)
376 c | Typical range: 50 < lwdown < 450
377 c | Southwest C-grid tracer point
378 c | Input/output field
379 c----------------------------------------------------------------------
380 c apressure :: Atmospheric pressure field in N/m^2
381 c | > 0 for ????
382 c | Typical range: ???? < apressure < ????
383 c | Southwest C-grid tracer point
384 c | Input field
385 c----------------------------------------------------------------------
386
387 \end{verbatim}
388 }
389
390 %----------------------------------------------------------------------
391
392 \subsubsection{Key subroutines
393 \label{sec:pkg:exf:subroutines}}
394
395 Top-level routine: \texttt{exf\_getforcing.F}
396
397 {\footnotesize
398 \begin{verbatim}
399
400 C !CALLING SEQUENCE:
401 c ...
402 c exf_getforcing (TOP LEVEL ROUTINE)
403 c |
404 c |-- exf_getclim (get climatological fields used e.g. for relax.)
405 c | |--- exf_set_climtemp (relax. to 3-D temperature field)
406 c | |--- exf_set_climsalt (relax. to 3-D salinity field)
407 c | |--- exf_set_climsst (relax. to 2-D SST field)
408 c | |--- exf_set_climsss (relax. to 2-D SSS field)
409 c | o
410 c |
411 c |-- exf_getffields <- this one does almost everything
412 c | | 1. reads in fields, either flux or atmos. state,
413 c | | depending on CPP options (for each variable two fields
414 c | | consecutive in time are read in and interpolated onto
415 c | | current time step).
416 c | | 2. If forcing is atmos. state and control is atmos. state,
417 c | | then the control variable anomalies are read here
418 c | | * ctrl_getatemp
419 c | | * ctrl_getaqh
420 c | | * ctrl_getuwind
421 c | | * ctrl_getvwind
422 c | | If forcing and control are fluxes, then
423 c | | controls are added later.
424 c | o
425 c |
426 c |-- exf_check_range
427 c | | 1. Check whether read fields are within assumed range
428 c | | (may capture mismatches in units)
429 c | o
430 c |
431 c |-- exf_bulkformulae
432 c | | 1. Compute net or downwelling radiative fluxes via
433 c | | Stefan-Boltzmann law in case only one is known.
434 c | | 2. Compute air-sea momentum and buoyancy fluxes from
435 c | | atmospheric state following Large and Pond, JPO, 1981/82
436 c | o
437 c |
438 c |-- < add time-mean river runoff here, if available >
439 c |
440 c |-- < update tile edges here >
441 c |
442 c |-- exf_getsurfacefluxes
443 c | | 1. If forcing and control are fluxes, then
444 c | | controls are added here.
445 c | o
446 c |
447 c |-- < treatment of hflux w.r.t. swflux >
448 c |
449 c |-- exf_diagnostics_fill
450 c | | 1. Do EXF-related diagnostics output here.
451 c | o
452 c |
453 c |-- exf_mapfields
454 c | | 1. Map the EXF variables onto the core MITgcm
455 c | | forcing fields.
456 c | o
457 c |
458 c |-- exf_bulkformulae
459 c | If ALLOW_BULKFORMULAE, compute fluxes via bulkformulae
460 c |
461 c |-- exf_getsurfacefluxes
462 c | If forcing and control is flux, then the
463 c | control vector anomalies are read here
464 c | * ctrl_getheatflux
465 c | * ctrl_getsaltflux
466 c | * ctrl_getzonstress
467 c | * call ctrl_getmerstress
468 c |
469 c |-- exf_mapfields
470 c | Forcing fields from exf package are mapped onto
471 c | mitgcm forcing arrays.
472 c | Mapping enables a runtime rescaling of fields
473
474 \end{verbatim}
475 }
476
477 Bulk formula routine: \texttt{exf\_bulkformulae.F}
478
479 Generic I/O routine: \texttt{exf\_set\_gen.F}
480
481 Interpolation routine: \texttt{exf\_interp.F}
482
483 Header routines
484
485 %----------------------------------------------------------------------
486
487 \subsubsection{EXF diagnostics
488 \label{sec:pkg:exf:diagnostics}}
489
490 Diagnostics output is available via the diagnostics package
491 (see Section \ref{sec:pkg:diagnostics}).
492 Available output fields are summarized in
493 Table \ref{tab:pkg:exf:diagnostics}.
494
495 \begin{table}[h!]
496 \centering
497 \label{tab:pkg:exf:diagnostics}
498 {\footnotesize
499 \begin{verbatim}
500 ------------------------------------------------------
501 <-Name->|Levs|grid|<-- Units -->|<- Tile (max=80c)
502 ------------------------------------------------------
503 EXFlwdn | 1 | SM | W/m^2 | Downward longwave radiation, >0 increases theta
504 EXFswdn | 1 | SM | W/m^2 | Downward shortwave radiation, >0 increases theta
505 EXFqnet | 1 | SM | W/m^2 | Net upward heat flux (turb+rad), >0 decreases theta
506 EXFtaux | 1 | SU | N/m^2 | zonal surface wind stress, >0 increases uVel
507 EXFtauy | 1 | SV | N/m^2 | meridional surface wind stress, >0 increases vVel
508 EXFuwind| 1 | SM | m/s | zonal 10-m wind speed, >0 increases uVel
509 EXFvwind| 1 | SM | m/s | meridional 10-m wind speed, >0 increases uVel
510 EXFatemp| 1 | SM | degK | surface (2-m) air temperature
511 EXFaqh | 1 | SM | kg/kg | surface (2-m) specific humidity
512 EXFevap | 1 | SM | m/s | evaporation, > 0 increases salinity
513 EXFpreci| 1 | SM | m/s | evaporation, > 0 decreases salinity
514 EXFempmr| 1 | SM | m/s | net upward freshwater flux, > 0 increases salinity
515 EXFpress| 1 | SM | N/m^2 | atmospheric pressure field
516 \end{verbatim}
517 }
518 \caption{~}
519 \end{table}
520
521 %----------------------------------------------------------------------
522
523 \subsubsection{Reference experiments}
524
525 global\_with\_exf:
526
527 lab\_sea:
528
529 %----------------------------------------------------------------------
530
531 \subsubsection{References}

  ViewVC Help
Powered by ViewVC 1.1.22