1 |
C $Header: /u/gcmpack/MITgcm/model/inc/FFIELDS.h,v 1.47 2015/01/20 20:43:29 jmc Exp $ |
2 |
C $Name: $ |
3 |
CBOP |
4 |
C !ROUTINE: FFIELDS.h |
5 |
C !INTERFACE: |
6 |
C include "FFIELDS.h" |
7 |
C !DESCRIPTION: |
8 |
C \bv |
9 |
C *==========================================================* |
10 |
C | FFIELDS.h |
11 |
C | o Model forcing fields |
12 |
C *==========================================================* |
13 |
C | More flexible surface forcing configurations are |
14 |
C | available via pkg/exf and pkg/seaice |
15 |
C *==========================================================* |
16 |
C \ev |
17 |
CEOP |
18 |
C |
19 |
C fu :: Zonal surface wind stress in N/m^2 |
20 |
C > 0 for increase in uVel, which is west to |
21 |
C east for cartesian and spherical polar grids |
22 |
C Typical range: -0.5 < fu < 0.5 |
23 |
C Southwest C-grid U point |
24 |
C |
25 |
C fv :: Meridional surface wind stress in N/m^2 |
26 |
C > 0 for increase in vVel, which is south to |
27 |
C north for cartesian and spherical polar grids |
28 |
C Typical range: -0.5 < fv < 0.5 |
29 |
C Southwest C-grid V point |
30 |
C |
31 |
C EmPmR :: Net upward freshwater flux in kg/m2/s |
32 |
C EmPmR = Evaporation - precipitation - runoff |
33 |
C > 0 for increase in salt (ocean salinity) |
34 |
C Typical range: -1e-4 < EmPmR < 1e-4 |
35 |
C Southwest C-grid tracer point |
36 |
C NOTE: for backward compatibility EmPmRfile is specified in |
37 |
C m/s when using external_fields_load.F. It is converted |
38 |
C to kg/m2/s by multiplying by rhoConstFresh. |
39 |
C |
40 |
C saltFlux :: Net upward salt flux in psu.kg/m^2/s |
41 |
C flux of Salt taken out of the ocean per time unit (second). |
42 |
C Note: a) only used when salty sea-ice forms or melts. |
43 |
C b) units: when salinity (unit= psu) is expressed |
44 |
C in g/kg, saltFlux unit becomes g/m^2/s. |
45 |
C > 0 for decrease in SSS. |
46 |
C Southwest C-grid tracer point |
47 |
C |
48 |
C Qnet :: Net upward surface heat flux (including shortwave) in W/m^2 |
49 |
C Qnet = latent + sensible + net longwave + net shortwave |
50 |
C > 0 for decrease in theta (ocean cooling) |
51 |
C Typical range: -250 < Qnet < 600 |
52 |
C Southwest C-grid tracer point |
53 |
C |
54 |
C Qsw :: Net upward shortwave radiation in W/m^2 |
55 |
C Qsw = - ( downward - ice and snow absorption - reflected ) |
56 |
C > 0 for decrease in theta (ocean cooling) |
57 |
C Typical range: -350 < Qsw < 0 |
58 |
C Southwest C-grid tracer point |
59 |
C |
60 |
C SST :: Sea surface temperature in degrees C for relaxation |
61 |
C Southwest C-grid tracer point |
62 |
C |
63 |
C SSS :: Sea surface salinity in psu for relaxation |
64 |
C Southwest C-grid tracer point |
65 |
C |
66 |
C lambdaThetaClimRelax :: Inverse time scale for relaxation ( 1/s ). |
67 |
C |
68 |
C lambdaSaltClimRelax :: Inverse time scale for relaxation ( 1/s ). |
69 |
|
70 |
C phiTide2d :: vertically uniform (2d-map), time-dependent geopotential |
71 |
C anomaly (e.g., tidal forcing); Units are m^2/s^2 |
72 |
C pLoad :: for the ocean: atmospheric pressure at z=eta |
73 |
C Units are Pa=N/m^2 |
74 |
C for the atmosphere: geopotential of the orography |
75 |
C Units are meters (converted) |
76 |
C sIceLoad :: sea-ice loading, expressed in Mass of ice+snow / area unit |
77 |
C Units are kg/m^2 |
78 |
C Note: only used with Sea-Ice & RealFreshWater formulation |
79 |
C addMass :: source (<0: sink) of fluid in the domain interior |
80 |
C (generalisation of oceanic real fresh-water flux) |
81 |
C Units are kg/s (mass per unit of time) |
82 |
C frictionHeating :: heating caused by friction and momentum dissipation |
83 |
C Units are in W/m^2 (thickness integrated) |
84 |
C eddyPsiX -Zonal Eddy Streamfunction in m^2/s used in taueddy_external_forcing.F |
85 |
C eddyPsiY -Meridional Streamfunction in m^2/s used in taueddy_external_forcing.F |
86 |
C EfluxY - y-component of Eliassen-Palm flux vector |
87 |
C EfluxP - p-component of Eliassen-Palm flux vector |
88 |
|
89 |
COMMON /FFIELDS_fu/ fu |
90 |
COMMON /FFIELDS_fv/ fv |
91 |
COMMON /FFIELDS_Qnet/ Qnet |
92 |
COMMON /FFIELDS_Qsw/ Qsw |
93 |
COMMON /FFIELDS_EmPmR/ EmPmR |
94 |
COMMON /FFIELDS_saltFlux/ saltFlux |
95 |
COMMON /FFIELDS_SST/ SST |
96 |
COMMON /FFIELDS_SSS/ SSS |
97 |
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax |
98 |
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax |
99 |
COMMON /FFIELDS_phiTide/ phiTide2d |
100 |
COMMON /FFIELDS_pLoad/ pLoad |
101 |
COMMON /FFIELDS_sIceLoad/ sIceLoad |
102 |
|
103 |
_RS fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
104 |
_RS fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
105 |
_RS Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
106 |
_RS Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
107 |
_RS EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
108 |
_RS saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
109 |
_RS SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
110 |
_RS SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
111 |
_RS lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
112 |
_RS lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
113 |
_RS phiTide2d(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
114 |
_RS pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
115 |
_RS sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
116 |
|
117 |
#ifdef ALLOW_ADDFLUID |
118 |
COMMON /FFIELDS_ADD_FLUID/ addMass |
119 |
_RL addMass(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
120 |
#endif |
121 |
#ifdef ALLOW_FRICTION_HEATING |
122 |
COMMON /FFIELDS_frictionHeat/ frictionHeating |
123 |
_RS frictionHeating(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
124 |
#endif |
125 |
#ifdef ALLOW_GEOTHERMAL_FLUX |
126 |
C geothermalFlux :: Upward geothermal flux through bottom cell [W/m^2] |
127 |
C > 0 for increase in theta (ocean warming) |
128 |
C Typical range: 0 < geothermalFlux < 1.5 W/m^2 |
129 |
C (global mean on the order 0.09 - 0.1 W/m^2) |
130 |
COMMON /FFIELDS_geothermal/ geothermalFlux |
131 |
_RS geothermalFlux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
132 |
#endif |
133 |
|
134 |
#ifdef ALLOW_HFLUXM_CONTROL |
135 |
COMMON /Mean_qnet/ Qnetm |
136 |
_RS Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
137 |
#endif |
138 |
|
139 |
C- jmc: commented out until corresponding (ghost-like) code apparition |
140 |
C dQdT :: Thermal relaxation coefficient in W/m^2/degrees |
141 |
C Southwest C-grid tracer point |
142 |
c COMMON /FFIELDS_dQdT/ dQdT |
143 |
c _RS dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
144 |
c#ifdef ALLOW_EP_FLUX |
145 |
c COMMON /FFIELDS_eflux/ EfluxY,EfluxP |
146 |
c _RL EfluxY (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
147 |
c _RL EfluxP (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
148 |
c#endif |
149 |
|
150 |
#ifdef ALLOW_EDDYPSI |
151 |
C uEulerMean :: The Eulerian mean Zonal velocity (residual less bolus velocity) |
152 |
C vEulerMean :: The Eulerian mean Merid. velocity (residual less bolus velocity) |
153 |
C tauxEddy :: The eddy stress used in the momentum equation of a residual model |
154 |
C tauyEddy :: The eddy stress used in the momentum equation of a residual model |
155 |
|
156 |
COMMON /FFIELDS_eddyPsi_RS/ eddyPsiX, eddyPsiY |
157 |
_RS eddyPsiX (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
158 |
_RS eddyPsiY (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
159 |
|
160 |
COMMON /FFIELDS_eddyPsi_RL/ |
161 |
& tauxEddy, tauyEddy, uEulerMean, vEulerMean |
162 |
_RL tauxEddy (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
163 |
_RL tauyEddy (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
164 |
_RL uEulerMean(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
165 |
_RL vEulerMean(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
166 |
#endif /* ALLOW_EDDYPSI */ |
167 |
|
168 |
#ifndef EXCLUDE_FFIELDS_LOAD |
169 |
C loadedRec :: time-record currently loaded (in temp arrays *[1]) |
170 |
C taux[0,1] :: Temp. for zonal wind stress |
171 |
C tauy[0,1] :: Temp. for merid. wind stress |
172 |
C Qnet[0,1] :: Temp. for heat flux |
173 |
C EmPmR[0,1] :: Temp. for fresh water flux |
174 |
C saltFlux[0,1] :: Temp. for isurface salt flux |
175 |
C SST[0,1] :: Temp. for theta climatalogy |
176 |
C SSS[0,1] :: Temp. for theta climatalogy |
177 |
C Qsw[0,1] :: Temp. for short wave component of heat flux |
178 |
C pLoad[0,1] :: Temp. for atmospheric pressure at z=eta |
179 |
C [0,1] :: End points for interpolation |
180 |
|
181 |
COMMON /FFIELDS_I/ loadedRec |
182 |
INTEGER loadedRec(nSx,nSy) |
183 |
|
184 |
COMMON /TDFIELDS/ |
185 |
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0, |
186 |
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1, |
187 |
& saltFlux0, saltFlux1 |
188 |
#ifdef SHORTWAVE_HEATING |
189 |
& , Qsw0, Qsw1 |
190 |
#endif |
191 |
#ifdef ATMOSPHERIC_LOADING |
192 |
& , pLoad0, pLoad1 |
193 |
#endif |
194 |
|
195 |
_RS taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
196 |
_RS tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
197 |
_RS Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
198 |
_RS EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
199 |
_RS saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
200 |
_RS SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
201 |
_RS SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
202 |
_RS taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
203 |
_RS tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
204 |
_RS Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
205 |
_RS EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
206 |
_RS saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
207 |
_RS SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
208 |
_RS SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
209 |
#ifdef ATMOSPHERIC_LOADING |
210 |
_RS pLoad0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
211 |
_RS pLoad1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
212 |
#endif |
213 |
#ifdef SHORTWAVE_HEATING |
214 |
_RS Qsw1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
215 |
_RS Qsw0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
216 |
#endif |
217 |
#endif /* EXCLUDE_FFIELDS_LOAD */ |
218 |
|
219 |
C surfaceForcingU units are r_unit.m/s^2 (=m^2/s^2 if r=z) |
220 |
C -> usage in gU: gU = gU + surfaceForcingU/drF [m/s^2] |
221 |
C surfaceForcingV units are r_unit.m/s^2 (=m^2/s^-2 if r=z) |
222 |
C -> usage in gU: gV = gV + surfaceForcingV/drF [m/s^2] |
223 |
C |
224 |
C surfaceForcingS units are r_unit.psu/s (=psu.m/s if r=z) |
225 |
C - EmPmR * S_surf plus salinity relaxation*drF(1) |
226 |
C -> usage in gS: gS = gS + surfaceForcingS/drF [psu/s] |
227 |
C |
228 |
C surfaceForcingT units are r_unit.Kelvin/s (=Kelvin.m/s if r=z) |
229 |
C - Qnet (+Qsw) plus temp. relaxation*drF(1) |
230 |
C -> calculate -lambda*(T(model)-T(clim)) |
231 |
C Qnet assumed to be net heat flux including ShortWave rad. |
232 |
C -> usage in gT: gT = gT + surfaceforcingT/drF [K/s] |
233 |
C surfaceForcingTice |
234 |
C - equivalent Temperature flux in the top level that corresponds |
235 |
C to the melting or freezing of sea-ice. |
236 |
C Note that the surface level temperature is modified |
237 |
C directly by the sea-ice model in order to maintain |
238 |
C water temperature under sea-ice at the freezing |
239 |
C point. But we need to keep track of the |
240 |
C equivalent amount of heat that this surface-level |
241 |
C temperature change implies because it is used by |
242 |
C the KPP package (kpp_calc.F and kpp_transport_t.F). |
243 |
C Units are r_unit.K/s (=Kelvin.m/s if r=z) (>0 for ocean warming). |
244 |
|
245 |
COMMON /SURFACE_FORCING/ |
246 |
& surfaceForcingU, |
247 |
& surfaceForcingV, |
248 |
& surfaceForcingT, |
249 |
& surfaceForcingS, |
250 |
& surfaceForcingTice |
251 |
_RL surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
252 |
_RL surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
253 |
_RL surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
254 |
_RL surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
255 |
_RL surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
256 |
|
257 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |