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 |
|
|
55 |
no additional CPP options are required. |
no additional CPP options are required. |
56 |
% |
% |
57 |
\end{itemize} |
\end{itemize} |
58 |
(see Section \ref{sect:buildingCode}). |
(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 |
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 |
\centering |
\centering |
|
\label{tab:pkg:exf:cpp} |
|
67 |
{\footnotesize |
{\footnotesize |
68 |
\begin{tabular}{|l|l|} |
\begin{tabular}{|l|l|} |
69 |
\hline |
\hline |
70 |
\textbf{CPP option} & \textbf{Description} \\ |
\textbf{CPP option} & \textbf{Description} \\ |
71 |
\hline \hline |
\hline \hline |
72 |
\texttt{EXF\_VERBOSE} & |
\texttt{EXF\_VERBOSE} & |
73 |
verbose mode (recommended only for testing) \\ |
verbose mode (recommended only for testing) \\ |
74 |
\texttt{ALLOW\_ATM\_TEMP} & |
\texttt{ALLOW\_ATM\_TEMP} & |
75 |
compute heat/freshwater fluxes from atmos. state input \\ |
compute heat/freshwater fluxes from atmos. state input \\ |
76 |
\texttt{ALLOW\_ATM\_WIND} & |
\texttt{ALLOW\_ATM\_WIND} & |
77 |
compute wind stress from wind speed input\\ |
compute wind stress from wind speed input\\ |
78 |
\texttt{ALLOW\_BULKFORMULAE} & |
\texttt{ALLOW\_BULKFORMULAE} & |
79 |
is used if \texttt{ALLOW\_ATM\_TEMP} or |
is used if \texttt{ALLOW\_ATM\_TEMP} or |
80 |
\texttt{ALLOW\_ATM\_WIND} is enabled \\ |
\texttt{ALLOW\_ATM\_WIND} is enabled \\ |
81 |
\texttt{EXF\_READ\_EVAP} & read evaporation instead of computing it \\ |
\texttt{EXF\_READ\_EVAP} & read evaporation instead of computing it \\ |
82 |
\texttt{ALLOW\_RUNOFF} & read time-constant river/glacier run-off field \\ |
\texttt{ALLOW\_RUNOFF} & read time-constant river/glacier run-off field \\ |
98 |
\end{tabular} |
\end{tabular} |
99 |
} |
} |
100 |
\caption{~} |
\caption{~} |
101 |
|
\label{tab:pkg:exf:cpp} |
102 |
\end{table} |
\end{table} |
103 |
|
|
|
|
|
104 |
%---------------------------------------------------------------------- |
%---------------------------------------------------------------------- |
105 |
|
|
106 |
\subsubsection{Run-time parameters |
\subsubsection{Run-time parameters |
107 |
\label{sec:pkg:exf:runtime}} |
\label{sec:pkg:exf:runtime}} |
108 |
|
|
109 |
Run-time parameters are set in files |
Run-time parameters are set in files |
110 |
\texttt{data.pkg}, \texttt{data.exf}, and |
\texttt{data.pkg} and \texttt{data.exf} |
111 |
\texttt{data.exf\_clim} (for relaxation/climatological fields) |
%\texttt{data.exf\_clim} (for relaxation/climatological fields) |
112 |
which are read in \texttt{exf\_readparms.F}. |
which is read in \texttt{exf\_readparms.F}. |
113 |
Run-time parameters may be broken into 3 categories: |
Run-time parameters may be broken into 3 categories: |
114 |
(i) switching on/off the package at runtime, |
(i) switching on/off the package at runtime, |
115 |
(ii) general flags and parameters, and |
(ii) general flags and parameters, and |
118 |
\paragraph{Enabling the package} |
\paragraph{Enabling the package} |
119 |
~ \\ |
~ \\ |
120 |
% |
% |
121 |
A package is usually switched on/off at runtime by setting |
A package is switched on/off at runtime by setting |
122 |
(e.g. for EXF) \texttt{useEXF = .TRUE.} in \texttt{data.pkg}. |
(e.g. for EXF) \texttt{useEXF = .TRUE.} in \texttt{data.pkg}. |
|
For EXF this flag is omitted, i.e. EXF is always ON if it is compiled. |
|
123 |
|
|
124 |
\paragraph{General flags and parameters} |
\paragraph{General flags and parameters} |
125 |
~ \\ |
~ \\ |
126 |
% |
% |
127 |
\begin{table}[h!] |
\begin{table}[!ht] |
128 |
\centering |
\centering |
|
\label{tab:pkg:exf:runtime_flags} |
|
129 |
{\footnotesize |
{\footnotesize |
130 |
\begin{tabular}{|l|c|l|} |
\begin{tabular}{|l|c|l|} |
131 |
\hline |
\hline |
132 |
\textbf{Flag/parameter} & \textbf{default} & \textbf{Description} \\ |
\textbf{Flag/parameter} & \textbf{default} & \textbf{Description} \\ |
133 |
\hline \hline |
\hline \hline |
134 |
useExfCheckRange & \texttt{.TRUE.} & |
useExfCheckRange & \texttt{.TRUE.} & |
135 |
check range of input fields and stop if out of range \\ |
check range of input fields and stop if out of range \\ |
136 |
useExfYearlyFields & \texttt{.FALSE.} & |
useExfYearlyFields & \texttt{.FALSE.} & |
137 |
append current year postfix of form \texttt{\_YYYY} on filename \\ |
append current year postfix of form \texttt{\_YYYY} on filename \\ |
138 |
twoDigitYear & \texttt{.FALSE.} & |
twoDigitYear & \texttt{.FALSE.} & |
139 |
instead of appending \texttt{\_YYYY} append \texttt{YY} \\ |
instead of appending \texttt{\_YYYY} append \texttt{YY} \\ |
140 |
repeatPeriod & \texttt{0.0} & $ > 0 $ : |
repeatPeriod & \texttt{0.0} & $ > 0 $ : |
141 |
cycle through all input fields at the same period (in seconds) \\ |
cycle through all input fields at the same period (in seconds) \\ |
142 |
~ & ~ & $ = 0 $ : |
~ & ~ & $ = 0 $ : |
143 |
use period assigned to each field \\ |
use period assigned to each field \\ |
144 |
exf\_offset\_atemp & \texttt{0.0} & set to 273.16 to convert from deg. Kelvin (assumed input) to Celsius \\ |
exf\_offset\_atemp & \texttt{0.0} & set to 273.16 to convert from deg. Kelvin (assumed input) to Celsius \\ |
145 |
windstressmax & \texttt{2.0} & |
windstressmax & \texttt{2.0} & |
146 |
max. allowed wind stress $N/m^2$ \\ |
max. allowed wind stress $N/m^2$ \\ |
147 |
exf\_albedo & \texttt{0.1} & |
exf\_albedo & \texttt{0.1} & |
148 |
surface albedo used to compute downward vs. net radiative fluxes \\ |
surface albedo used to compute downward vs. net radiative fluxes \\ |
149 |
exf\_iprec & \texttt{32} & |
climtempfreeze & \texttt{-1.9} & |
150 |
|
??? \\ |
151 |
|
ocean\_emissivity & \texttt{} & |
152 |
|
longwave ocean-surface emissivity \\ |
153 |
|
ice\_emissivity & \texttt{} & |
154 |
|
longwave seaice emissivity \\ |
155 |
|
snow\_emissivity & \texttt{} & |
156 |
|
longwave snow emissivity \\ |
157 |
|
exf\_iceCd & \texttt{1.63E-3} & |
158 |
|
drag coefficient over sea-ice \\ |
159 |
|
exf\_iceCe & \texttt{1.63E-3} & |
160 |
|
evaporation transfer coeff. over sea-ice \\ |
161 |
|
exf\_iceCh & \texttt{1.63E-3} & |
162 |
|
sensible heat transfer coeff. over sea-ice \\ |
163 |
|
exf\_scal\_BulkCdn & \texttt{1.} & |
164 |
|
overall scaling of neutral drag coeff. \\ |
165 |
|
useStabilityFct\_overIce & \texttt{.FALSE.} & |
166 |
|
compute turbulent transfer coeff. over sea-ice \\ |
167 |
|
readStressOnAgrid & \texttt{.FALSE.} & |
168 |
|
read wind-streess located on model-grid, A-grid point \\ |
169 |
|
readStressOnCgrid & \texttt{.FALSE.} & |
170 |
|
read wind-streess located on model-grid, C-grid point \\ |
171 |
|
useRelativeWind & \texttt{.FALSE.} & |
172 |
|
subtract [U/V]VEL or [U/VICE from U/V]WIND before \\ |
173 |
|
~ & ~ & computing [U/V]STRESS \\ |
174 |
|
zref & \texttt{10.} & |
175 |
|
reference height \\ |
176 |
|
hu & \texttt{10.} & |
177 |
|
height of mean wind \\ |
178 |
|
ht & \texttt{2.} & |
179 |
|
height of mean temperature and rel. humidity \\ |
180 |
|
umin & \texttt{0.5} & |
181 |
|
minimum absolute wind speed for computing Cd \\ |
182 |
|
atmrho & \texttt{1.2} & |
183 |
|
mean atmospheric density [kg/m\^3] \\ |
184 |
|
atmcp & \texttt{1005.} & |
185 |
|
mean atmospheric specific heat [J/kg/K] \\ |
186 |
|
cdrag\_[n] & \texttt{???} & |
187 |
|
n = 1,2,3; parameters for drag coeff. function \\ |
188 |
|
cstanton\_[n] & \texttt{???} & |
189 |
|
n = 1,2; parameters for Stanton number function \\ |
190 |
|
cdalton & \texttt{???} & |
191 |
|
parameter for Dalton number function \\ |
192 |
|
flamb & \texttt{2500000.} & |
193 |
|
latent heat of evaporation [J/kg] \\ |
194 |
|
flami & \texttt{334000.} & |
195 |
|
latent heat of melting of pure ice [J/kg] \\ |
196 |
|
zolmin & \texttt{-100.} & |
197 |
|
minimum stability parameter \\ |
198 |
|
cvapor\_fac & \texttt{640380.} & |
199 |
|
~ \\ |
200 |
|
cvapor\_exp & \texttt{5107.4} & |
201 |
|
~ \\ |
202 |
|
cvapor\_fac\_ice & \texttt{11637800.} & |
203 |
|
~ \\ |
204 |
|
cvapor\_fac\_ice & \texttt{5897.8} & |
205 |
|
~ \\ |
206 |
|
humid\_fac & \texttt{0.606} & |
207 |
|
parameter for virtual temperature calculation \\ |
208 |
|
gamma\_blk & \texttt{0.010} & |
209 |
|
adiabatic lapse rate \\ |
210 |
|
saltsat & \texttt{0.980} & |
211 |
|
reduction of saturation vapor pressure over salt-water \\ |
212 |
|
psim\_fac & \texttt{5.} & |
213 |
|
~ \\ |
214 |
|
exf\_monFreq & \texttt{monitorFreq} & |
215 |
|
output frequency [s] \\ |
216 |
|
exf\_iprec & \texttt{32} & |
217 |
precision of input fields (32-bit or 64-bit) \\ |
precision of input fields (32-bit or 64-bit) \\ |
218 |
exf\_yftype & \texttt{'RL'} & |
exf\_yftype & \texttt{'RL'} & |
219 |
precision of arrays ('RL' vs. 'RS') \\ |
precision of arrays ('RL' vs. 'RS') \\ |
220 |
\hline |
\hline |
221 |
\end{tabular} |
\end{tabular} |
222 |
} |
} |
223 |
\caption{~} |
\caption{~} |
224 |
|
\label{tab:pkg:exf:runtime_flags} |
225 |
\end{table} |
\end{table} |
226 |
|
|
227 |
|
\paragraph{Field attributes} |
|
\paragraph{Field attributes} |
|
228 |
~ \\ |
~ \\ |
229 |
% |
% |
230 |
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}. |
243 |
\end{eqnarray*} |
\end{eqnarray*} |
244 |
% |
% |
245 |
|
|
246 |
\begin{table}[h!] |
\begin{table}[!ht] |
247 |
\centering |
\centering |
|
\label{tab:pkg:exf:runtime_attributes} |
|
248 |
{\footnotesize |
{\footnotesize |
249 |
\begin{tabular}{|l|c|l|} |
\begin{tabular}{|l|c|l|} |
250 |
\hline |
\hline |
251 |
\textbf{attribute} & \textbf{Default} & \textbf{Description} \\ |
\textbf{attribute} & \textbf{Default} & \textbf{Description} \\ |
252 |
\hline \hline |
\hline \hline |
253 |
\textit{field}\texttt{file} & ' ' & |
\textit{field}\texttt{file} & ' ' & |
254 |
filename; if left empty no file will be read; \texttt{const} will be used instead \\ |
filename; if left empty no file will be read; \texttt{const} will be used instead \\ |
255 |
\textit{field}\texttt{const} & 0. & |
\textit{field}\texttt{const} & 0. & |
256 |
constant that will be used if no file is read \\ |
constant that will be used if no file is read \\ |
257 |
\textit{field}\texttt{startdate1} & 0. & |
\textit{field}\texttt{startdate1} & 0. & |
258 |
format: \texttt{YYYYMMDD}; start year (YYYY), month (MM), day (YY) \\ |
format: \texttt{YYYYMMDD}; start year (YYYY), month (MM), day (YY) \\ |
259 |
~&~& of field to determine record number \\ |
~&~& of field to determine record number \\ |
260 |
\textit{field}\texttt{startdate2} & 0. & |
\textit{field}\texttt{startdate2} & 0. & |
262 |
~&~& of field to determine record number\\ |
~&~& of field to determine record number\\ |
263 |
\textit{field}\texttt{period} & 0. & |
\textit{field}\texttt{period} & 0. & |
264 |
interval in seconds between two records \\ |
interval in seconds between two records \\ |
265 |
\texttt{exf\_inscal\_}\textit{field}& ~ & |
\texttt{exf\_inscal\_}\textit{field}& ~ & |
266 |
optional rescaling of input fields to comply with EXF units \\ |
optional rescaling of input fields to comply with EXF units \\ |
267 |
\texttt{exf\_outscal\_}\textit{field}& ~ & |
\texttt{exf\_outscal\_}\textit{field}& ~ & |
268 |
optional rescaling of EXF fields when mapped onto MITgcm fields \\ |
optional rescaling of EXF fields when mapped onto MITgcm fields \\ |
269 |
\hline |
\hline |
270 |
\multicolumn{3}{|c|}{\textit{used in conjunction with} |
\multicolumn{3}{|c|}{\textit{used in conjunction with} |
271 |
\texttt{EXF\_USE\_INTERPOLATION}} \\ |
\texttt{EXF\_USE\_INTERPOLATION}} \\ |
272 |
\hline |
\hline |
273 |
\textit{field}\texttt{\_lon0} & $thetaMin+delX/2$ & |
\textit{field}\texttt{\_lon0} & $xgOrigin+delX/2$ & |
274 |
starting longitude of input \\ |
starting longitude of input \\ |
275 |
\textit{field}\texttt{\_lon\_inc} & $delX$ & |
\textit{field}\texttt{\_lon\_inc} & $delX$ & |
276 |
increment in longitude of input \\ |
increment in longitude of input \\ |
277 |
\textit{field}\texttt{\_lat0} & $phiMin+delY/2$ & |
\textit{field}\texttt{\_lat0} & $ygOrigin+delY/2$ & |
278 |
starting latitude of input \\ |
starting latitude of input \\ |
279 |
\textit{field}\texttt{\_lat\_inc} & $delY$ & |
\textit{field}\texttt{\_lat\_inc} & $delY$ & |
280 |
increment in latitude of input \\ |
increment in latitude of input \\ |
285 |
\hline |
\hline |
286 |
\end{tabular} |
\end{tabular} |
287 |
} |
} |
288 |
\caption{\newline |
\caption{\newline |
289 |
Note one exception for the default of |
Note one exception for the default of |
290 |
\texttt{atempconst} = celsius2K = 273.16} |
\texttt{atempconst} = celsius2K = 273.16} |
291 |
|
\label{tab:pkg:exf:runtime_attributes} |
292 |
\end{table} |
\end{table} |
293 |
|
|
294 |
\paragraph{Example configuration} ~ \\ |
\paragraph{Example configuration} ~ \\ |
295 |
% |
% |
296 |
The following block is taken from the \texttt{data.exf} file |
The following block is taken from the \texttt{data.exf} file |
297 |
of the veification experiment \texttt{global\_with\_exf/}. |
of the verification experiment \texttt{global\_with\_exf/}. |
298 |
It defines attributes for the heat flux variable \texttt{hflux}: |
It defines attributes for the heat flux variable \texttt{hflux}: |
299 |
|
|
300 |
\begin{verbatim} |
\begin{verbatim} |
311 |
\end{verbatim} |
\end{verbatim} |
312 |
|
|
313 |
EXF will read a file of name 'ncep\_qnet.bin'. |
EXF will read a file of name 'ncep\_qnet.bin'. |
314 |
Its first record represents January 1st, 1991 at 00:00 UTC. |
Its first record represents January 1st, 1992 at 00:00 UTC. |
315 |
Next record is 2592000 seconds (or 30 days) later. |
Next record is 2592000 seconds (or 30 days) later. |
316 |
|
Note that the first record read and used by the EXF package corresponds to the |
317 |
|
value 'startDate1' set in data.cal. Therefore if you want to start the EXF |
318 |
|
forcing from later in the 'ncep\_qnet.bin' file, it suffices to specify |
319 |
|
startDate1 in data.cal as a date later than 19920101 (for example, startDate1 |
320 |
|
= 19940101, for starting January 1st, 1994). For this to work, |
321 |
|
'ncep\_qnet.bin' must have at least 2 years of data because in this |
322 |
|
configuration EXF will read 2 years into the file to find the 1994 starting |
323 |
|
value. |
324 |
Interpolation on-the-fly is used (in the present case trivially |
Interpolation on-the-fly is used (in the present case trivially |
325 |
on the same grid, but included nevertheless for illustration), |
on the same grid, but included nevertheless for illustration), |
326 |
and input field grid starting coordinates and increments are |
and input field grid starting coordinates and increments are |
327 |
supplied as well. |
supplied as well. |
328 |
|
|
329 |
%---------------------------------------------------------------------- |
%---------------------------------------------------------------------- |
330 |
|
|
331 |
|
\subsubsection{EXF bulk formulae |
332 |
|
\label{sec:pkg:exf:bulk_formulae}} |
333 |
|
|
334 |
|
T.B.D. (cross-ref. to parameter list table) |
335 |
|
|
336 |
|
%---------------------------------------------------------------------- |
337 |
|
|
338 |
\subsubsection{EXF input fields and units |
\subsubsection{EXF input fields and units |
339 |
\label{sec:pkg:exf:fields_units}} |
\label{sec:pkg:exf:fields_units}} |
340 |
|
|
341 |
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}. |
342 |
It comprises all EXF input fields. |
It comprises all EXF input fields. |
343 |
|
|
344 |
Output fields which EXF provides to the MITgcm are fields |
Output fields which EXF provides to the MITgcm are fields |
373 |
c hl :: latent heat flux into ocean in W/m^2 |
c hl :: latent heat flux into ocean in W/m^2 |
374 |
c | > 0 for increase in theta (ocean warming) |
c | > 0 for increase in theta (ocean warming) |
375 |
c---------------------------------------------------------------------- |
c---------------------------------------------------------------------- |
376 |
c hflux :: Net upward surface heat flux in W/m^2 |
c hflux :: Net upward surface heat flux in W/m^2 |
377 |
c | excluding shortwave (on input) |
c | (including shortwave) |
378 |
c | hflux = latent + sensible + lwflux |
c | hflux = latent + sensible + lwflux + swflux |
379 |
c | > 0 for decrease in theta (ocean cooling) |
c | > 0 for decrease in theta (ocean cooling) |
380 |
c | Typical range: -250 < hflux < 600 |
c | Typical range: -250 < hflux < 600 |
381 |
c | Southwest C-grid tracer point |
c | Southwest C-grid tracer point |
571 |
|
|
572 |
Diagnostics output is available via the diagnostics package |
Diagnostics output is available via the diagnostics package |
573 |
(see Section \ref{sec:pkg:diagnostics}). |
(see Section \ref{sec:pkg:diagnostics}). |
574 |
Available output fields are summarized in |
Available output fields are summarized in |
575 |
Table \ref{tab:pkg:exf:diagnostics}. |
Table \ref{tab:pkg:exf:diagnostics}. |
576 |
|
|
577 |
\begin{table}[h!] |
\begin{table}[!ht] |
578 |
\centering |
\centering |
|
\label{tab:pkg:exf:diagnostics} |
|
579 |
{\footnotesize |
{\footnotesize |
580 |
\begin{verbatim} |
\begin{verbatim} |
581 |
------------------------------------------------------ |
---------+----+----+----------------+----------------- |
582 |
<-Name->|Levs|grid|<-- Units -->|<- Tile (max=80c) |
<-Name->|Levs|grid|<-- Units -->|<- Tile (max=80c) |
583 |
------------------------------------------------------ |
---------+----+----+----------------+----------------- |
584 |
EXFhs | 1 | SM | W/m^2 | Sensible heat flux into ocean, >0 increases theta |
EXFhs | 1 | SM | W/m^2 | Sensible heat flux into ocean, >0 increases theta |
585 |
EXFhl | 1 | SM | W/m^2 | Latent heat flux into ocean, >0 increases theta |
EXFhl | 1 | SM | W/m^2 | Latent heat flux into ocean, >0 increases theta |
586 |
EXFlwnet| 1 | SM | W/m^2 | Net upward longwave radiation, >0 decreases theta |
EXFlwnet| 1 | SM | W/m^2 | Net upward longwave radiation, >0 decreases theta |
603 |
\end{verbatim} |
\end{verbatim} |
604 |
} |
} |
605 |
\caption{~} |
\caption{~} |
606 |
|
\label{tab:pkg:exf:diagnostics} |
607 |
\end{table} |
\end{table} |
608 |
|
|
609 |
%---------------------------------------------------------------------- |
%---------------------------------------------------------------------- |
610 |
|
|
611 |
\subsubsection{Reference experiments} |
\subsubsection{Experiments and tutorials that use exf} |
612 |
|
\label{sec:pkg:exf:experiments} |
|
global\_with\_exf: |
|
613 |
|
|
614 |
lab\_sea: |
\begin{itemize} |
615 |
|
\item{Global Ocean experiment, in global\_with\_exf verification directory } |
616 |
|
\item{Labrador Sea experiment, in lab\_sea verification directory } |
617 |
|
\end{itemize} |
618 |
|
|
619 |
%---------------------------------------------------------------------- |
%---------------------------------------------------------------------- |
620 |
|
|