Back to home page

MITgcm

 
 

    


Warning, /doc/phys_pkgs/exf.rst is written in an unsupported language. File is not indexed.

view on githubraw file Latest commit cc60455f on 2022-06-16 14:55:16 UTC
8679f9097b Jeff*0001 .. _sub_phys_pkg_exf:
                0002 
                0003 EXF: The external forcing package
                0004 ---------------------------------
                0005 
                0006 Authors: Patrick Heimbach and Dimitris Menemenlis
                0007 
                0008 .. _ssub_phys_pkg_exf_intro:
                0009 
                0010 Introduction
                0011 ++++++++++++
                0012 
                0013 The external forcing package, in conjunction with the calendar package
                0014 (cal), enables the handling of real-time (or “model-time”) forcing
                0015 fields of differing temporal forcing patterns. It comprises
                0016 climatological restoring and relaxation. Bulk formulae are implemented
                0017 to convert atmospheric fields to surface fluxes. An interpolation
                0018 routine provides on-the-fly interpolation of forcing fields an arbitrary
                0019 grid onto the model grid.
                0020 
31c71ded02 Mart*0021 CPP options enable or disable different aspects of the package
                0022 (:numref:`ssub_phys_pkg_exf_config`). Runtime options, flags,
                0023 filenames and field-related dates/times are set in ``data.exf``
                0024 (:numref:`ssub_phys_pkg_exf_runtime`). A description of key subroutines
                0025 is given in :numref:`ssub_phys_pkg_exf_subroutines`. Input fields,
                0026 units and sign conventions are summarized in
                0027 :numref:`ssub_phys_pkg_exf_inputs_units`, and available
                0028 diagnostics output is listed in
                0029 :numref:`ssub_phys_pkg_exf_diagnostics`.
8679f9097b Jeff*0030 
                0031 .. _ssub_phys_pkg_exf_config:
                0032 
                0033 EXF configuration, compiling & running
                0034 ++++++++++++++++++++++++++++++++++++++
                0035 
                0036 Compile-time options
                0037 ####################
                0038 
                0039 As with all MITgcm packages, EXF can be turned on or off at compile time
                0040 
                0041 -  using the ``packages.conf`` file by adding ``exf`` to it,
                0042 
                0043 -  or using ``genmake2`` adding ``-enable=exf`` or ``-disable=exf``
                0044    switches
                0045 
                0046 -  *required packages and CPP options*:
31c71ded02 Mart*0047    EXF (only) requires the calendar package ``cal`` to be enabled if
                0048    the julian calendar will be used with the data ; no
8679f9097b Jeff*0049    additional CPP options are required.
                0050 
31c71ded02 Mart*0051 (see  :numref:`building_code`).
8679f9097b Jeff*0052 
                0053 Parts of the EXF code can be enabled or disabled at compile time via CPP
                0054 preprocessor flags. These options are set in either ``EXF_OPTIONS.h`` or
                0055 in ``ECCO_CPPOPTIONS.h``. :numref:`tab_phys_pkg_exf_cpp_options` summarizes these
                0056 options.
                0057 
                0058 .. table:: EXF CPP options
                0059     :name: tab_phys_pkg_exf_cpp_options
                0060 
                0061     +----------------------------------+-----------------------------------------------------------+
                0062     |        **CPP option**            |  **Description**                                          |
                0063     +==================================+===========================================================+
                0064     | :code:`EXF_VERBOSE`              |   verbose mode (recommended only for testing)             |
                0065     +----------------------------------+-----------------------------------------------------------+
                0066     | :code:`ALLOW_ATM_TEMP`           |  compute heat/freshwater fluxes from atmos. state input   |
                0067     +----------------------------------+-----------------------------------------------------------+
                0068     | :code:`ALLOW_ATM_WIND`           |  compute wind stress from wind speed input                |
                0069     +----------------------------------+-----------------------------------------------------------+
cc60455fbb Mart*0070     | :code:`ALLOW_BULKFORMULAE`       |  use bulk formulae following Large and Pond (1981, 1982); |
                0071     |                                  |  requires to define :code:`ALLOW_ATM_TEMP`.               |
                0072     +----------------------------------+-----------------------------------------------------------+
                0073     | :code:`ALLOW_BULK_LARGEYEAGER04` |  use modifications of Large and Pond (1981, 1982), as     |
                0074     |                                  |  described in  Large and Yeager (2004) NCAR/TN-460+STR.   |
                0075     +----------------------------------+-----------------------------------------------------------+
                0076     | :code:`ALLOW_DRAG_LARGEYEAGER09` |  compute drag cofficient following Large and Yeager       |
                0077     |                                  |  (2009), Climate Dynamics, 33, pages 341-364              |
