| 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}. |
| 49 |
or using \texttt{genmake2} adding |
or using \texttt{genmake2} adding |
| 50 |
\texttt{-enable=exf} or \texttt{-disable=exf} switches |
\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} |
\end{itemize} |
| 58 |
(see Section \ref{sect:buildingCode}). |
(see Section \ref{sect:buildingCode}). |
| 59 |
|
|
| 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 |
| 67 |
\label{tab:pkg:exf:cpp} |
\label{tab:pkg:exf:cpp} |
| 68 |
{\footnotesize |
{\footnotesize |
| 69 |
\begin{tabular}{|l|l|} |
\begin{tabular}{|l|l|} |
| 86 |
\hline |
\hline |
| 87 |
\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}} \\ |
| 88 |
\hline |
\hline |
|
\texttt{ALLOW\_CLIMTEMP\_RELAXATION} & |
|
|
relaxation to 3-D temperature climatology \\ |
|
|
\texttt{ALLOW\_CLIMSALT\_RELAXATION} & |
|
|
relaxation to 3-D salinity climatology \\ |
|
| 89 |
\texttt{ALLOW\_CLIMSST\_RELAXATION} & |
\texttt{ALLOW\_CLIMSST\_RELAXATION} & |
| 90 |
relaxation to 2-D SST climatology \\ |
relaxation to 2-D SST climatology \\ |
| 91 |
\texttt{ALLOW\_CLIMSSS\_RELAXATION} & |
\texttt{ALLOW\_CLIMSSS\_RELAXATION} & |
| 119 |
\paragraph{Enabling the package} |
\paragraph{Enabling the package} |
| 120 |
~ \\ |
~ \\ |
| 121 |
% |
% |
| 122 |
A package is usually switched on/off at runtime by setting |
A package is switched on/off at runtime by setting |
| 123 |
(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. |
|
| 124 |
|
|
| 125 |
\paragraph{General flags and parameters} |
\paragraph{General flags and parameters} |
| 126 |
~ \\ |
~ \\ |
| 127 |
% |
% |
| 128 |
\begin{table}[h!] |
\begin{table}[h!] |
| 129 |
|
\centering |
| 130 |
\label{tab:pkg:exf:runtime_flags} |
\label{tab:pkg:exf:runtime_flags} |
| 131 |
{\footnotesize |
{\footnotesize |
| 132 |
\begin{tabular}{|l|c|l|} |
\begin{tabular}{|l|c|l|} |
| 148 |
max. allowed wind stress $N/m^2$ \\ |
max. allowed wind stress $N/m^2$ \\ |
| 149 |
exf\_albedo & \texttt{0.1} & |
exf\_albedo & \texttt{0.1} & |
| 150 |
surface albedo used to compute downward vs. net radiative fluxes \\ |
surface albedo used to compute downward vs. net radiative fluxes \\ |
| 151 |
|
climtempfreeze & \texttt{-1.9} & |
| 152 |
|
??? \\ |
| 153 |
|
ocean\_emissivity & \texttt{} & |
| 154 |
|
longwave ocean-surface emissivity \\ |
| 155 |
|
ice\_emissivity & \texttt{} & |
| 156 |
|
longwave seaice emissivity \\ |
| 157 |
|
snow\_emissivity & \texttt{} & |
| 158 |
|
longwave snow emissivity \\ |
| 159 |
|
exf\_iceCd & \texttt{1.63E-3} & |
| 160 |
|
drag coefficient over sea-ice \\ |
| 161 |
|
exf\_iceCe & \texttt{1.63E-3} & |
| 162 |
|
evaporation transfer coeff. over sea-ice \\ |
| 163 |
|
exf\_iceCh & \texttt{1.63E-3} & |
| 164 |
|
sensible heat transfer coeff. over sea-ice \\ |
| 165 |
|
exf\_scal\_BulkCdn & \texttt{1.} & |
| 166 |
|
overall scaling of neutral drag coeff. \\ |
| 167 |
|
useStabilityFct\_overIce & \texttt{.FALSE.} & |
| 168 |
|
compute turbulent transfer coeff. over sea-ice \\ |
| 169 |
|
readStressOnAgrid & \texttt{.FALSE.} & |
| 170 |
|
read wind-streess located on model-grid, A-grid point \\ |
| 171 |
|
readStressOnCgrid & \texttt{.FALSE.} & |
| 172 |
|
read wind-streess located on model-grid, C-grid point \\ |
| 173 |
|
useRelativeWind & \texttt{.FALSE.} & |
| 174 |
|
subtract [U/V]VEL or [U/VICE from U/V]WIND before \\ |
| 175 |
|
~ & ~ & computing [U/V]STRESS \\ |
| 176 |
|
zref & \texttt{10.} & |
| 177 |
|
reference height \\ |
| 178 |
|
hu & \texttt{10.} & |
| 179 |
|
height of mean wind \\ |
| 180 |
|
ht & \texttt{2.} & |
| 181 |
|
height of mean temperature and rel. humidity \\ |
| 182 |
|
umin & \texttt{0.5} & |
| 183 |
|
minimum absolute wind speed for computing Cd \\ |
| 184 |
|
atmrho & \texttt{1.2} & |
| 185 |
|
mean atmospheric density [kg/m\^3] \\ |
| 186 |
|
atmcp & \texttt{1005.} & |
| 187 |
|
mean atmospheric specific heat [J/kg/K] \\ |
| 188 |
|
cdrag\_[n] & \texttt{???} & |
| 189 |
|
n = 1,2,3; parameters for drag coeff. function \\ |
| 190 |
|
cstanton\_[n] & \texttt{???} & |
| 191 |
|
n = 1,2; parameters for Stanton number function \\ |
| 192 |
|
cdalton & \texttt{???} & |
| 193 |
|
parameter for Dalton number function \\ |
| 194 |
|
flamb & \texttt{2500000.} & |
| 195 |
|
latent heat of evaporation [J/kg] \\ |
| 196 |
|
flami & \texttt{334000.} & |
| 197 |
|
latent heat of melting of pure ice [J/kg] \\ |
| 198 |
|
zolmin & \texttt{-100.} & |
| 199 |
|
minimum stability parameter \\ |
| 200 |
|
cvapor\_fac & \texttt{640380.} & |
| 201 |
|
~ \\ |
| 202 |
|
cvapor\_exp & \texttt{5107.4} & |
| 203 |
|
~ \\ |
| 204 |
|
cvapor\_fac\_ice & \texttt{11637800.} & |
| 205 |
|
~ \\ |
| 206 |
|
cvapor\_fac\_ice & \texttt{5897.8} & |
| 207 |
|
~ \\ |
| 208 |
|
humid\_fac & \texttt{0.606} & |
| 209 |
|
parameter for virtual temperature calculation \\ |
| 210 |
|
gamma\_blk & \texttt{0.010} & |
| 211 |
|
adiabatic lapse rate \\ |
| 212 |
|
saltsat & \texttt{0.980} & |
| 213 |
|
reduction of saturation vapor pressure over salt-water \\ |
| 214 |
|
psim\_fac & \texttt{5.} & |
| 215 |
|
~ \\ |
| 216 |
|
exf\_monFreq & \texttt{monitorFreq} & |
| 217 |
|
output frequency [s] \\ |
| 218 |
exf\_iprec & \texttt{32} & |
exf\_iprec & \texttt{32} & |
| 219 |
precision of input fields (32-bit or 64-bit) \\ |
precision of input fields (32-bit or 64-bit) \\ |
| 220 |
exf\_yftype & \texttt{'RL'} & |
exf\_yftype & \texttt{'RL'} & |
| 246 |
% |
% |
| 247 |
|
|
| 248 |
\begin{table}[h!] |
\begin{table}[h!] |
| 249 |
|
\centering |
| 250 |
\label{tab:pkg:exf:runtime_attributes} |
\label{tab:pkg:exf:runtime_attributes} |
| 251 |
{\footnotesize |
{\footnotesize |
| 252 |
\begin{tabular}{|l|c|l|} |
\begin{tabular}{|l|c|l|} |
| 322 |
|
|
| 323 |
%---------------------------------------------------------------------- |
%---------------------------------------------------------------------- |
| 324 |
|
|
| 325 |
|
\subsubsection{EXF bulk formulae |
| 326 |
|
\label{sec:pkg:exf:bulk_formulae}} |
| 327 |
|
|
| 328 |
|
T.B.D. (cross-ref. to parameter list table) |
| 329 |
|
|
| 330 |
|
%---------------------------------------------------------------------- |
| 331 |
|
|
| 332 |
\subsubsection{EXF input fields and units |
\subsubsection{EXF input fields and units |
| 333 |
\label{sec:pkg:exf:fields_units}} |
\label{sec:pkg:exf:fields_units}} |
| 334 |
|
|
| 361 |
c | Southwest C-grid V point |
c | Southwest C-grid V point |
| 362 |
c | Input field |
c | Input field |
| 363 |
c---------------------------------------------------------------------- |
c---------------------------------------------------------------------- |
| 364 |
|
c hs :: sensible heat flux into ocean in W/m^2 |
| 365 |
|
c | > 0 for increase in theta (ocean warming) |
| 366 |
|
c---------------------------------------------------------------------- |
| 367 |
|
c hl :: latent heat flux into ocean in W/m^2 |
| 368 |
|
c | > 0 for increase in theta (ocean warming) |
| 369 |
|
c---------------------------------------------------------------------- |
| 370 |
c hflux :: Net upward surface heat flux in W/m^2 |
c hflux :: Net upward surface heat flux in W/m^2 |
| 371 |
c | excluding shortwave (on input) |
c | excluding shortwave (on input) |
| 372 |
c | hflux = latent + sensible + lwflux |
c | hflux = latent + sensible + lwflux |
| 403 |
c | Southwest C-grid V point |
c | Southwest C-grid V point |
| 404 |
c | Input or input/output field |
c | Input or input/output field |
| 405 |
c---------------------------------------------------------------------- |
c---------------------------------------------------------------------- |
| 406 |
|
c wspeed :: Surface (10-m) wind speed in m/s |
| 407 |
|
c | >= 0 sqrt(u^2+v^2) |
| 408 |
|
c | Typical range: 0 < wspeed < 10 |
| 409 |
|
c | Input or input/output field |
| 410 |
|
c---------------------------------------------------------------------- |
| 411 |
c atemp :: Surface (2-m) air temperature in deg K |
c atemp :: Surface (2-m) air temperature in deg K |
| 412 |
c | Typical range: 200 < atemp < 300 |
c | Typical range: 200 < atemp < 300 |
| 413 |
c | Southwest C-grid tracer point |
c | Southwest C-grid tracer point |
| 437 |
c | Southwest C-grid tracer point |
c | Southwest C-grid tracer point |
| 438 |
c | Input or input/output field |
c | Input or input/output field |
| 439 |
c---------------------------------------------------------------------- |
c---------------------------------------------------------------------- |
| 440 |
|
c snowprecip :: snow in m/s |
| 441 |
|
c | > 0 for decrease in salt (ocean salinity) |
| 442 |
|
c | Typical range: 0 < precip < 5e-7 |
| 443 |
|
c | Input or input/output field |
| 444 |
|
c---------------------------------------------------------------------- |
| 445 |
c runoff :: River and glacier runoff in m/s |
c runoff :: River and glacier runoff in m/s |
| 446 |
c | > 0 for decrease in salt (ocean salinity) |
c | > 0 for decrease in salt (ocean salinity) |
| 447 |
c | Typical range: 0 < runoff < ???? |
c | Typical range: 0 < runoff < ???? |
| 487 |
c exf_getforcing (TOP LEVEL ROUTINE) |
c exf_getforcing (TOP LEVEL ROUTINE) |
| 488 |
c | |
c | |
| 489 |
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) |
|
| 490 |
c | |--- exf_set_climsst (relax. to 2-D SST field) |
c | |--- exf_set_climsst (relax. to 2-D SST field) |
| 491 |
c | |--- exf_set_climsss (relax. to 2-D SSS field) |
c | |--- exf_set_climsss (relax. to 2-D SSS field) |
| 492 |
c | o |
c | o |
| 497 |
c | | consecutive in time are read in and interpolated onto |
c | | consecutive in time are read in and interpolated onto |
| 498 |
c | | current time step). |
c | | current time step). |
| 499 |
c | | 2. If forcing is atmos. state and control is atmos. state, |
c | | 2. If forcing is atmos. state and control is atmos. state, |
| 500 |
c | | then the control variable anomalies are read here |
c | | then the control variable anomalies are read here via ctrl_get_gen |
| 501 |
c | | * ctrl_getatemp |
c | | (atemp, aqh, precip, swflux, swdown, uwind, vwind). |
|
c | | * ctrl_getaqh |
|
|
c | | * ctrl_getuwind |
|
|
c | | * ctrl_getvwind |
|
| 502 |
c | | If forcing and control are fluxes, then |
c | | If forcing and control are fluxes, then |
| 503 |
c | | controls are added later. |
c | | controls are added later. |
| 504 |
c | o |
c | o |
| 505 |
c | |
c | |
| 506 |
c |-- exf_check_range |
c |-- exf_radiation |
| 507 |
c | | 1. Check whether read fields are within assumed range |
c | | Compute net or downwelling radiative fluxes via |
| 508 |
c | | (may capture mismatches in units) |
c | | Stefan-Boltzmann law in case only one is known. |
| 509 |
|
c | o |
| 510 |
|
c |-- exf_wind |
| 511 |
|
c | | Computes wind speed and stresses, if required. |
| 512 |
c | o |
c | o |
| 513 |
c | |
c | |
| 514 |
c |-- exf_bulkformulae |
c |-- exf_bulkformulae |
| 515 |
c | | 1. Compute net or downwelling radiative fluxes via |
c | | Compute air-sea buoyancy fluxes from |
| 516 |
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 |
|
| 517 |
c | o |
c | o |
| 518 |
c | |
c | |
| 519 |
c |-- < add time-mean river runoff here, if available > |
c |-- < hflux is sum of sensible, latent, longwave rad. > |
| 520 |
|
c |-- < sflux is sum of evap. minus precip. minus runoff > |
| 521 |
|
c | |
| 522 |
|
c |-- exf_getsurfacefluxes |
| 523 |
|
c | If forcing and control is flux, then the |
| 524 |
|
c | control vector anomalies are read here via ctrl_get_gen |
| 525 |
|
c | (hflux, sflux, ustress, vstress) |
| 526 |
c | |
c | |
| 527 |
c |-- < update tile edges here > |
c |-- < update tile edges here > |
| 528 |
c | |
c | |
| 529 |
c |-- exf_getsurfacefluxes |
c |-- exf_check_range |
| 530 |
c | | 1. If forcing and control are fluxes, then |
c | | Check whether read fields are within assumed range |
| 531 |
c | | controls are added here. |
c | | (may capture mismatches in units) |
| 532 |
c | o |
c | o |
| 533 |
c | |
c | |
| 534 |
c |-- < treatment of hflux w.r.t. swflux > |
c |-- < add shortwave to hflux for diagnostics > |
| 535 |
c | |
c | |
| 536 |
c |-- exf_diagnostics_fill |
c |-- exf_diagnostics_fill |
| 537 |
c | | 1. Do EXF-related diagnostics output here. |
c | | Do EXF-related diagnostics output here. |
| 538 |
c | o |
c | o |
| 539 |
c | |
c | |
| 540 |
c |-- exf_mapfields |
c |-- exf_mapfields |
| 541 |
c | | 1. Map the EXF variables onto the core MITgcm |
c | | Forcing fields from exf package are mapped onto |
| 542 |
c | | forcing fields. |
c | | mitgcm forcing arrays. |
| 543 |
|
c | | Mapping enables a runtime rescaling of fields |
| 544 |
c | o |
c | o |
| 545 |
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 |
|
|
|
|
| 546 |
\end{verbatim} |
\end{verbatim} |
| 547 |
} |
} |
| 548 |
|
|
| 549 |
Bulk formula routine: \texttt{exf\_bulkformulae.F} |
Radiation calculation: \texttt{exf\_radiation.F} |
| 550 |
|
|
| 551 |
|
Wind speed and stress calculation: \texttt{exf\_wind.F} |
| 552 |
|
|
| 553 |
Generic I/O routine: \texttt{exf\_set\_gen.F} |
Bulk formula: \texttt{exf\_bulkformulae.F} |
| 554 |
|
|
| 555 |
Interpolation routine: \texttt{exf\_interp.F} |
Generic I/O: \texttt{exf\_set\_gen.F} |
| 556 |
|
|
| 557 |
|
Interpolation: \texttt{exf\_interp.F} |
| 558 |
|
|
| 559 |
Header routines |
Header routines |
| 560 |
|
|
| 569 |
Table \ref{tab:pkg:exf:diagnostics}. |
Table \ref{tab:pkg:exf:diagnostics}. |
| 570 |
|
|
| 571 |
\begin{table}[h!] |
\begin{table}[h!] |
| 572 |
|
\centering |
| 573 |
\label{tab:pkg:exf:diagnostics} |
\label{tab:pkg:exf:diagnostics} |
| 574 |
{\footnotesize |
{\footnotesize |
| 575 |
\begin{verbatim} |
\begin{verbatim} |
| 576 |
------------------------------------------------------ |
---------+----+----+----------------+----------------- |
| 577 |
<-Name->|Levs|grid|<-- Units -->|<- Tile (max=80c) |
<-Name->|Levs|grid|<-- Units -->|<- Tile (max=80c) |
| 578 |
------------------------------------------------------ |
---------+----+----+----------------+----------------- |
| 579 |
|
EXFhs | 1 | SM | W/m^2 | Sensible heat flux into ocean, >0 increases theta |
| 580 |
|
EXFhl | 1 | SM | W/m^2 | Latent heat flux into ocean, >0 increases theta |
| 581 |
|
EXFlwnet| 1 | SM | W/m^2 | Net upward longwave radiation, >0 decreases theta |
| 582 |
|
EXFswnet| 1 | SM | W/m^2 | Net upward shortwave radiation, >0 decreases theta |
| 583 |
EXFlwdn | 1 | SM | W/m^2 | Downward longwave radiation, >0 increases theta |
EXFlwdn | 1 | SM | W/m^2 | Downward longwave radiation, >0 increases theta |
| 584 |
EXFswdn | 1 | SM | W/m^2 | Downward shortwave radiation, >0 increases theta |
EXFswdn | 1 | SM | W/m^2 | Downward shortwave radiation, >0 increases theta |
| 585 |
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 |
| 587 |
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 |
| 588 |
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 |
| 589 |
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 |
| 590 |
|
EXFwspee| 1 | SM | m/s | 10-m wind speed modulus ( >= 0 ) |
| 591 |
EXFatemp| 1 | SM | degK | surface (2-m) air temperature |
EXFatemp| 1 | SM | degK | surface (2-m) air temperature |
| 592 |
EXFaqh | 1 | SM | kg/kg | surface (2-m) specific humidity |
EXFaqh | 1 | SM | kg/kg | surface (2-m) specific humidity |
| 593 |
EXFevap | 1 | SM | m/s | evaporation, > 0 increases salinity |
EXFevap | 1 | SM | m/s | evaporation, > 0 increases salinity |
| 594 |
EXFpreci| 1 | SM | m/s | evaporation, > 0 decreases salinity |
EXFpreci| 1 | SM | m/s | evaporation, > 0 decreases salinity |
| 595 |
|
EXFsnow | 1 | SM | m/s | snow precipitation, > 0 decreases salinity |
| 596 |
EXFempmr| 1 | SM | m/s | net upward freshwater flux, > 0 increases salinity |
EXFempmr| 1 | SM | m/s | net upward freshwater flux, > 0 increases salinity |
| 597 |
EXFpress| 1 | SM | N/m^2 | atmospheric pressure field |
EXFpress| 1 | SM | N/m^2 | atmospheric pressure field |
| 598 |
\end{verbatim} |
\end{verbatim} |
| 602 |
|
|
| 603 |
%---------------------------------------------------------------------- |
%---------------------------------------------------------------------- |
| 604 |
|
|
| 605 |
\subsubsection{Reference experiments} |
\subsubsection{Experiments and tutorials that use exf} |
| 606 |
|
\label{sec:pkg:exf:experiments} |
|
global\_with\_exf: |
|
| 607 |
|
|
| 608 |
lab\_sea: |
\begin{itemize} |
| 609 |
|
\item{Global Ocean experiment, in global\_with\_exf verification directory } |
| 610 |
|
\item{Labrador Sea experiment, in lab\_sea verification directory } |
| 611 |
|
\end{itemize} |
| 612 |
|
|
| 613 |
%---------------------------------------------------------------------- |
%---------------------------------------------------------------------- |
| 614 |
|
|