![]() |
|
|||
File indexing completed on 2025-02-02 06:12:14 UTC
view on githubraw file Latest commit 701e10a9 on 2025-02-01 19:15:20 UTC0e09621e3e Patr*0001 CBOP 0002 C !ROUTINE: FFIELDS.h 0003 C !INTERFACE: 0004 C include "FFIELDS.h" 0005 C !DESCRIPTION: 0006 C \bv 0007 C *==========================================================* 0008 C | FFIELDS.h 0009 C | o Model forcing fields 0010 C *==========================================================* 0011 C | More flexible surface forcing configurations are f139f1d32d Jean*0012 C | available via, e.g., pkg/exf 0e09621e3e Patr*0013 C *==========================================================* 0014 C \ev 0015 CEOP 0016 C 0017 C fu :: Zonal surface wind stress in N/m^2 0018 C > 0 for increase in uVel, which is west to 0019 C east for cartesian and spherical polar grids 0020 C Typical range: -0.5 < fu < 0.5 0021 C Southwest C-grid U point 0022 C 0023 C fv :: Meridional surface wind stress in N/m^2 0024 C > 0 for increase in vVel, which is south to 0025 C north for cartesian and spherical polar grids 0026 C Typical range: -0.5 < fv < 0.5 0027 C Southwest C-grid V point 0028 C 0029 C EmPmR :: Net upward freshwater flux in kg/m2/s 0030 C EmPmR = Evaporation - precipitation - runoff 0031 C > 0 for increase in salt (ocean salinity) 0032 C Typical range: -1e-4 < EmPmR < 1e-4 0033 C Southwest C-grid tracer point 0034 C NOTE: for backward compatibility EmPmRfile is specified in 0035 C m/s when using external_fields_load.F. It is converted 0036 C to kg/m2/s by multiplying by rhoConstFresh. 0037 C 2e7aec9951 dngo*0038 C saltFlux :: Net upward salt flux in g/kg.kg/m^2/s = g/m^2/s 0e09621e3e Patr*0039 C flux of Salt taken out of the ocean per time unit (second). 2e7aec9951 dngo*0040 C Note: only used when salty sea-ice forms or melts. 0e09621e3e Patr*0041 C > 0 for decrease in SSS. 0042 C Southwest C-grid tracer point 0043 C 0044 C Qnet :: Net upward surface heat flux (including shortwave) in W/m^2 0045 C Qnet = latent + sensible + net longwave + net shortwave 0046 C > 0 for decrease in theta (ocean cooling) 0047 C Typical range: -250 < Qnet < 600 0048 C Southwest C-grid tracer point 0049 C 0050 C Qsw :: Net upward shortwave radiation in W/m^2 0051 C Qsw = - ( downward - ice and snow absorption - reflected ) 0052 C > 0 for decrease in theta (ocean cooling) 0053 C Typical range: -350 < Qsw < 0 0054 C Southwest C-grid tracer point 0055 C 0056 C SST :: Sea surface temperature in degrees C for relaxation 0057 C Southwest C-grid tracer point 0058 C 2e7aec9951 dngo*0059 C SSS :: Sea surface salinity in g/kg for relaxation 0e09621e3e Patr*0060 C Southwest C-grid tracer point 0061 C 2e7aec9951 dngo*0062 C lambdaThetaClimRelax :: Inverse time scale for SST relaxation ( 1/s ). 0e09621e3e Patr*0063 C 2e7aec9951 dngo*0064 C lambdaSaltClimRelax :: Inverse time scale for SSS relaxation ( 1/s ). 0e09621e3e Patr*0065 37fcf9d1cc Jean*0066 C phiTide2d :: vertically uniform (2d-map), time-dependent geopotential 0067 C anomaly (e.g., tidal forcing); Units are m^2/s^2 2e7aec9951 dngo*0068 C pLoad :: for the ocean: atmospheric pressure anomaly (relative to 0069 C "surf_pRef") at z=eta 0e09621e3e Patr*0070 C Units are Pa=N/m^2 2e7aec9951 dngo*0071 C for the atmosphere (hack): geopotential anomaly of the orography 0072 C Units are m^2/s^2 37fcf9d1cc Jean*0073 C sIceLoad :: sea-ice loading, expressed in Mass of ice+snow / area unit 0e09621e3e Patr*0074 C Units are kg/m^2 0075 C Note: only used with Sea-Ice & RealFreshWater formulation 37fcf9d1cc Jean*0076 C addMass :: source (<0: sink) of fluid in the domain interior 0077 C (generalisation of oceanic real fresh-water flux) 0078 C Units are kg/s (mass per unit of time) 0079 C frictionHeating :: heating caused by friction and momentum dissipation 0080 C Units are in W/m^2 (thickness integrated) 0e09621e3e Patr*0081 C eddyPsiX -Zonal Eddy Streamfunction in m^2/s used in taueddy_external_forcing.F 0082 C eddyPsiY -Meridional Streamfunction in m^2/s used in taueddy_external_forcing.F 0083 C EfluxY - y-component of Eliassen-Palm flux vector 0084 C EfluxP - p-component of Eliassen-Palm flux vector 0085 0086 COMMON /FFIELDS_fu/ fu 0087 COMMON /FFIELDS_fv/ fv 0088 COMMON /FFIELDS_Qnet/ Qnet 0089 COMMON /FFIELDS_Qsw/ Qsw 0090 COMMON /FFIELDS_EmPmR/ EmPmR 0091 COMMON /FFIELDS_saltFlux/ saltFlux 0092 COMMON /FFIELDS_SST/ SST 0093 COMMON /FFIELDS_SSS/ SSS 0094 COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax 0095 COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax 37fcf9d1cc Jean*0096 COMMON /FFIELDS_phiTide/ phiTide2d 0e09621e3e Patr*0097 COMMON /FFIELDS_pLoad/ pLoad 0098 COMMON /FFIELDS_sIceLoad/ sIceLoad 0099 0100 _RS fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0101 _RS fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0102 _RS Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0103 _RS Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0104 _RS EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0105 _RS saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0106 _RS SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0107 _RS SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0108 _RS lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0109 _RS lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 37fcf9d1cc Jean*0110 _RS phiTide2d(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0e09621e3e Patr*0111 _RS pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0112 _RS sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0113 701e10a905 Mart*0114 C gcmSST :: model in-situ Sea Surface Temperature (SST); corresponds to 0115 C surface-level model variable "theta", except if using TEOS-10 ; 0116 C in that case a conversion from model Conservative Temperature 0117 C "theta" is applied. Note: not defined under an ice-shelf 0118 COMMON /FFIELDS_INSITU_TEMP/ gcmSST 0119 _RL gcmSST(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0120 37fcf9d1cc Jean*0121 #ifdef ALLOW_ADDFLUID 0122 COMMON /FFIELDS_ADD_FLUID/ addMass 0123 _RL addMass(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) 0124 #endif 0125 #ifdef ALLOW_FRICTION_HEATING 0126 COMMON /FFIELDS_frictionHeat/ frictionHeating 0127 _RS frictionHeating(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) 0128 #endif 0129 #ifdef ALLOW_GEOTHERMAL_FLUX 0130 C geothermalFlux :: Upward geothermal flux through bottom cell [W/m^2] 0131 C > 0 for increase in theta (ocean warming) 0132 C Typical range: 0 < geothermalFlux < 1.5 W/m^2 0133 C (global mean on the order 0.09 - 0.1 W/m^2) 0134 COMMON /FFIELDS_geothermal/ geothermalFlux 0135 _RS geothermalFlux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0136 #endif 2e7aec9951 dngo*0137 #ifdef ALLOW_BALANCE_FLUXES 0138 C weight2BalanceFlx :: weight used for applying weighted correction 0139 C to global-mean surf. flux imbalance ; no-units 0140 COMMON /FFIELDS_W2BALANCE/ weight2BalanceFlx 0141 _RS weight2BalanceFlx(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0142 #endif 37fcf9d1cc Jean*0143 0144 C- jmc: commented out until corresponding (ghost-like) code apparition 0145 C dQdT :: Thermal relaxation coefficient in W/m^2/degrees 0146 C Southwest C-grid tracer point 0147 c COMMON /FFIELDS_dQdT/ dQdT 0148 c _RS dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0149 c#ifdef ALLOW_EP_FLUX 0150 c COMMON /FFIELDS_eflux/ EfluxY,EfluxP 0151 c _RL EfluxY (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) 0152 c _RL EfluxP (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) 0153 c#endif 0e09621e3e Patr*0154 0155 #ifdef ALLOW_EDDYPSI 37fcf9d1cc Jean*0156 C uEulerMean :: The Eulerian mean Zonal velocity (residual less bolus velocity) 0157 C vEulerMean :: The Eulerian mean Merid. velocity (residual less bolus velocity) 0158 C tauxEddy :: The eddy stress used in the momentum equation of a residual model 0159 C tauyEddy :: The eddy stress used in the momentum equation of a residual model 0160 0161 COMMON /FFIELDS_eddyPsi_RS/ eddyPsiX, eddyPsiY 0e09621e3e Patr*0162 _RS eddyPsiX (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) 0163 _RS eddyPsiY (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) 37fcf9d1cc Jean*0164 0165 COMMON /FFIELDS_eddyPsi_RL/ 0166 & tauxEddy, tauyEddy, uEulerMean, vEulerMean 0167 _RL tauxEddy (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) 0168 _RL tauyEddy (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) 0169 _RL uEulerMean(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) 0170 _RL vEulerMean(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) 0171 #endif /* ALLOW_EDDYPSI */ 0e09621e3e Patr*0172 0173 #ifndef EXCLUDE_FFIELDS_LOAD 0174 C loadedRec :: time-record currently loaded (in temp arrays *[1]) 0175 C taux[0,1] :: Temp. for zonal wind stress 0176 C tauy[0,1] :: Temp. for merid. wind stress 0177 C Qnet[0,1] :: Temp. for heat flux 0178 C EmPmR[0,1] :: Temp. for fresh water flux 0179 C saltFlux[0,1] :: Temp. for isurface salt flux 0180 C SST[0,1] :: Temp. for theta climatalogy 0181 C SSS[0,1] :: Temp. for theta climatalogy 0182 C Qsw[0,1] :: Temp. for short wave component of heat flux 0183 C pLoad[0,1] :: Temp. for atmospheric pressure at z=eta 0184 C [0,1] :: End points for interpolation 0185 0186 COMMON /FFIELDS_I/ loadedRec 0187 INTEGER loadedRec(nSx,nSy) 0188 0189 COMMON /TDFIELDS/ 0190 & taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0, 0191 & taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1, 0192 & saltFlux0, saltFlux1 0193 #ifdef SHORTWAVE_HEATING 0194 & , Qsw0, Qsw1 0195 #endif 9c9abe7120 Jean*0196 #ifdef ALLOW_GEOTHERMAL_FLUX 0197 & , geothFlux0, geothFlux1 0198 #endif 0e09621e3e Patr*0199 #ifdef ATMOSPHERIC_LOADING 0200 & , pLoad0, pLoad1 0201 #endif 0202 0203 _RS taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0204 _RS tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0205 _RS Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0206 _RS EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0207 _RS saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0208 _RS SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0209 _RS SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0210 _RS taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0211 _RS tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0212 _RS Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0213 _RS EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0214 _RS saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0215 _RS SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0216 _RS SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 9c9abe7120 Jean*0217 #ifdef SHORTWAVE_HEATING 0218 _RS Qsw0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0219 _RS Qsw1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0220 #endif 0221 #ifdef ALLOW_GEOTHERMAL_FLUX 0222 _RS geothFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0223 _RS geothFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0224 #endif 0e09621e3e Patr*0225 #ifdef ATMOSPHERIC_LOADING 0226 _RS pLoad0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0227 _RS pLoad1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0228 #endif 0229 #endif /* EXCLUDE_FFIELDS_LOAD */ 0230 0231 C surfaceForcingU units are r_unit.m/s^2 (=m^2/s^2 if r=z) 0232 C -> usage in gU: gU = gU + surfaceForcingU/drF [m/s^2] 0233 C surfaceForcingV units are r_unit.m/s^2 (=m^2/s^-2 if r=z) 0234 C -> usage in gU: gV = gV + surfaceForcingV/drF [m/s^2] 0235 C 2e7aec9951 dngo*0236 C surfaceForcingS units are r_unit.g/kg/s (=g/kg.m/s if r=z) 0e09621e3e Patr*0237 C - EmPmR * S_surf plus salinity relaxation*drF(1) 2e7aec9951 dngo*0238 C -> usage in gS: gS = gS + surfaceForcingS/drF [g/kg/s] 0e09621e3e Patr*0239 C 0240 C surfaceForcingT units are r_unit.Kelvin/s (=Kelvin.m/s if r=z) 0241 C - Qnet (+Qsw) plus temp. relaxation*drF(1) 0242 C -> calculate -lambda*(T(model)-T(clim)) 0243 C Qnet assumed to be net heat flux including ShortWave rad. 0244 C -> usage in gT: gT = gT + surfaceforcingT/drF [K/s] 9c9abe7120 Jean*0245 C adjustColdSST_diag :: diagnostic field for how much too cold (below 0246 C Tfreezing) SST has been adjusted (with allowFreezing=T). 0247 C > 0 for increase of SST (up to Tfreezing). 0248 C Units are r_unit.K/s (=Kelvin.m/s if r=z). 0249 C Note: 1) allowFreezing option is a crude hack to fix too cold SST that 0250 C results from missing seaice component. It should never be used 0251 C with any seaice component, neither current seaice pkg (pkg/seaice 0252 C or pkg/thsice) nor a seaice component from atmos model when 0253 C coupled to it. 0254 C 2) this diagnostic is currently used by KPP package (kpp_calc.F 0255 C and kpp_transport_t.F) although it is not very clear it should. 0e09621e3e Patr*0256 0257 COMMON /SURFACE_FORCING/ 0258 & surfaceForcingU, 0259 & surfaceForcingV, 0260 & surfaceForcingT, 0261 & surfaceForcingS, 9c9abe7120 Jean*0262 & adjustColdSST_diag 0e09621e3e Patr*0263 _RL surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0264 _RL surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0265 _RL surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0266 _RL surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 9c9abe7120 Jean*0267 _RL adjustColdSST_diag(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 37fcf9d1cc Jean*0268 f139f1d32d Jean*0269 C botDragU :: bottom stress (for diagnostics), Zonal component 0270 C Units are N/m^2 ; > 0 increase uVel @ bottom 0271 C botDragV :: bottom stress (for diagnostics), Merid. component 0272 C Units are N/m^2 ; > 0 increase vVel @ bottom 0273 COMMON /FFIELDS_bottomStress/ botDragU, botDragV 0274 _RS botDragU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0275 _RS botDragV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0276 37fcf9d1cc Jean*0277 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| cf705a6c8e Mart*0278 0279 C- Extra mean heat flux field specific to this experiment 0280 COMMON /Mean_qnet/ Qnetm 0281 _RS Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0282 0283 c #include "../code_ad/cost_local.h" 0284 C- Content of this experiment specific header file above is added here: 0285 C Define some local weights specific to this experiment 0286 C whfluxm :: weight for heat flux 0287 C wtheta :: dummy weight for temperature 0288 COMMON /COST_LOCAL_WEIGHTS/ whfluxm, wtheta 0289 _RL whfluxm(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) 0290 _RL wtheta ( Nr,nSx,nSy )
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated from https://github.com/MITgcm/MITgcm by the 2.2.1-MITgcm-0.1 LXR engine. The LXR team |
![]() ![]() |