8679f9097b Jeff*0078     +----------------------------------+-----------------------------------------------------------+
                0079     | :code:`EXF_READ_EVAP`            |  read evaporation instead of computing it                 |
                0080     +----------------------------------+-----------------------------------------------------------+
                0081     | :code:`ALLOW_RUNOFF`             |  read time-constant river/glacier run-off field           |
                0082     +----------------------------------+-----------------------------------------------------------+
                0083     | :code:`ALLOW_DOWNWARD_RADIATION` |  compute net from downward or downward from net radiation |
                0084     +----------------------------------+-----------------------------------------------------------+
                0085     | :code:`USE_EXF_INTERPOLATION`    |  enable on-the-fly bilinear or bicubic                    |
                0086     |                                  |  interpolation of input fields                            |
                0087     +----------------------------------+-----------------------------------------------------------+
                0088     |  *used in conjunction with relaxation to prescribed (climatological) fields*                 |
                0089     +----------------------------------+-----------------------------------------------------------+
                0090     | :code:`ALLOW_CLIMSST_RELAXATION` |  relaxation to 2-D SST climatology                        |
                0091     +----------------------------------+-----------------------------------------------------------+
                0092     | :code:`ALLOW_CLIMSSS_RELAXATION` |  relaxation to 2-D SSS climatology                        |
                0093     +----------------------------------+-----------------------------------------------------------+
                0094     |  *these are set outside of EXF in* :code:`CPP_OPTIONS.h`                                     |
                0095     +----------------------------------+-----------------------------------------------------------+
                0096     | :code:`SHORTWAVE_HEATING`        | enable shortwave radiation                                |
                0097     +----------------------------------+-----------------------------------------------------------+
                0098     | :code:`ATMOSPHERIC_LOADING`      | enable surface pressure forcing                           |
                0099     +----------------------------------+-----------------------------------------------------------+
                0100 
                0101 .. _ssub_phys_pkg_exf_runtime:
                0102 
                0103 Run-time parameters
                0104 +++++++++++++++++++
                0105 
                0106 Run-time parameters are set in files ``data.pkg`` and ``data.exf`` which
                0107 is read in ``exf_readparms.F``. Run-time parameters may be broken into 3
                0108 categories: (i) switching on/off the package at runtime, (ii) general
                0109 flags and parameters, and (iii) attributes for each forcing and
                0110 climatological field.
                0111 
                0112 Enabling the package
                0113 ####################
                0114 
                0115 A package is switched on/off at runtime by setting (e.g. for EXF)
                0116 ``useEXF = .TRUE.`` in ``data.pkg``.
                0117 
                0118 General flags and parameters
                0119 ############################
                0120 
                0121 .. table:: EXF runtime options
                0122     :name: tab_phys_pkg_exf_runtime_params
                0123 
                0124     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0125     | **Flag/parameter**      | **default**      |  **Description**                                                              |
                0126     +=========================+==================+===============================================================================+
                0127     | useExfCheckRange        | :code:`.TRUE.`   | check range of input fields and stop if out of range                          |
                0128     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0129     | useExfYearlyFields      | :code:`.FALSE.`  | append current year postfix of form ``_YYYY`` on filename                     |
                0130     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0131     | twoDigitYear            | :code:`.FALSE.`  | instead of appending ``_YYYY`` append  ``YY``                                 |
                0132     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0133     | repeatPeriod            | 0.0              | > 0: cycle through all input fields at the same period (in seconds)           |
                0134     |                         |                  +-------------------------------------------------------------------------------+
                0135     |                         |                  | = 0: use period assigned to each field                                        |
                0136     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0137     | exf_offset_atemp        | 0.0              | set to 273.16 to convert from deg. Kelvin (assumed input) to Celsius          |
                0138     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0139     | windstressmax           | 2.0              | max. allowed wind stress N m\ :sup:`--2`                                      |
                0140     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0141     | exf_albedo              | 0.1              | surface albedo used to compute downward vs. net radiative fluxes              |
                0142     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0143     | climtempfreeze          | -1.9             | ???                                                                           |
                0144     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0145     | ocean_emissivity        |                  | longwave ocean-surface emissivity                                             |
                0146     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0147     | ice_emissivity          |                  | longwave seaice emissivity                                                    |
                0148     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0149     | snow_emissivity         |                  | longwave  snow  emissivity                                                    |
                0150     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0151     | exf_iceCd               | 1.63E-3          | drag coefficient over sea-ice                                                 |
                0152     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0153     | exf_iceCe               | 1.63E-3          | evaporation transfer coeff. over sea-ice                                      |
                0154     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0155     | exf_iceCh               | 1.63E-3          | sensible heat transfer coeff. over sea-ice                                    |
                0156     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0157     | exf_scal_BulkCdn        | 1.0              | overall scaling of neutral drag coeff.                                        |
                0158     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0159     | useStabilityFct_overIce | :code:`.FALSE.`  | compute turbulent transfer coeff. over sea-ice                                |
                0160     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0161     | readStressOnAgrid       | :code:`.FALSE.`  | read wind-streess located on model-grid, A-grid point                         |
                0162     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0163     | readStressOnCgrid       | :code:`.FALSE.`  | read wind-streess located on model-grid, C-grid point                         |
                0164     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0165     | useRelativeWind         | :code:`.FALSE.`  | subtract [U/V]VEL or [U/VICE from U/V]WIND before                             |
                0166     |                         |                  | computing [U/V]STRESS                                                         |
                0167     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0168     | zref                    | 10.0             | reference height                                                              |
                0169     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0170     | hu                      | 10.0             | height of mean wind                                                           |
                0171     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0172     | ht                      | 2.0              | height of mean temperature and rel. humidity                                  |
                0173     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0174     | umin                    | 0.5              | minimum absolute wind speed for computing Cd                                  |
                0175     +-------------------------+------------------+-------------------------------------------------------------------------------+
