C $Header: /u/gcmpack/MITgcm/pkg/exf/EXF_OPTIONS.h,v 1.42 2017/10/06 00:03:56 jmc Exp $ C $Name: $ CBOP C !ROUTINE: EXF_OPTIONS.h C !INTERFACE: C #include "EXF_OPTIONS.h" C !DESCRIPTION: C *==================================================================* C | CPP options file for EXternal Forcing (EXF) package: C | Control which optional features to compile in this package code. C *==================================================================* CEOP #ifndef EXF_OPTIONS_H #define EXF_OPTIONS_H #include "PACKAGES_CONFIG.h" #include "CPP_OPTIONS.h" #ifdef ALLOW_EXF #ifdef ECCO_CPPOPTIONS_H C-- When multi-package option-file ECCO_CPPOPTIONS.h is used (directly included C in CPP_OPTIONS.h), this option file is left empty since all options that C are specific to this package are assumed to be set in ECCO_CPPOPTIONS.h #else /* ndef ECCO_CPPOPTIONS_H */ C-- Package-specific Options & Macros go here C -------------------- C pkg/exf CPP options: C (see also table below on how to combine options) C > ( EXF_VERBOSE ) < replaced with run-time integer parameter "exf_debugLev" C C >>> ALLOW_ATM_WIND <<< C If defined, set default value of run-time param. "useAtmWind" to True. C If useAtmWind=True, read-in and use wind vector (uwind/vwind) C to compute surface wind stress. C C >>> ALLOW_ATM_TEMP <<< C This is the main EXF option controlling air-sea buoyancy fluxes: C If undefined, net heat flux (Qnet) and net fresh water flux C (EmP or EmPmR) are set according to hfluxfile & sfluxfile setting. C If defined, net heat flux and net fresh water flux are computed C from sum of various components (radiative SW,LW + turbulent heat C fluxes SH,LH ; Evap, Precip and optionally RunOff) thus ignoring C hfluxfile & sfluxfile. C In addition, it allows to read-in from files atmospheric temperature C and specific humidity, net radiative fluxes, and precip. C Also enable to read-in Evap (if EXF_READ_EVAP is defined) or C turbulent heat fluxes (if ALLOW_READ_TURBFLUXES is defined). C C >>> ALLOW_DOWNWARD_RADIATION <<< C If defined, downward long-wave and short-wave radiation C can be read-in form files to compute net lwflux and swflux. C C >>> ALLOW_ZENITHANGLE <<< C If defined, ocean albedo varies with the zenith angle, and C incoming fluxes at the top of the atmosphere are computed C C >>> ALLOW_BULKFORMULAE <<< C Allows the use of bulk formulae in order to estimate C turbulent fluxes (Sensible,Latent,Evap) at the ocean surface. C C >>> EXF_CALC_ATMRHO C Calculate the local air density as function of temp, humidity C and pressure C C >>> EXF_READ_EVAP <<< C If defined, evaporation field is read-in from file; C Note: if ALLOW_BULKFORMULAE is defined, evap that is computed from C atmospheric state will be replaced by read-in evap but computed C latent heat flux will be kept. C C >>> ALLOW_READ_TURBFLUXES <<< C If defined, turbulent heat fluxes (sensible and latent) can be read-in C from files (but overwritten if ALLOW_BULKFORMULAE is defined). C C >>> ALLOW_RUNOFF <<< C If defined, river and glacier runoff can be read-in from files. C C >>> ALLOW_SALTFLX <<< C If defined, upward salt flux can be read-in from files. C C >>> ALLOW_RUNOFTEMP <<< C If defined, river and glacier runoff temperature C can be read-in from files. C C >>> ATMOSPHERIC_LOADING <<< C If defined, atmospheric pressure can be read-in from files. C WARNING: this flag is set (define/undef) in CPP_OPTIONS.h C and cannot be changed here (in EXF_OPTIONS.h) C C >>> EXF_ALLOW_TIDES <<< C If defined, 2-D tidal geopotential can be read-in from files C C >>> EXF_SEAICE_FRACTION <<< C If defined, seaice fraction can be read-in from files (areaMaskFile) C C >>> ALLOW_CLIMSST_RELAXATION <<< C Allow the relaxation to a monthly climatology of sea surface C temperature, e.g. the Reynolds climatology. C C >>> ALLOW_CLIMSSS_RELAXATION <<< C Allow the relaxation to a monthly climatology of sea surface C salinity, e.g. the Levitus climatology. C C >>> USE_EXF_INTERPOLATION <<< C Allows to provide input field on arbitrary Lat-Lon input grid C (as specified in EXF_NML_04) and to interpolate to model grid. C Note: default is to interpolate unless {FLD}_interpMethod is set to 0 C C ==================================================================== C C The following CPP options: C ALLOW_ATM_WIND / useAtmWind (useWind) C ALLOW_ATM_TEMP (TEMP) C ALLOW_DOWNWARD_RADIATION (DOWN) C ALLOW_BULKFORMULAE (BULK) C EXF_READ_EVAP (EVAP) C ALLOW_READ_TURBFLUXES (TURB) C C permit all ocean-model forcing configurations listed in the 2 tables below. C The first configuration (A1,B1) is the flux-forced, ocean model. C Configurations A2,B3 and A2,B4 use pkg/exf open-water bulk formulae C to compute, from atmospheric variables, the missing surface fluxes. C The forcing fields in the rightmost column are defined in EXF_FIELDS.h C (ocean-model surface forcing field are defined in model/inc/FFIELDS.h) C C (A) Surface momentum flux: [model: fu,fv ; exf: ustress,vstress] C C # |useWind| actions C ---|-------|------------------------------------------------------------- C (1)| False | Read-in ustress,vstress (if needed in B, compute wind-speed) C | | C (2)| True | Read-in uwind,vwind ; compute wind stress ustress,vstress. C ---|-------|------------------------------------------------------------- C C (B) Surface buoyancy flux: C [ net heat flux: Qnet (exf: hflux), net short-wave: Qsw (exf: swflux) C fresh-water flux: EmPmR (exf: sflux) and saltFlux (exf: saltflx) ] C C # |TEMP |DOWN |BULK |EVAP |TURB | actions C ---|-----|-----|-----|-----|-----|------------------------------------- C (1)| - | - | - | - | - | Read-in hflux, swflux and sflux. C | | | | | | C (2)| - | def | - | - | - | Read-in hflux, swdown and sflux. C | | | | | | Compute swflux. C | | | | | | C (3)| def | def | def | - | - | Read-in atemp, aqh, swdown, lwdown, C | | | | | | precip, and runoff. C | | | | | | Compute hflux, swflux and sflux. C | | | | | | C (4)| def | - | def | - | - | Read-in atemp, aqh, swflux, lwflux, C | | | | | | precip, and runoff. C | | | | | | Compute hflux and sflux. C | | | | | | C (5)| def | def | - | def | def | Read-in hs, hl, swdown, lwdown, C | | | | | | evap, precip and runoff. C | | | | | | Compute hflux, swflux and sflux. C | | | | | | C (6)| def | - | - | def | def | Read-in hs, hl, swflux, lwflux, C | | | | | | evap, precip and runoff. C | | | | | | Compute hflux and sflux. C C ======================================================================= C- Bulk formulae related flags. #define ALLOW_ATM_TEMP #define ALLOW_ATM_WIND #define ALLOW_DOWNWARD_RADIATION #ifdef ALLOW_ATM_TEMP C Note: To use ALLOW_BULKFORMULAE or EXF_READ_EVAP, needs #define ALLOW_ATM_TEMP # define ALLOW_BULKFORMULAE # undef ALLOW_BULK_LARGEYEAGER04 # undef EXF_READ_EVAP # ifndef ALLOW_BULKFORMULAE C Note: To use ALLOW_READ_TURBFLUXES, ALLOW_ATM_TEMP needs to C be defined but ALLOW_BULKFORMULAE needs to be undef # define ALLOW_READ_TURBFLUXES # endif #endif /* ALLOW_ATM_TEMP */ C- Other forcing fields #define ALLOW_RUNOFF #undef ALLOW_RUNOFTEMP #define ALLOW_SALTFLX #if (defined (ALLOW_BULKFORMULAE) defined (ATMOSPHERIC_LOADING)) C Note: To use EXF_CALC_ATMRHO, both ALLOW_BULKFORMULAE C and ATMOSPHERIC_LOADING need to be defined # undef EXF_CALC_ATMRHO #endif C- Zenith Angle/Albedo related flags. #ifdef ALLOW_DOWNWARD_RADIATION # undef ALLOW_ZENITHANGLE #endif C- Use ocean_emissivity*lwdown in lwFlux. This flag should be defined C unless to reproduce old results (obtained with inconsistent old code) #ifdef ALLOW_DOWNWARD_RADIATION # define EXF_LWDOWN_WITH_EMISSIVITY #endif C- Relaxation to monthly climatologies. #define ALLOW_CLIMSST_RELAXATION #define ALLOW_CLIMSSS_RELAXATION C- Allows to read-in (2-d) tidal geopotential forcing #undef EXF_ALLOW_TIDES C- Allows to read-in seaice fraction from files (areaMaskFile) #undef EXF_SEAICE_FRACTION C- Use spatial interpolation to interpolate C forcing files from input grid to model grid. #undef USE_EXF_INTERPOLATION C for interpolated vector fields, rotate towards model-grid axis C using old rotation formulae (instead of grid-angles) #undef EXF_USE_OLD_VEC_ROTATION C for interpolation around N & S pole, use the old formulation C (no pole symmetry, single vector-comp interp, reset to 0 zonal-comp @ N.pole) #undef EXF_USE_OLD_INTERP_POLE #define EXF_INTERP_USE_DYNALLOC #if ( defined USE_EXF_INTERPOLATION defined EXF_INTERP_USE_DYNALLOC defined USING_THREADS ) # define EXF_IREAD_USE_GLOBAL_POINTER #endif #endif /* ndef ECCO_CPPOPTIONS_H */ #endif /* ALLOW_EXF */ #endif /* EXF_OPTIONS_H */