c $Header: /u/gcmpack/MITgcm/pkg/exf/exf_fields.h,v 1.12 2005/06/28 22:05:49 heimbach Exp $
c
c
c ==================================================================
c HEADER exf_fields
c ==================================================================
c
c o Header file for the surface flux data.
c
c started: Ralf.Giering@FastOpt.de 25-Mai-2000
c changed: field swap in adj. mode; heimbach@mit.edu 10-Jan-2002
c included runoff D. Stammer, Nov. 25, 2001
c mods for pkg/seaice: menemenlis@jpl.nasa.gov 20-Dec-2002
c
c ==================================================================
c HEADER exf_fields
c ==================================================================
c
c
c Field definitions, units, and sign conventions:
c ===============================================
c
c ustress :: Zonal surface wind stress in N/m^2
c > 0 for increase in uVel, which is west to
c east for cartesian and spherical polar grids
c Typical range: -0.5 < ustress < 0.5
c Input field
c
c vstress :: Meridional surface wind stress in N/m^2
c > 0 for increase in vVel, which is south to
c north for cartesian and spherical polar grids
c Typical range: -0.5 < vstress < 0.5
c Input field
c
c hflux :: Net upward surface heat flux excluding shortwave in W/m^2
c hflux = latent + sensible + lwflux
c > 0 for decrease in theta (ocean cooling)
c Typical range: -250 < hflux < 600
c Input field
c
c sflux :: Net upward freshwater flux in m/s
c sflux = evap - precip - runoff
c > 0 for increase in salt (ocean salinity)
c Typical range: -1e-7 < sflux < 1e-7
c Input field
c
c swflux :: Net upward shortwave radiation in W/m^2
c swflux = - ( swdown - ice and snow absorption - reflected )
c > 0 for decrease in theta (ocean cooling)
c Typical range: -350 < swflux < 0
c Input field
c
c uwind :: Surface (10-m) zonal wind velocity in m/s
c > 0 for increase in uVel, which is west to
c east for cartesian and spherical polar grids
c Typical range: -10 < uwind < 10
c Input or input/output field
c
c vwind :: Surface (10-m) meridional wind velocity in m/s
c > 0 for increase in vVel, which is south to
c north for cartesian and spherical polar grids
c Typical range: -10 < vwind < 10
c Input or input/output field
c
c atemp :: Surface (2-m) air temperature in deg K
c Typical range: 200 < atemp < 300
c Input or input/output field
c
c aqh :: Surface (2m) specific humidity in kg/kg
c Typical range: 0 < aqh < 0.02
c Input or input/output field
c
c lwflux :: Net upward longwave radiation in W/m^2
c lwflux = - ( lwdown - ice and snow absorption - emitted )
c > 0 for decrease in theta (ocean cooling)
c Typical range: -20 < lwflux < 170
c Input field
c
c evap :: Evaporation in m/s
c > 0 for increase in salt (ocean salinity)
c Typical range: 0 < evap < 2.5e-7
c Input, input/output, or output field
c
c precip :: Precipitation in m/s
c > 0 for decrease in salt (ocean salinity)
c Typical range: 0 < precip < 5e-7
c Input or input/output field
c
c runoff :: River and glacier runoff in m/s
c > 0 for decrease in salt (ocean salinity)
c Typical range: 0 < runoff < ????
c Input or input/output field
c
c swdown :: Downward shortwave radiation in W/m^2
c > 0 for increase in theta (ocean warming)
c Typical range: 0 < swdown < 450
c Input/output field
c
c lwdown :: Downward longwave radiation in W/m^2
c > 0 for increase in theta (ocean warming)
c Typical range: 50 < lwdown < 450
c Input/output field
c
c apressure :: Atmospheric pressure field in N/m^2
c > 0 for ????
c Typical range: ???? < apressure < ????
c Input field
c
c hs :: sensible heat flux into ocean in W/m^2
c > 0 for increase in theta (ocean warming)
c
c hl :: latent heat flux into ocean in W/m^2
c > 0 for increase in theta (ocean warming)
c
c
c NOTES:
c ======
c
c All surface forcing fields are defined at the center of
c each grid (the rVel location in model/inc/GRID.h) with
c one exception. When both ALLOW_BULKFORMULAE and
c USE_EXF_INTERPOLATION are undefined, ustress and vstress are
c defined at the Southwest C-grid U and V points, respectively.
c
c Input and output units and sign conventions can be customized
c using variables exf_inscal_* and exf_outscal_*, which are set
c by exf_readparms.F
c
c Output fields fu, fv, Qnet, Qsw, and EmPmR are
c defined in FFIELDS.h
c
c #ifndef SHORTWAVE_HEATING, hflux includes shortwave,
c that is, hflux = latent + sensible + lwflux +swflux
c
c Arrays *0 and *1 below are used for temporal interpolation.
c
common /exf_stress_r/ ustress, vstress
_RL ustress (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
_RL vstress (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /exfl_ustress_r/ ustress0, ustress1
_RL ustress0 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
_RL ustress1 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /exfl_vstress_r/ vstress0, vstress1
_RL vstress0 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
_RL vstress1 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
#ifdef ALLOW_ATM_WIND
common /exf_atm_wind_r/ uwind, vwind
_RL uwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
_RL vwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /exfl_uwind_r/ uwind0, uwind1
_RL uwind0 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
_RL uwind1 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /exfl_vwind_r/ vwind0, vwind1
_RL vwind0 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
_RL vwind1 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
#endif
common /exf_hsflux_r/ hflux, sflux
_RL hflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
_RL sflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /exfl_hflux_r/ hflux0, hflux1
_RL hflux0 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
_RL hflux1 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /exfl_sflux_r/ sflux0, sflux1
_RL sflux0 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
_RL sflux1 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
#ifdef ALLOW_ATM_TEMP
common /exf_atm_temp_r/ atemp, aqh, lwflux, precip
_RL atemp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
_RL aqh (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
_RL lwflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
_RL precip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /exfl_atemp_r/ atemp0, atemp1
_RL atemp0 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
_RL atemp1 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /exfl_aqh_r/ aqh0, aqh1
_RL aqh0 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
_RL aqh1 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /exfl_lwflux_r/ lwflux0, lwflux1
_RL lwflux0 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
_RL lwflux1 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /exfl_precip_r/ precip0, precip1
_RL precip0 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
_RL precip1 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /exfl_turb_r/ hs, hl
_RL hs (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
_RL hl (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
#endif
#if defined(ALLOW_ATM_TEMP) defined(SHORTWAVE_HEATING)
common /exf_swflux_r/ swflux
_RL swflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /exfl_swflux_r/ swflux0, swflux1
_RL swflux0 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
_RL swflux1 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
#endif
#if defined(ALLOW_ATM_TEMP) defined(EXF_READ_EVAP)
common /exf_evap/ evap
_RL evap (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /exfl_evap_r/ evap0, evap1
_RL evap0 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
_RL evap1 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
#endif
#ifdef ALLOW_DOWNWARD_RADIATION
common /exf_rad_down_r/
& swdown, lwdown, swdown0, swdown1, lwdown0, lwdown1
_RL swdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
_RL lwdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
_RL swdown0 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
_RL swdown1 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
_RL lwdown0 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
_RL lwdown1 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
#endif
#ifdef ATMOSPHERIC_LOADING
common /exf_apressure_r/ apressure, apressure0, apressure1
_RL apressure (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
_RL apressure0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
_RL apressure1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
#endif
#if defined (ALLOW_RUNOFF) defined (ALLOW_SEAICE)
common /exfl_runoff_r/ runoff
_RL runoff (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
#endif