cc60455fbb Mart*0176     | atmrho                  | 1.2              | mean atmospheric density [kg/m\ :sup:`3`]                                     |
8679f9097b Jeff*0177     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0178     | atmcp                   | 1005.0           | mean atmospheric specific heat [J/kg/K]                                       |
                0179     +-------------------------+------------------+-------------------------------------------------------------------------------+
cc60455fbb Mart*0180     | cdrag_[n]               |                  | n = 1,2,3,8; parameters for drag coeff. function                              |
                0181     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0182     | cdrag_1                 | 0.0027000        | [m/s]                                                                         |
                0183     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0184     | cdrag_2                 | 0.0001420        | [-]                                                                           |
                0185     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0186     | cdrag_3                 | 0.0000764        | [s/m]                                                                         |
                0187     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0188     | cdrag_8                 | -3.14807e-13     | [(s/m)\ :sup:`6`] (only used with Large and Yeager, 2009)                     |
                0189     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0190     | cdragMax                |  0.00234         | maximum drag [-] (only Large and Yeager, 2009) for wind > umax                |
                0191     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0192     | umax                    | 33.              | threshold above which cdragMax applies [m/s] (only Large and Yeager, 2009)    |
8679f9097b Jeff*0193     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0194     | cstanton_[n]            | ???              | n = 1,2; parameters for Stanton number function                               |
                0195     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0196     | cdalton                 | ???              | parameter for Dalton number function                                          |
                0197     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0198     | flamb                   | 2500000.0        | latent heat of evaporation [J/kg]                                             |
                0199     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0200     | flami                   | 334000.0         | latent heat of melting of pure ice [J/kg]                                     |
                0201     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0202     | zolmin                  | -100.0           | minimum stability parameter                                                   |
                0203     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0204     | cvapor_fac              | 640380.0         |                                                                               |
                0205     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0206     | cvapor_exp              | 5107.4           |                                                                               |
                0207     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0208     | cvapor_fac_ice          | 11637800.0       |                                                                               |
                0209     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0210     | cvapor_fac_ice          | 5897.8           |                                                                               |
                0211     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0212     | humid_fac               | 0.606            | parameter for virtual temperature calculation                                 |
                0213     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0214     | gamma_blk               | 0.010            | adiabatic lapse rate                                                          |
                0215     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0216     | saltsat                 | 0.980            | reduction of saturation vapor pressure over salt-water                        |
                0217     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0218     | psim_fac                | 5.0              |                                                                               |
                0219     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0220     | exf_monFreq             | monitorFreq      | output frequency [s]                                                          |
                0221     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0222     | exf_iprec               | 32               | precision of input fields (32-bit or 64-bit)                                  |
                0223     +-------------------------+------------------+-------------------------------------------------------------------------------+
                0224 
                0225 Field attributes
                0226 ################
                0227 
