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