C $Header: /u/gcmpack/MITgcm/pkg/exf/EXF_FIELDS.h,v 1.23 2017/10/06 00:03:56 jmc Exp $ C $Name: $ 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 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 including shortwave in W/m^2 C hflux = latent + sensible + lwflux + swflux 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 wspeed :: Surface (10-m) wind speed in m/s C >= 0 sqrt(u^2+v^2) C Typical range: 0 < wspeed < 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 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 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 :: Total Precipitation (rain+snow) in m/s of liquid water C > 0 for decrease in salt (ocean salinity) C Typical range: 0 < precip < 5e-7 C Input or input/output field C C snowprecip :: snow precipitation in m/s of equivalent liquid water 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 runoftemp :: Temperature of runoff in deg C C C saltflx :: Net upward salt flux in psu.kg/m^2/s C > 0 for decrease in SSS. C Typical origin: salty sea-ice formation / melting. C Units: when salinity (unit= psu) is expressed C in g/kg, saltflx unit becomes g/m^2/s. 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 tidePot :: Tidal geopotential forcing in m^2/s^2 C Typical range: -10 < apressure < +10 C Input field C NOTES: C ====== C C By default all surface forcing fields are defined at the center C of each grid (the rVel location in model/inc/GRID.h) unless C flags readStressOnAgrid or readStressOnCgrid are set. 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 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) COMMON /exf_wspeed_r/ wspeed _RL wspeed (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) COMMON /exfl_wspeed_r/ wspeed0, wspeed1 _RL wspeed0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL wspeed1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 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) COMMON /exf_netflux_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, hs, hl, lwflux, & evap, precip, snowprecip _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 hs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL hl (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL lwflux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL evap (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL precip (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL snowprecip (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) #ifdef EXF_READ_EVAP 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 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_snowprecip_r/ snowprecip0, snowprecip1 _RL snowprecip0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL snowprecip1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) # ifdef ALLOW_READ_TURBFLUXES COMMON /exfl_turb_r/ hs0, hs1, hl0, hl1 _RL hs0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL hs1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL hl0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL hl1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) # endif #endif /* ALLOW_ATM_TEMP */ C wStress :: wind-stress magnitude [Pa=N/m^2], @ grid-cell center C sh :: wind-speed [m/s] (always larger than uMin) COMMON /exfl_wind_r/ wStress, cw, sw, sh _RL wStress (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL cw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL sw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL sh (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) #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 #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) #ifdef ALLOW_ZENITHANGLE C--- COMMON /exf_zenith_angle_r/ C zen_albedo_table :: reference table of daily mean albedo C zen_albedo_pointer :: location of grid point in zen_albedo_table C zen_albedo :: overall albedo (direct=f(zen) + diffus=cst) C zen_fsol_diurnal :: incoming solar radiation (daily variable) C zen_fsol_daily :: incoming solar radiation (daily mean) COMMON /exf_zenith_angle_r/ & zen_albedo_table, zen_albedo_pointer, & zen_albedo, zen_fsol_diurnal, zen_fsol_daily _RL zen_albedo_table (366,181) _RL zen_albedo_pointer (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL zen_albedo (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL zen_fsol_diurnal (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL zen_fsol_daily (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) #endif #endif /* ALLOW_DOWNWARD_RADIATION */ #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 #ifdef ALLOW_RUNOFF COMMON /exfl_runoff_r/ runoff, runoff0, runoff1 _RL runoff (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL runoff0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL runoff1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) #endif #ifdef ALLOW_RUNOFTEMP COMMON /exfl_runoftemp_r/ runoftemp, runoftemp0, runoftemp1 _RL runoftemp (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL runoftemp0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL runoftemp1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) #endif #ifdef ALLOW_SALTFLX COMMON /exfl_saltflx_r/ saltflx, saltflx0, saltflx1 _RL saltflx (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL saltflx0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL saltflx1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) #endif #ifdef EXF_ALLOW_TIDES COMMON /exf_tidePot_r/ tidePot, tidePot0, tidePot1 _RL tidePot (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL tidePot0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL tidePot1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) #endif #ifdef EXF_SEAICE_FRACTION COMMON /exf_ice_areamask_r/ areamask, & areamask0, areamask1 _RL areamask (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL areamask0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL areamask1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) COMMON /exf_iceFraction_r/ exf_iceFraction _RS exf_iceFraction(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) #endif #ifdef ALLOW_CLIMSST_RELAXATION COMMON /exf_clim_sst_r/ climsst, & climsst0, climsst1 _RL climsst (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL climsst0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL climsst1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) #endif #ifdef ALLOW_CLIMSSS_RELAXATION COMMON /exf_clim_sss_r/ climsss, & climsss0, climsss1 _RL climsss (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL climsss0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL climsss1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) #endif #ifdef ALLOW_CLIMSTRESS_RELAXATION COMMON /exf_clim_stress_r/ & climustr, climvstr, & climustr0, climustr1, & climvstr0, climvstr1 _RL climustr (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL climustr0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL climustr1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL climvstr (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL climvstr0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL climvstr1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) #endif