31c71ded02 Mart*0228 All EXF fields are listed in
                0229 :numref:`ssub_phys_pkg_exf_inputs_units`. Each field has a number of
                0230 attributes which can be customized. They are summarized in
                0231 :numref:`tab_phys_pkg_exf_runtime_attributes`. To obtain an attribute for a
8679f9097b Jeff*0232 specific field, e.g. ``uwind`` prepend the field name to the listed
                0233 attribute, e.g. for attribute ``period`` this yields ``uwindperiod``:
                0234 
                0235 .. math::
                0236 
                0237    \begin{aligned}
                0238      \begin{array}{cccccc}
                0239        ~ & \texttt{field} & \& & \texttt{attribute} & \longrightarrow & \texttt{parameter} \\
                0240        \text{e.g.} & \text{uwind} & \& & \text{period} & \longrightarrow & \text{uwindperiod} \\
                0241      \end{array}\end{aligned}
                0242 
31c71ded02 Mart*0243 .. table:: EXF runtime attributes
8679f9097b Jeff*0244            Note there is one exception for the default of ``atempconst`` = celsius2K = 273.16
                0245     :name: tab_phys_pkg_exf_runtime_attributes
                0246 
                0247     +-----------------------------+---------------------------+------------------------------------------------------------------------------+
                0248     | **attribute**               | **Default**               | **Description**                                                              |
                0249     +=============================+===========================+==============================================================================+
                0250     | *field* ``file``            | ' '                       | filename; if left empty no file will be read; ``const`` will be used instead |
                0251     +-----------------------------+---------------------------+------------------------------------------------------------------------------+
                0252     | *field* ``const``           | 0.0                       | constant that will be used if no file is read                                |
                0253     +-----------------------------+---------------------------+------------------------------------------------------------------------------+
                0254     | *field* ``startdate1``      | 0.0                       | format: ``YYYYMMDD``; start year (YYYY), month (MM), day (YY)                |
                0255     |                             |                           | of field to determine record number                                          |
                0256     +-----------------------------+---------------------------+------------------------------------------------------------------------------+
                0257     | *field* ``startdate2``      | 0.0                       | format: ``HHMMSS``; start hour (HH), minute (MM), second(SS)                 |
                0258     |                             |                           | of field to determine record number                                          |
                0259     +-----------------------------+---------------------------+------------------------------------------------------------------------------+
deacece587 Oliv*0260     | *field* ``period``          | 0.0                       | interval in seconds between two records; the special value -12 means         |
                0261     |                             |                           | 12 repeating (calendar) monthly records; the special value -1 means          |
                0262     |                             |                           | non-repeating (calendar) monthly records (see below)                         |
8679f9097b Jeff*0263     +-----------------------------+---------------------------+------------------------------------------------------------------------------+
                0264     | ``exf_inscal_``\ *field*    |                           | optional rescaling of input fields to comply with EXF units                  |
                0265     +-----------------------------+---------------------------+------------------------------------------------------------------------------+
                0266     | ``exf_outscal_``\ *field*   |                           | optional rescaling of EXF fields when mapped onto MITgcm fields              |
                0267     +-----------------------------+---------------------------+------------------------------------------------------------------------------+
                0268     | *used in conjunction with* ``EXF_USE_INTERPOLATION``                                                                                   |
                0269     +-----------------------------+---------------------------+------------------------------------------------------------------------------+
                0270     | *field* ``_lon0``           | :code:`xgOrigin+delX/2`   | starting longitude of input                                                  |
                0271     +-----------------------------+---------------------------+------------------------------------------------------------------------------+
                0272     | *field* ``_lon_inc``        | :code:`delX`              | increment in longitude of input                                              |
                0273     +-----------------------------+---------------------------+------------------------------------------------------------------------------+
                0274     | *field* ``_lat0``           | :code:`ygOrigin+delY/2`   | starting latitude of input                                                   |
                0275     +-----------------------------+---------------------------+------------------------------------------------------------------------------+
                0276     | *field* ``_lat_inc``        | :code:`delY`              | increment in latitude of input                                               |
                0277     +-----------------------------+---------------------------+------------------------------------------------------------------------------+
                0278     | *field* ``_nlon``           | :code:`Nx`                | number of grid points in longitude of input                                  |
                0279     +-----------------------------+---------------------------+------------------------------------------------------------------------------+
                0280     | *field* ``_nlat``           | :code:`Ny`                | number of grid points in longitude of input                                  |
                0281     +-----------------------------+---------------------------+------------------------------------------------------------------------------+
                0282 
