1 |
\section{EXF: The external forcing package |
\subsection{EXF: The external forcing package |
2 |
\label{sec:pkg:exf}} |
\label{sec:pkg:exf}} |
3 |
\begin{rawhtml} |
\begin{rawhtml} |
4 |
<!-- CMIREDIR:sectionexf: --> |
<!-- CMIREDIR:sectionexf: --> |
5 |
\end{rawhtml} |
\end{rawhtml} |
6 |
|
|
7 |
|
Authors: Patrick Heimbach and Dimitris Menemenlis |
8 |
|
|
9 |
\subsection{Introduction |
\subsubsection{Introduction |
10 |
\label{sec:pkg:exf:intro}} |
\label{sec:pkg:exf:intro}} |
11 |
|
|
12 |
The external forcing package, in conjunction with the |
The external forcing package, in conjunction with the |
22 |
CPP options enable or disable different aspects of the package |
CPP options enable or disable different aspects of the package |
23 |
(Section \ref{sec:pkg:exf:config}). |
(Section \ref{sec:pkg:exf:config}). |
24 |
Runtime options, flags, filenames and field-related dates/times are |
Runtime options, flags, filenames and field-related dates/times are |
25 |
set in \texttt{data.exf} and \texttt{data.exf\_clim} |
set in \texttt{data.exf} |
26 |
(Section \ref{sec:pkg:exf:runtime}). |
(Section \ref{sec:pkg:exf:runtime}). |
27 |
A description of key subroutines is given in Section |
A description of key subroutines is given in Section |
28 |
\ref{sec:pkg:exf:subroutines}. |
\ref{sec:pkg:exf:subroutines}. |
29 |
Input fields, units and sign conventions are summarized in |
Input fields, units and sign conventions are summarized in |
30 |
Section \ref{sec:pkg:exf:fields_units}, and available diagnostics |
Section \ref{sec:pkg:exf:fields_units}, and available diagnostics |
31 |
output is listed in Section \ref{sec:pkg:exf:fields_diagnostics}. |
output is listed in Section \ref{sec:pkg:exf:diagnostics}. |
32 |
|
|
33 |
%---------------------------------------------------------------------- |
%---------------------------------------------------------------------- |
34 |
|
|
35 |
\subsection{EXF configuration, compiling \& running} |
\subsubsection{EXF configuration, compiling \& running} |
36 |
|
|
37 |
\subsubsection{Compile-time options |
\paragraph{Compile-time options |
38 |
\label{sec:pkg:exf:config}} |
\label{sec:pkg:exf:config}} |
39 |
|
~ |
40 |
|
|
41 |
As with all MITgcm packages, EXF can be turned on or off at compile time |
As with all MITgcm packages, EXF can be turned on or off at compile time |
42 |
using the \texttt{packages.conf} file or the \texttt{genmake2} |
% |
43 |
\texttt{-enable=exf} or \texttt{-disable=exf} switches. |
\begin{itemize} |
44 |
|
% |
45 |
|
\item |
46 |
|
using the \texttt{packages.conf} file by adding \texttt{exf} to it, |
47 |
|
% |
48 |
|
\item |
49 |
|
or using \texttt{genmake2} adding |
50 |
|
\texttt{-enable=exf} or \texttt{-disable=exf} switches |
51 |
|
% |
52 |
|
\item |
53 |
|
\textit{required packages and CPP options}: \\ |
54 |
|
EXF requires the calendar package \texttt{cal} to be enabled; |
55 |
|
no additional CPP options are required. |
56 |
|
% |
57 |
|
\end{itemize} |
58 |
|
(see Section \ref{sec:buildingCode}). |
59 |
|
|
60 |
Parts of the exf code can be enabled or disabled at compile time |
Parts of the EXF code can be enabled or disabled at compile time |
61 |
via CPP preprocessor flags. These options are set in either |
via CPP preprocessor flags. These options are set in either |
62 |
\texttt{EXF\_OPTIONS.h} or in \texttt{ECCO\_CPPOPTIONS.h}. |
\texttt{EXF\_OPTIONS.h} or in \texttt{ECCO\_CPPOPTIONS.h}. |
63 |
Table \ref{tab:pkg:exf:cpp} summarizes these options. |
Table \ref{tab:pkg:exf:cpp} summarizes these options. |
64 |
|
|
65 |
\begin{table}[b!] |
\begin{table}[b!] |
66 |
\label{tab:pkg:exf:cpp} |
\centering |
67 |
{\footnotesize |
{\footnotesize |
68 |
\begin{tabular}{|l|l|} |
\begin{tabular}{|l|l|} |
69 |
\hline |
\hline |
85 |
\hline |
\hline |
86 |
\multicolumn{2}{|c|}{\textit{used in conjunction with relaxation to prescribed (climatological) fields}} \\ |
\multicolumn{2}{|c|}{\textit{used in conjunction with relaxation to prescribed (climatological) fields}} \\ |
87 |
\hline |
\hline |
|
\texttt{ALLOW\_CLIMTEMP\_RELAXATION} & |
|
|
relaxation to 3-D temperature climatology \\ |
|
|
\texttt{ALLOW\_CLIMSALT\_RELAXATION} & |
|
|
relaxation to 3-D salinity climatology \\ |
|
88 |
\texttt{ALLOW\_CLIMSST\_RELAXATION} & |
\texttt{ALLOW\_CLIMSST\_RELAXATION} & |
89 |
relaxation to 2-D SST climatology \\ |
relaxation to 2-D SST climatology \\ |
90 |
\texttt{ALLOW\_CLIMSSS\_RELAXATION} & |
\texttt{ALLOW\_CLIMSSS\_RELAXATION} & |
98 |
\end{tabular} |
\end{tabular} |
99 |
} |
} |
100 |
\caption{~} |
\caption{~} |
101 |
|
\label{tab:pkg:exf:cpp} |
102 |
\end{table} |
\end{table} |
103 |
|
|
104 |
|
|
107 |
\subsubsection{Run-time parameters |
\subsubsection{Run-time parameters |
108 |
\label{sec:pkg:exf:runtime}} |
\label{sec:pkg:exf:runtime}} |
109 |
|
|
110 |
Run-time parameters are set in files \texttt{data.pkg}, |
Run-time parameters are set in files |
111 |
and \texttt{data.pkg\_clim} (for relaxation/climatological fields) |
\texttt{data.pkg}, \texttt{data.exf}, and |
112 |
|
\texttt{data.exf\_clim} (for relaxation/climatological fields) |
113 |
which are read in \texttt{exf\_readparms.F}. |
which are read in \texttt{exf\_readparms.F}. |
114 |
Run-time parameters may be broken into 2 categories: |
Run-time parameters may be broken into 3 categories: |
115 |
(i) general flags and parameters, and |
(i) switching on/off the package at runtime, |
116 |
(ii) attributes for each forcing and climatological field. |
(ii) general flags and parameters, and |
117 |
|
(iii) attributes for each forcing and climatological field. |
|
\paragraph{General flags and parameters} |
|
118 |
|
|
119 |
~ |
\paragraph{Enabling the package} |
120 |
|
~ \\ |
121 |
|
% |
122 |
|
A package is switched on/off at runtime by setting |
123 |
|
(e.g. for EXF) \texttt{useEXF = .TRUE.} in \texttt{data.pkg}. |
124 |
|
|
125 |
\begin{table}[h!] |
\paragraph{General flags and parameters} |
126 |
\label{tab:pkg:exf:runtime_flags} |
~ \\ |
127 |
|
% |
128 |
|
\begin{table}[!ht] |
129 |
|
\centering |
130 |
{\footnotesize |
{\footnotesize |
131 |
\begin{tabular}{|l|c|l|} |
\begin{tabular}{|l|c|l|} |
132 |
\hline |
\hline |
147 |
max. allowed wind stress $N/m^2$ \\ |
max. allowed wind stress $N/m^2$ \\ |
148 |
exf\_albedo & \texttt{0.1} & |
exf\_albedo & \texttt{0.1} & |
149 |
surface albedo used to compute downward vs. net radiative fluxes \\ |
surface albedo used to compute downward vs. net radiative fluxes \\ |
150 |
|
climtempfreeze & \texttt{-1.9} & |
151 |
|
??? \\ |
152 |
|
ocean\_emissivity & \texttt{} & |
153 |
|
longwave ocean-surface emissivity \\ |
154 |
|
ice\_emissivity & \texttt{} & |
155 |
|
longwave seaice emissivity \\ |
156 |
|
snow\_emissivity & \texttt{} & |
157 |
|
longwave snow emissivity \\ |
158 |
|
exf\_iceCd & \texttt{1.63E-3} & |
159 |
|
drag coefficient over sea-ice \\ |
160 |
|
exf\_iceCe & \texttt{1.63E-3} & |
161 |
|
evaporation transfer coeff. over sea-ice \\ |
162 |
|
exf\_iceCh & \texttt{1.63E-3} & |
163 |
|
sensible heat transfer coeff. over sea-ice \\ |
164 |
|
exf\_scal\_BulkCdn & \texttt{1.} & |
165 |
|
overall scaling of neutral drag coeff. \\ |
166 |
|
useStabilityFct\_overIce & \texttt{.FALSE.} & |
167 |
|
compute turbulent transfer coeff. over sea-ice \\ |
168 |
|
readStressOnAgrid & \texttt{.FALSE.} & |
169 |
|
read wind-streess located on model-grid, A-grid point \\ |
170 |
|
readStressOnCgrid & \texttt{.FALSE.} & |
171 |
|
read wind-streess located on model-grid, C-grid point \\ |
172 |
|
useRelativeWind & \texttt{.FALSE.} & |
173 |
|
subtract [U/V]VEL or [U/VICE from U/V]WIND before \\ |
174 |
|
~ & ~ & computing [U/V]STRESS \\ |
175 |
|
zref & \texttt{10.} & |
176 |
|
reference height \\ |
177 |
|
hu & \texttt{10.} & |
178 |
|
height of mean wind \\ |
179 |
|
ht & \texttt{2.} & |
180 |
|
height of mean temperature and rel. humidity \\ |
181 |
|
umin & \texttt{0.5} & |
182 |
|
minimum absolute wind speed for computing Cd \\ |
183 |
|
atmrho & \texttt{1.2} & |
184 |
|
mean atmospheric density [kg/m\^3] \\ |
185 |
|
atmcp & \texttt{1005.} & |
186 |
|
mean atmospheric specific heat [J/kg/K] \\ |
187 |
|
cdrag\_[n] & \texttt{???} & |
188 |
|
n = 1,2,3; parameters for drag coeff. function \\ |
189 |
|
cstanton\_[n] & \texttt{???} & |
190 |
|
n = 1,2; parameters for Stanton number function \\ |
191 |
|
cdalton & \texttt{???} & |
192 |
|
parameter for Dalton number function \\ |
193 |
|
flamb & \texttt{2500000.} & |
194 |
|
latent heat of evaporation [J/kg] \\ |
195 |
|
flami & \texttt{334000.} & |
196 |
|
latent heat of melting of pure ice [J/kg] \\ |
197 |
|
zolmin & \texttt{-100.} & |
198 |
|
minimum stability parameter \\ |
199 |
|
cvapor\_fac & \texttt{640380.} & |
200 |
|
~ \\ |
201 |
|
cvapor\_exp & \texttt{5107.4} & |
202 |
|
~ \\ |
203 |
|
cvapor\_fac\_ice & \texttt{11637800.} & |
204 |
|
~ \\ |
205 |
|
cvapor\_fac\_ice & \texttt{5897.8} & |
206 |
|
~ \\ |
207 |
|
humid\_fac & \texttt{0.606} & |
208 |
|
parameter for virtual temperature calculation \\ |
209 |
|
gamma\_blk & \texttt{0.010} & |
210 |
|
adiabatic lapse rate \\ |
211 |
|
saltsat & \texttt{0.980} & |
212 |
|
reduction of saturation vapor pressure over salt-water \\ |
213 |
|
psim\_fac & \texttt{5.} & |
214 |
|
~ \\ |
215 |
|
exf\_monFreq & \texttt{monitorFreq} & |
216 |
|
output frequency [s] \\ |
217 |
exf\_iprec & \texttt{32} & |
exf\_iprec & \texttt{32} & |
218 |
precision of input fields (32-bit or 64-bit) \\ |
precision of input fields (32-bit or 64-bit) \\ |
219 |
exf\_yftype & \texttt{'RL'} & |
exf\_yftype & \texttt{'RL'} & |
222 |
\end{tabular} |
\end{tabular} |
223 |
} |
} |
224 |
\caption{~} |
\caption{~} |
225 |
|
\label{tab:pkg:exf:runtime_flags} |
226 |
\end{table} |
\end{table} |
227 |
|
|
228 |
|
|
229 |
\paragraph{Field attributes} ~ \\ |
\paragraph{Field attributes} |
230 |
|
~ \\ |
231 |
% |
% |
232 |
All EXF fields are listed in Section \ref{sec:pkg:exf:fields_units}. |
All EXF fields are listed in Section \ref{sec:pkg:exf:fields_units}. |
233 |
Each field has a number of attributes which can be customized. |
Each field has a number of attributes which can be customized. |
245 |
\end{eqnarray*} |
\end{eqnarray*} |
246 |
% |
% |
247 |
|
|
248 |
\begin{table}[h!] |
\begin{table}[!ht] |
249 |
\label{tab:pkg:exf:runtime_attributes} |
\centering |
250 |
{\footnotesize |
{\footnotesize |
251 |
\begin{tabular}{|l|c|l|} |
\begin{tabular}{|l|c|l|} |
252 |
\hline |
\hline |
272 |
\multicolumn{3}{|c|}{\textit{used in conjunction with} |
\multicolumn{3}{|c|}{\textit{used in conjunction with} |
273 |
\texttt{EXF\_USE\_INTERPOLATION}} \\ |
\texttt{EXF\_USE\_INTERPOLATION}} \\ |
274 |
\hline |
\hline |
275 |
\textit{field}\texttt{\_lon0} & $thetaMin+delX/2$ & |
\textit{field}\texttt{\_lon0} & $xgOrigin+delX/2$ & |
276 |
starting longitude of input \\ |
starting longitude of input \\ |
277 |
\textit{field}\texttt{\_lon\_inc} & $delX$ & |
\textit{field}\texttt{\_lon\_inc} & $delX$ & |
278 |
increment in longitude of input \\ |
increment in longitude of input \\ |
279 |
\textit{field}\texttt{\_lat0} & $phiMin+delY/2$ & |
\textit{field}\texttt{\_lat0} & $ygOrigin+delY/2$ & |
280 |
starting latitude of input \\ |
starting latitude of input \\ |
281 |
\textit{field}\texttt{\_lat\_inc} & $delY$ & |
\textit{field}\texttt{\_lat\_inc} & $delY$ & |
282 |
increment in latitude of input \\ |
increment in latitude of input \\ |
287 |
\hline |
\hline |
288 |
\end{tabular} |
\end{tabular} |
289 |
} |
} |
290 |
\caption{\newline |
\caption{\newline |
291 |
Note one exception for the default of |
Note one exception for the default of |
292 |
\texttt{atempconst} = celsius2K = 273.16} |
\texttt{atempconst} = celsius2K = 273.16} |
293 |
|
\label{tab:pkg:exf:runtime_attributes} |
294 |
\end{table} |
\end{table} |
295 |
|
|
296 |
\paragraph{Example configuration} ~ \\ |
\paragraph{Example configuration} ~ \\ |
313 |
\end{verbatim} |
\end{verbatim} |
314 |
|
|
315 |
EXF will read a file of name 'ncep\_qnet.bin'. |
EXF will read a file of name 'ncep\_qnet.bin'. |
316 |
Its first record represents January 1st, 1991 at 00:00 UTC. |
Its first record represents January 1st, 1992 at 00:00 UTC. |
317 |
Next record is 2592000 seconds (or 30 days) later. |
Next record is 2592000 seconds (or 30 days) later. |
318 |
|
Note that the first record read and used by the EXF package corresponds to the |
319 |
|
value 'startDate1' set in data.cal. Therefore if you want to start the EXF |
320 |
|
forcing from later in the 'ncep_qnet.bin' file, it suffices to specify |
321 |
|
startDate1 in data.cal as a date later than 19920101 (for example, startDate1 |
322 |
|
= 19940101, for starting January 1st, 1994). For this to work, |
323 |
|
'ncep_qnet.bin' must have at least 2 years of data because in this |
324 |
|
configuration EXF will read 2 years into the file to find the 1994 starting |
325 |
|
value. |
326 |
Interpolation on-the-fly is used (in the present case trivially |
Interpolation on-the-fly is used (in the present case trivially |
327 |
on the same grid, but included nevertheless for illustration), |
on the same grid, but included nevertheless for illustration), |
328 |
and input field grid starting coordinates and increments are |
and input field grid starting coordinates and increments are |
330 |
|
|
331 |
%---------------------------------------------------------------------- |
%---------------------------------------------------------------------- |
332 |
|
|
333 |
\subsection{EXF input fields and units |
\subsubsection{EXF bulk formulae |
334 |
|
\label{sec:pkg:exf:bulk_formulae}} |
335 |
|
|
336 |
|
T.B.D. (cross-ref. to parameter list table) |
337 |
|
|
338 |
|
%---------------------------------------------------------------------- |
339 |
|
|
340 |
|
\subsubsection{EXF input fields and units |
341 |
\label{sec:pkg:exf:fields_units}} |
\label{sec:pkg:exf:fields_units}} |
342 |
|
|
343 |
The following list is taken from the header file \texttt{exf\_fields.h}. |
The following list is taken from the header file \texttt{exf\_fields.h}. |
347 |
\textbf{fu}, \textbf{fv}, \textbf{Qnet}, \textbf{Qsw}, \textbf{EmPmR}, |
\textbf{fu}, \textbf{fv}, \textbf{Qnet}, \textbf{Qsw}, \textbf{EmPmR}, |
348 |
and \textbf{pload}. They are defined in \texttt{FFIELDS.h}. |
and \textbf{pload}. They are defined in \texttt{FFIELDS.h}. |
349 |
|
|
350 |
{\scriptsize |
{\footnotesize |
351 |
\begin{verbatim} |
\begin{verbatim} |
352 |
|
|
353 |
c---------------------------------------------------------------------- |
c---------------------------------------------------------------------- |
369 |
c | Southwest C-grid V point |
c | Southwest C-grid V point |
370 |
c | Input field |
c | Input field |
371 |
c---------------------------------------------------------------------- |
c---------------------------------------------------------------------- |
372 |
|
c hs :: sensible heat flux into ocean in W/m^2 |
373 |
|
c | > 0 for increase in theta (ocean warming) |
374 |
|
c---------------------------------------------------------------------- |
375 |
|
c hl :: latent heat flux into ocean in W/m^2 |
376 |
|
c | > 0 for increase in theta (ocean warming) |
377 |
|
c---------------------------------------------------------------------- |
378 |
c hflux :: Net upward surface heat flux in W/m^2 |
c hflux :: Net upward surface heat flux in W/m^2 |
379 |
c | excluding shortwave (on input) |
c | excluding shortwave (on input) |
380 |
c | hflux = latent + sensible + lwflux |
c | hflux = latent + sensible + lwflux |
411 |
c | Southwest C-grid V point |
c | Southwest C-grid V point |
412 |
c | Input or input/output field |
c | Input or input/output field |
413 |
c---------------------------------------------------------------------- |
c---------------------------------------------------------------------- |
414 |
|
c wspeed :: Surface (10-m) wind speed in m/s |
415 |
|
c | >= 0 sqrt(u^2+v^2) |
416 |
|
c | Typical range: 0 < wspeed < 10 |
417 |
|
c | Input or input/output field |
418 |
|
c---------------------------------------------------------------------- |
419 |
c atemp :: Surface (2-m) air temperature in deg K |
c atemp :: Surface (2-m) air temperature in deg K |
420 |
c | Typical range: 200 < atemp < 300 |
c | Typical range: 200 < atemp < 300 |
421 |
c | Southwest C-grid tracer point |
c | Southwest C-grid tracer point |
445 |
c | Southwest C-grid tracer point |
c | Southwest C-grid tracer point |
446 |
c | Input or input/output field |
c | Input or input/output field |
447 |
c---------------------------------------------------------------------- |
c---------------------------------------------------------------------- |
448 |
|
c snowprecip :: snow in m/s |
449 |
|
c | > 0 for decrease in salt (ocean salinity) |
450 |
|
c | Typical range: 0 < precip < 5e-7 |
451 |
|
c | Input or input/output field |
452 |
|
c---------------------------------------------------------------------- |
453 |
c runoff :: River and glacier runoff in m/s |
c runoff :: River and glacier runoff in m/s |
454 |
c | > 0 for decrease in salt (ocean salinity) |
c | > 0 for decrease in salt (ocean salinity) |
455 |
c | Typical range: 0 < runoff < ???? |
c | Typical range: 0 < runoff < ???? |
482 |
|
|
483 |
%---------------------------------------------------------------------- |
%---------------------------------------------------------------------- |
484 |
|
|
485 |
\subsection{Key subroutines |
\subsubsection{Key subroutines |
486 |
\label{sec:pkg:exf:subroutines}} |
\label{sec:pkg:exf:subroutines}} |
487 |
|
|
488 |
\subsubsection{Top-level routine: \texttt{exf\_getforcing.F}} |
Top-level routine: \texttt{exf\_getforcing.F} |
489 |
|
|
490 |
{\scriptsize |
{\footnotesize |
491 |
\begin{verbatim} |
\begin{verbatim} |
492 |
|
|
493 |
C !CALLING SEQUENCE: |
C !CALLING SEQUENCE: |
495 |
c exf_getforcing (TOP LEVEL ROUTINE) |
c exf_getforcing (TOP LEVEL ROUTINE) |
496 |
c | |
c | |
497 |
c |-- exf_getclim (get climatological fields used e.g. for relax.) |
c |-- exf_getclim (get climatological fields used e.g. for relax.) |
|
c | |--- exf_set_climtemp (relax. to 3-D temperature field) |
|
|
c | |--- exf_set_climsalt (relax. to 3-D salinity field) |
|
498 |
c | |--- exf_set_climsst (relax. to 2-D SST field) |
c | |--- exf_set_climsst (relax. to 2-D SST field) |
499 |
c | |--- exf_set_climsss (relax. to 2-D SSS field) |
c | |--- exf_set_climsss (relax. to 2-D SSS field) |
500 |
c | o |
c | o |
505 |
c | | consecutive in time are read in and interpolated onto |
c | | consecutive in time are read in and interpolated onto |
506 |
c | | current time step). |
c | | current time step). |
507 |
c | | 2. If forcing is atmos. state and control is atmos. state, |
c | | 2. If forcing is atmos. state and control is atmos. state, |
508 |
c | | then the control variable anomalies are read here |
c | | then the control variable anomalies are read here via ctrl_get_gen |
509 |
c | | * ctrl_getatemp |
c | | (atemp, aqh, precip, swflux, swdown, uwind, vwind). |
|
c | | * ctrl_getaqh |
|
|
c | | * ctrl_getuwind |
|
|
c | | * ctrl_getvwind |
|
510 |
c | | If forcing and control are fluxes, then |
c | | If forcing and control are fluxes, then |
511 |
c | | controls are added later. |
c | | controls are added later. |
512 |
c | o |
c | o |
513 |
c | |
c | |
514 |
c |-- exf_check_range |
c |-- exf_radiation |
515 |
c | | 1. Check whether read fields are within assumed range |
c | | Compute net or downwelling radiative fluxes via |
516 |
c | | (may capture mismatches in units) |
c | | Stefan-Boltzmann law in case only one is known. |
517 |
|
c | o |
518 |
|
c |-- exf_wind |
519 |
|
c | | Computes wind speed and stresses, if required. |
520 |
c | o |
c | o |
521 |
c | |
c | |
522 |
c |-- exf_bulkformulae |
c |-- exf_bulkformulae |
523 |
c | | 1. Compute net or downwelling radiative fluxes via |
c | | Compute air-sea buoyancy fluxes from |
524 |
c | | Stefan-Boltzmann law in case only one is known. |
c | | atmospheric state following Large and Pond, JPO, 1981/82 |
|
c | | 2. Compute air-sea momentum and buoyancy fluxes from |
|
|
c | | atmospheric state following Large and Pond, JPO, 1981/82 |
|
525 |
c | o |
c | o |
526 |
c | |
c | |
527 |
c |-- < add time-mean river runoff here, if available > |
c |-- < hflux is sum of sensible, latent, longwave rad. > |
528 |
|
c |-- < sflux is sum of evap. minus precip. minus runoff > |
529 |
|
c | |
530 |
|
c |-- exf_getsurfacefluxes |
531 |
|
c | If forcing and control is flux, then the |
532 |
|
c | control vector anomalies are read here via ctrl_get_gen |
533 |
|
c | (hflux, sflux, ustress, vstress) |
534 |
c | |
c | |
535 |
c |-- < update tile edges here > |
c |-- < update tile edges here > |
536 |
c | |
c | |
537 |
c |-- exf_getsurfacefluxes |
c |-- exf_check_range |
538 |
c | | 1. If forcing and control are fluxes, then |
c | | Check whether read fields are within assumed range |
539 |
c | | controls are added here. |
c | | (may capture mismatches in units) |
540 |
c | o |
c | o |
541 |
c | |
c | |
542 |
c |-- < treatment of hflux w.r.t. swflux > |
c |-- < add shortwave to hflux for diagnostics > |
543 |
c | |
c | |
544 |
c |-- exf_diagnostics_fill |
c |-- exf_diagnostics_fill |
545 |
c | | 1. Do EXF-related diagnostics output here. |
c | | Do EXF-related diagnostics output here. |
546 |
c | o |
c | o |
547 |
c | |
c | |
548 |
c |-- exf_mapfields |
c |-- exf_mapfields |
549 |
c | | 1. Map the EXF variables onto the core MITgcm |
c | | Forcing fields from exf package are mapped onto |
550 |
c | | forcing fields. |
c | | mitgcm forcing arrays. |
551 |
|
c | | Mapping enables a runtime rescaling of fields |
552 |
c | o |
c | o |
553 |
c | |
C o |
|
c |-- exf_bulkformulae |
|
|
c | If ALLOW_BULKFORMULAE, compute fluxes via bulkformulae |
|
|
c | |
|
|
c |-- exf_getsurfacefluxes |
|
|
c | If forcing and control is flux, then the |
|
|
c | control vector anomalies are read here |
|
|
c | * ctrl_getheatflux |
|
|
c | * ctrl_getsaltflux |
|
|
c | * ctrl_getzonstress |
|
|
c | * call ctrl_getmerstress |
|
|
c | |
|
|
c |-- exf_mapfields |
|
|
c | Forcing fields from exf package are mapped onto |
|
|
c | mitgcm forcing arrays. |
|
|
c | Mapping enables a runtime rescaling of fields |
|
|
|
|
554 |
\end{verbatim} |
\end{verbatim} |
555 |
} |
} |
556 |
|
|
557 |
\subsubsection{Bulk formula routine: \texttt{exf\_bulkformulae.F}} |
Radiation calculation: \texttt{exf\_radiation.F} |
558 |
|
|
559 |
|
Wind speed and stress calculation: \texttt{exf\_wind.F} |
560 |
|
|
561 |
|
Bulk formula: \texttt{exf\_bulkformulae.F} |
562 |
|
|
563 |
\subsubsection{Generic I/O routine: \texttt{exf\_set\_gen.F}} |
Generic I/O: \texttt{exf\_set\_gen.F} |
564 |
|
|
565 |
\subsubsection{Interpolation routine: \texttt{exf\_interp.F}} |
Interpolation: \texttt{exf\_interp.F} |
566 |
|
|
567 |
\subsubsection{Header routines} |
Header routines |
568 |
|
|
569 |
%---------------------------------------------------------------------- |
%---------------------------------------------------------------------- |
570 |
|
|
571 |
\subsection{EXF diagnostics |
\subsubsection{EXF diagnostics |
572 |
\label{sec:pkg:exf:diagnostics}} |
\label{sec:pkg:exf:diagnostics}} |
573 |
|
|
574 |
Diagnostics output is available via the diagnostics package |
Diagnostics output is available via the diagnostics package |
576 |
Available output fields are summarized in |
Available output fields are summarized in |
577 |
Table \ref{tab:pkg:exf:diagnostics}. |
Table \ref{tab:pkg:exf:diagnostics}. |
578 |
|
|
579 |
\begin{table}[h!] |
\begin{table}[!ht] |
580 |
\label{tab:pkg:exf:diagnostics} |
\centering |
581 |
{\footnotesize |
{\footnotesize |
582 |
\begin{verbatim} |
\begin{verbatim} |
583 |
------------------------------------------------------ |
---------+----+----+----------------+----------------- |
584 |
<-Name->|Levs|grid|<-- Units -->|<- Tile (max=80c) |
<-Name->|Levs|grid|<-- Units -->|<- Tile (max=80c) |
585 |
------------------------------------------------------ |
---------+----+----+----------------+----------------- |
586 |
|
EXFhs | 1 | SM | W/m^2 | Sensible heat flux into ocean, >0 increases theta |
587 |
|
EXFhl | 1 | SM | W/m^2 | Latent heat flux into ocean, >0 increases theta |
588 |
|
EXFlwnet| 1 | SM | W/m^2 | Net upward longwave radiation, >0 decreases theta |
589 |
|
EXFswnet| 1 | SM | W/m^2 | Net upward shortwave radiation, >0 decreases theta |
590 |
EXFlwdn | 1 | SM | W/m^2 | Downward longwave radiation, >0 increases theta |
EXFlwdn | 1 | SM | W/m^2 | Downward longwave radiation, >0 increases theta |
591 |
EXFswdn | 1 | SM | W/m^2 | Downward shortwave radiation, >0 increases theta |
EXFswdn | 1 | SM | W/m^2 | Downward shortwave radiation, >0 increases theta |
592 |
EXFqnet | 1 | SM | W/m^2 | Net upward heat flux (turb+rad), >0 decreases theta |
EXFqnet | 1 | SM | W/m^2 | Net upward heat flux (turb+rad), >0 decreases theta |
594 |
EXFtauy | 1 | SV | N/m^2 | meridional surface wind stress, >0 increases vVel |
EXFtauy | 1 | SV | N/m^2 | meridional surface wind stress, >0 increases vVel |
595 |
EXFuwind| 1 | SM | m/s | zonal 10-m wind speed, >0 increases uVel |
EXFuwind| 1 | SM | m/s | zonal 10-m wind speed, >0 increases uVel |
596 |
EXFvwind| 1 | SM | m/s | meridional 10-m wind speed, >0 increases uVel |
EXFvwind| 1 | SM | m/s | meridional 10-m wind speed, >0 increases uVel |
597 |
|
EXFwspee| 1 | SM | m/s | 10-m wind speed modulus ( >= 0 ) |
598 |
EXFatemp| 1 | SM | degK | surface (2-m) air temperature |
EXFatemp| 1 | SM | degK | surface (2-m) air temperature |
599 |
EXFaqh | 1 | SM | kg/kg | surface (2-m) specific humidity |
EXFaqh | 1 | SM | kg/kg | surface (2-m) specific humidity |
600 |
EXFevap | 1 | SM | m/s | evaporation, > 0 increases salinity |
EXFevap | 1 | SM | m/s | evaporation, > 0 increases salinity |
601 |
EXFpreci| 1 | SM | m/s | evaporation, > 0 decreases salinity |
EXFpreci| 1 | SM | m/s | evaporation, > 0 decreases salinity |
602 |
|
EXFsnow | 1 | SM | m/s | snow precipitation, > 0 decreases salinity |
603 |
EXFempmr| 1 | SM | m/s | net upward freshwater flux, > 0 increases salinity |
EXFempmr| 1 | SM | m/s | net upward freshwater flux, > 0 increases salinity |
604 |
EXFpress| 1 | SM | N/m^2 | atmospheric pressure field |
EXFpress| 1 | SM | N/m^2 | atmospheric pressure field |
605 |
\end{verbatim} |
\end{verbatim} |
606 |
} |
} |
607 |
\caption{~} |
\caption{~} |
608 |
|
\label{tab:pkg:exf:diagnostics} |
609 |
\end{table} |
\end{table} |
610 |
|
|
611 |
%---------------------------------------------------------------------- |
%---------------------------------------------------------------------- |
612 |
|
|
613 |
\subsection{Reference experiments} |
\subsubsection{Experiments and tutorials that use exf} |
614 |
|
\label{sec:pkg:exf:experiments} |
|
\subsubsection{global\_with\_exf} |
|
615 |
|
|
616 |
\subsubsection{lab\_sea} |
\begin{itemize} |
617 |
|
\item{Global Ocean experiment, in global\_with\_exf verification directory } |
618 |
|
\item{Labrador Sea experiment, in lab\_sea verification directory } |
619 |
|
\end{itemize} |
620 |
|
|
621 |
%---------------------------------------------------------------------- |
%---------------------------------------------------------------------- |
622 |
|
|
623 |
\subsection{References} |
\subsubsection{References} |