deacece587 Oliv*0283 For *field*\ ``period``\ =-1, the records in the forcing file represent
                0284 averages over calendar months.  If ``useExfYearlyFields = .TRUE.``, each yearly
                0285 file must have 12 records, starting with January.  For ``useExfYearlyFields =
                0286 .FALSE.``, a single file starting with the month given by
                0287 *field*\ ``startdate1`` is required.
                0288 
8679f9097b Jeff*0289 Example configuration
                0290 #####################
                0291 
                0292 The following block is taken from the ``data.exf`` file of the
                0293 verification experiment ``global_with_exf/``. It defines attributes for
                0294 the heat flux variable ``hflux``:
                0295 
                0296 ::
                0297 
                0298      hfluxfile       = 'ncep_qnet.bin',
                0299      hfluxstartdate1 = 19920101,
                0300      hfluxstartdate2 = 000000,
                0301      hfluxperiod     = 2592000.0,
                0302      hflux_lon0      = 2
                0303      hflux_lon_inc   = 4
                0304      hflux_lat0      = -78
                0305      hflux_lat_inc   = 39*4
                0306      hflux_nlon      = 90
                0307      hflux_nlat      = 40
                0308 
                0309 EXF will read a file of name ’ncep\_qnet.bin’. Its first record
                0310 represents January 1st, 1992 at 00:00 UTC. Next record is 2592000
                0311 seconds (or 30 days) later. Note that the first record read and used by
                0312 the EXF package corresponds to the value ’startDate1’ set in data.cal.
                0313 Therefore if you want to start the EXF forcing from later in the
                0314 ’ncep\_qnet.bin’ file, it suffices to specify startDate1 in data.cal as
                0315 a date later than 19920101 (for example, startDate1 = 19940101, for
                0316 starting January 1st, 1994). For this to work, ’ncep\_qnet.bin’ must
                0317 have at least 2 years of data because in this configuration EXF will
                0318 read 2 years into the file to find the 1994 starting value.
                0319 Interpolation on-the-fly is used (in the present case trivially on the
                0320 same grid, but included nevertheless for illustration), and input field
                0321 grid starting coordinates and increments are supplied as well.
                0322 
                0323 .. _ssub_phys_pkg_exf_bulk_formulae:
                0324 
                0325 EXF bulk formulae
                0326 +++++++++++++++++
                0327 
                0328 T.B.D. (cross-ref. to parameter list table)
                0329 
                0330 .. _ssub_phys_pkg_exf_inputs_units:
                0331 
                0332 EXF input fields and units
                0333 ++++++++++++++++++++++++++
                0334 
                0335 The following list is taken from the header file ``EXF_FIELDS.h``. It
                0336 comprises all EXF input fields.
                0337 
                0338 Output fields which EXF provides to the MITgcm are fields **fu**,
                0339 **fv**, **Qnet**, **Qsw**, **EmPmR**, and **pload**. They are defined in
                0340 ``FFIELDS.h``.
                0341 
                0342 ::
                0343 
                0344     c----------------------------------------------------------------------
                0345     c               |
                0346     c     field     :: Description
                0347     c               |
                0348     c----------------------------------------------------------------------
                0349     c     ustress   :: Zonal surface wind stress in N/m^2
                0350     c               |  > 0 for increase in uVel, which is west to
                0351     c               |      east for cartesian and spherical polar grids
                0352     c               |  Typical range: -0.5 < ustress < 0.5
                0353     c               |  Southwest C-grid U point
                0354     c               |  Input field
                0355     c----------------------------------------------------------------------
                0356     c     vstress   :: Meridional surface wind stress in N/m^2
                0357     c               |  > 0 for increase in vVel, which is south to
                0358     c               |      north for cartesian and spherical polar grids
                0359     c               |  Typical range: -0.5 < vstress < 0.5
                0360     c               |  Southwest C-grid V point
                0361     c               |  Input field
                0362     c----------------------------------------------------------------------
                0363     c     hs        :: sensible heat flux into ocean in W/m^2
                0364     c               |  > 0 for increase in theta (ocean warming)
                0365     c----------------------------------------------------------------------
                0366     c     hl        :: latent   heat flux into ocean in W/m^2
                0367     c               |  > 0 for increase in theta (ocean warming)
                0368     c----------------------------------------------------------------------
                0369     c     hflux     :: Net upward surface heat flux in W/m^2
                0370     c               |  (including shortwave)
                0371     c               |  hflux = latent + sensible + lwflux + swflux
                0372     c               |  > 0 for decrease in theta (ocean cooling)
                0373     c               |  Typical range: -250 < hflux < 600
                0374     c               |  Southwest C-grid tracer point
                0375     c               |  Input field
                0376     c----------------------------------------------------------------------
                0377     c     sflux     :: Net upward freshwater flux in m/s
                0378     c               |  sflux = evap - precip - runoff
                0379     c               |  > 0 for increase in salt (ocean salinity)
                0380     c               |  Typical range: -1e-7 < sflux < 1e-7
                0381     c               |  Southwest C-grid tracer point
                0382     c               |  Input field
                0383     c----------------------------------------------------------------------
                0384     c     swflux    :: Net upward shortwave radiation in W/m^2
                0385     c               |  swflux = - ( swdown - ice and snow absorption - reflected )
                0386     c               |  > 0 for decrease in theta (ocean cooling)
                0387     c               |  Typical range: -350 < swflux < 0
                0388     c               |  Southwest C-grid tracer point
                0389     c               |  Input field
                0390     c----------------------------------------------------------------------
                0391     c     uwind     :: Surface (10-m) zonal wind velocity in m/s
                0392     c               |  > 0 for increase in uVel, which is west to
                0393     c               |      east for cartesian and spherical polar grids
                0394     c               |  Typical range: -10 < uwind < 10
                0395     c               |  Southwest C-grid U point
                0396     c               |  Input or input/output field
                0397     c----------------------------------------------------------------------
                0398     c     vwind     :: Surface (10-m) meridional wind velocity in m/s
                0399     c               |  > 0 for increase in vVel, which is south to
                0400     c               |      north for cartesian and spherical polar grids
                0401     c               |  Typical range: -10 < vwind < 10
                0402     c               |  Southwest C-grid V point
                0403     c               |  Input or input/output field
                0404     c----------------------------------------------------------------------
                0405     c     wspeed    :: Surface (10-m) wind speed in m/s
                0406     c               |  >= 0 sqrt(u^2+v^2)
                0407     c               |  Typical range: 0 < wspeed < 10
                0408     c               |  Input or input/output field
                0409     c----------------------------------------------------------------------
                0410     c     atemp     :: Surface (2-m) air temperature in deg K
                0411     c               |  Typical range: 200 < atemp < 300
                0412     c               |  Southwest C-grid tracer point
                0413     c               |  Input or input/output field
                0414     c----------------------------------------------------------------------
                0415     c     aqh       :: Surface (2m) specific humidity in kg/kg
                0416     c               |  Typical range: 0 < aqh < 0.02
                0417     c               |  Southwest C-grid tracer point
                0418     c               |  Input or input/output field
                0419     c----------------------------------------------------------------------
                0420     c     lwflux    :: Net upward longwave radiation in W/m^2
                0421     c               |  lwflux = - ( lwdown - ice and snow absorption - emitted )
                0422     c               |  > 0 for decrease in theta (ocean cooling)
                0423     c               |  Typical range: -20 < lwflux < 170
                0424     c               |  Southwest C-grid tracer point
                0425     c               |  Input field
                0426     c----------------------------------------------------------------------
                0427     c     evap      :: Evaporation in m/s
                0428     c               |  > 0 for increase in salt (ocean salinity)
                0429     c               |  Typical range: 0 < evap < 2.5e-7
                0430     c               |  Southwest C-grid tracer point
                0431     c               |  Input, input/output, or output field
                0432     c----------------------------------------------------------------------
                0433     c     precip    :: Precipitation in m/s
                0434     c               |  > 0 for decrease in salt (ocean salinity)
                0435     c               |  Typical range: 0 < precip < 5e-7
                0436     c               |  Southwest C-grid tracer point
                0437     c               |  Input or input/output field
                0438     c----------------------------------------------------------------------
                0439     c    snowprecip :: snow in m/s
                0440     c               |  > 0 for decrease in salt (ocean salinity)
                0441     c               |  Typical range: 0 < precip < 5e-7
                0442     c               |  Input or input/output field
                0443     c----------------------------------------------------------------------
                0444     c     runoff    :: River and glacier runoff in m/s
                0445     c               |  > 0 for decrease in salt (ocean salinity)
31c71ded02 Mart*0446     c               |  Typical range: 0 < runoff < 5e-7
8679f9097b Jeff*0447     c               |  Southwest C-grid tracer point
                0448     c               |  Input or input/output field
                0449     c----------------------------------------------------------------------
                0450     c     swdown    :: Downward shortwave radiation in W/m^2
                0451     c               |  > 0 for increase in theta (ocean warming)
                0452     c               |  Typical range: 0 < swdown < 450
                0453     c               |  Southwest C-grid tracer point
                0454     c               |  Input/output field
                0455     c----------------------------------------------------------------------
                0456     c     lwdown    :: Downward longwave radiation in W/m^2
                0457     c               |  > 0 for increase in theta (ocean warming)
                0458     c               |  Typical range: 50 < lwdown < 450
                0459     c               |  Southwest C-grid tracer point
                0460     c               |  Input/output field
                0461     c----------------------------------------------------------------------
                0462     c     apressure :: Atmospheric pressure field in N/m^2
31c71ded02 Mart*0463     c               |  Typical range: 88000 < apressure < 108000
8679f9097b Jeff*0464     c               |  Southwest C-grid tracer point
                0465     c               |  Input field
                0466     c----------------------------------------------------------------------
                0467 
                0468 .. _ssub_phys_pkg_exf_subroutines:
                0469 
                0470 Key subroutines
                0471 +++++++++++++++
                0472 
                0473 Top-level routine: ``exf_getforcing.F``
                0474 
                0475 ::
                0476 
                0477     C     !CALLING SEQUENCE:
                0478     c ...
                0479     c  exf_getforcing (TOP LEVEL ROUTINE)
                0480     c  |
                0481     c  |-- exf_getclim (get climatological fields used e.g. for relax.)
                0482     c  |   |--- exf_set_climsst  (relax. to 2-D SST field)
                0483     c  |   |--- exf_set_climsss  (relax. to 2-D SSS field)
                0484     c  |   o
                0485     c  |
                0486     c  |-- exf_getffields <- this one does almost everything
                0487     c  |   |   1. reads in fields, either flux or atmos. state,
                0488     c  |   |      depending on CPP options (for each variable two fields
                0489     c  |   |      consecutive in time are read in and interpolated onto
                0490     c  |   |      current time step).
                0491     c  |   |   2. If forcing is atmos. state and control is atmos. state,
                0492     c  |   |      then the control variable anomalies are read here via ctrl_get_gen
                0493     c  |   |      (atemp, aqh, precip, swflux, swdown, uwind, vwind).
                0494     c  |   |      If forcing and control are fluxes, then
                0495     c  |   |      controls are added later.
                0496     c  |   o
                0497     c  |
                0498     c  |-- exf_radiation
                0499     c  |   |    Compute net or downwelling radiative fluxes via
                0500     c  |   |    Stefan-Boltzmann law in case only one is known.
                0501     c  |   o
                0502     c  |-- exf_wind
                0503     c  |   |   Computes wind speed and stresses, if required.
                0504     c  |   o
                0505     c  |
                0506     c  |-- exf_bulkformulae
                0507     c  |   |   Compute air-sea buoyancy fluxes from
                0508     c  |   |   atmospheric state following Large and Pond, JPO, 1981/82
                0509     c  |   o
                0510     c  |
                0511     c  |-- < hflux is sum of sensible, latent, longwave rad. >
                0512     c  |-- < sflux is sum of evap. minus precip. minus runoff  >
                0513     c  |
                0514     c  |-- exf_getsurfacefluxes
                0515     c  |   If forcing and control is flux, then the
                0516     c  |   control vector anomalies are read here via ctrl_get_gen
                0517     c  |   (hflux, sflux, ustress, vstress)
                0518     c  |
                0519     c  |-- < update tile edges here >
                0520     c  |
                0521     c  |-- exf_check_range
                0522     c  |   |   Check whether read fields are within assumed range
                0523     c  |   |   (may capture mismatches in units)
                0524     c  |   o
                0525     c  |
                0526     c  |-- < add shortwave to hflux for diagnostics >
                0527     c  |
                0528     c  |-- exf_diagnostics_fill
                0529     c  |   |   Do EXF-related diagnostics output here.
                0530     c  |   o
                0531     c  |
                0532     c  |-- exf_mapfields
                0533     c  |   |   Forcing fields from exf package are mapped onto
                0534     c  |   |   mitgcm forcing arrays.
                0535     c  |   |   Mapping enables a runtime rescaling of fields
                0536     c  |   o
                0537     C  o
                0538 
                0539 Radiation calculation: ``exf_radiation.F``
                0540 
                0541 Wind speed and stress calculation: ``exf_wind.F``
                0542 
                0543 Bulk formula: ``exf_bulkformulae.F``
                0544 
                0545 Generic I/O: ``exf_set_gen.F``
                0546 
                0547 Interpolation: ``exf_interp.F``
                0548 
                0549 Header routines
                0550 
                0551 .. _ssub_phys_pkg_exf_diagnostics:
                0552 
                0553 EXF diagnostics
                0554 +++++++++++++++
                0555 
31c71ded02 Mart*0556 Diagnostics output is available via the diagnostics package (see
                0557 :numref:`sub_outp_pkg_diagnostics`). Available output fields are
                0558 summarized below.
8679f9097b Jeff*0559 
                0560 ::
                0561 
                0562     ---------+----+----+----------------+-----------------
                0563      <-Name->|Levs|grid|<--  Units   -->|<- Tile (max=80c)
                0564     ---------+----+----+----------------+-----------------
                0565      EXFhs   |  1 | SM | W/m^2          | Sensible heat flux into ocean, >0 increases theta
                0566      EXFhl   |  1 | SM | W/m^2          | Latent heat flux into ocean, >0 increases theta
                0567      EXFlwnet|  1 | SM | W/m^2          | Net upward longwave radiation, >0 decreases theta
                0568      EXFswnet|  1 | SM | W/m^2          | Net upward shortwave radiation, >0 decreases theta
                0569      EXFlwdn |  1 | SM | W/m^2          | Downward longwave radiation, >0 increases theta
                0570      EXFswdn |  1 | SM | W/m^2          | Downward shortwave radiation, >0 increases theta
                0571      EXFqnet |  1 | SM | W/m^2          | Net upward heat flux (turb+rad), >0 decreases theta
                0572      EXFtaux |  1 | SU | N/m^2          | zonal surface wind stress, >0 increases uVel
                0573      EXFtauy |  1 | SV | N/m^2          | meridional surface wind stress, >0 increases vVel
                0574      EXFuwind|  1 | SM | m/s            | zonal 10-m wind speed, >0 increases uVel
                0575      EXFvwind|  1 | SM | m/s            | meridional 10-m wind speed, >0 increases uVel
                0576      EXFwspee|  1 | SM | m/s            | 10-m wind speed modulus ( >= 0 )
                0577      EXFatemp|  1 | SM | degK           | surface (2-m) air temperature
                0578      EXFaqh  |  1 | SM | kg/kg          | surface (2-m) specific humidity
                0579      EXFevap |  1 | SM | m/s            | evaporation, > 0 increases salinity
                0580      EXFpreci|  1 | SM | m/s            | evaporation, > 0 decreases salinity
                0581      EXFsnow |  1 | SM | m/s            | snow precipitation, > 0 decreases salinity
                0582      EXFempmr|  1 | SM | m/s            | net upward freshwater flux, > 0 increases salinity
                0583      EXFpress|  1 | SM | N/m^2          | atmospheric pressure field
                0584 
                0585 References
                0586 ++++++++++
                0587 
                0588 Experiments and tutorials that use exf
                0589 ++++++++++++++++++++++++++++++++++++++
                0590 
                0591 -  Global Ocean experiment, in global\_with\_exf verification directory
                0592 
                0593 -  Labrador Sea experiment, in lab\_sea verification directory