Module ocean_freesurf_mod
OVERVIEW
Solve the vertically integrated dynamics using one of two
explicit free surface algorithms.
This module time steps the vertically integrated dynamics,
including the surface height and the vertically integrated
horizontal velocity. Two explicit time stepping schemes are
available:
A. Leap-frog
B. Predictor-Corrector with adjustable dissipation
Both use a split-explicit method with an explicit free
surface. There is no rigid lid available in mom4.
OTHER MODULES USED
constants_mod
diag_manager_mod
fms_mod
fms_io_mod
mpp_domains_mod
mpp_mod
time_manager_mod
ocean_coriolis_mod
ocean_domains_mod
ocean_obc_mod
ocean_operators_mod
ocean_types_mod
ocean_util_mod
PUBLIC INTERFACE
PUBLIC DATA
None.
PUBLIC ROUTINES
-
ocean_freesurf_init
-
DESCRIPTION
- Initialize the free surface module
-
update_ocean_surface_height
-
DESCRIPTION
- Time step the surface height using a "big" time step.
-
surface_height_tendency
-
DESCRIPTION
- Compute tendency for surface height.
-
ocean_surface_smooth
-
DESCRIPTION
- Compute tendency for surface diffusion in both eta and tracer.
Use either a laplacian or a biharmonic smoother.
-
update_ocean_barotropic
-
DESCRIPTION
- Time step the external mode fields using either a leap-frog scheme
or a predictor-corrector scheme. Time average these fields to
update the vertically integrated velocity (ud,vd) and the time
averaged surface height eta_t_bar.
-
ocean_barotropic_forcing
-
DESCRIPTION
- Construct the vertically integrated forcing. This forcing is to be
held constant over the barotropic timesteps. At the time of calling
this routine, accel only has the contributions from explicit-time
forcing, except for the following:
1. Coriolis force is updated on the barotropic time steps when
integrating the barotropic dynamics. So it should not
be included in forcing_fs.
2. Contributions from smf and bmf are added to forcing_fs to allow
for simpler handling of vertical friction implicitly.
3. The accel array is already thickness weighted, so a vertical
integral is here just a vertical sum.
-
leap_frog_barotropic
-
DESCRIPTION
- Integrate barotropic dynamics for "nts" timesteps using leapfrog.
-
pred_corr_barotropic
-
DESCRIPTION
- Integrate barotropic dynamics for "nts" timesteps using predictor-corrector.
This scheme is more stable than the leap_frog since it can run with longer
time steps to resolve external mode gravity waves. It also provides
some extra smoothing when pred_corr_gamma > 0 and so the options
smooth_eta_t_fs_laplacian and smooth_eta_t_fs_biharmonic may not be
needed.
Note that OBC has not been tested for use with predictor-corrector.
-
freesurf_integrals
-
DESCRIPTION
- Compute area averaged fresh water and surface height
-
freesurf_energy
-
DESCRIPTION
- Compute free surface energetics
-
read_freesurf
-
DESCRIPTION
- Read in external mode fields from restart file.
-
ocean_freesurf_end
-
DESCRIPTION
- Write out external mode fields to restart file.
-
eta_truncate
-
DESCRIPTION
- Truncate eta_t to keep
dzt(1) + eta_t >= frac_crit_cell_height*dzt(1)
and
eta_t <= eta_max
-
maximum_convud
-
DESCRIPTION
- Compute maximum convergence(ud,vd).
-
ocean_ud_chksum
-
DESCRIPTION
- Compute checksum for ud.
-
ocean_eta_chksum
-
DESCRIPTION
- Compute checksum for surface height.
-
psi_compute
-
DESCRIPTION
- Compute quasi-barotropic streamfunctions for diagnostic purposes.
When no fresh water and steady state, these two streamfunctions
will be equal, and they will be equal to the rigid lid barotropic
streamfunction. Note that for plotting purposes, it is necessary
to remove a global constant, usually taken as the value over
the American continent.
Original algorithm: Stephen.Griffies@noaa.gov
Modifications for parallel efficiency: Giang.Nong@noaa.gov
-
eta_check
-
DESCRIPTION
- Perform diagnostic check on top cell thickness.
-
tidal_forcing_init
-
DESCRIPTION
- Initialize fields needed for lunar and solar tidal forcing.
-
get_tidal_forcing
-
DESCRIPTION
- Compute equilibrium tidal forcing.
NAMELIST
&ocean_freesurf_nml
-
zero_tendency
If true, will not integrate the free surface.
[logical]
-
zero_eta_ic
To initialize eta_t to zero.
[logical]
-
barotropic_leap_frog
Use leap-frog scheme for barotropic time stepping.
Not the recommended method, since it requires smaller time
steps. It is maintained for legacy purposes.
[logical]
-
robert_asselin
Robert time filter for use with leap-frog scheme for barotropic.
[logical]
-
barotropic_pred_corr
Use preditor-corrector for barotropic time stepping.
This is the recommended method.
[logical]
-
pred_corr_gamma
Dimensionless dissipation parameter for the preditor-corrector
scheme. Setting pred_corr_gamma=0.0 reduces the scheme to a
forward-backward, but it has been found to be unstable.
So pred_corr_gamma > 0.0 is recommended. Note that
pred_corr_gamma > 0.25 may be over-dissipated and so may
go unstable.
[real, units: dimensionless]
-
smooth_eta_t_fs_laplacian
For spatially smoothing the eta_t field at each barotropic time step
with a Laplacian operator. May not be necessary when running with
barotropic_pred_corr=.true. and pred_corr_gamma > 0.0, since
predictor-corrector has dissipation from pred_corr_gamma > 0.0.
[logical]
-
smooth_eta_t_fs_biharmonic
For spatially smoothing the eta_t field at each barotropic time step
with a biharmonic operator. May not be necessary when running with
barotropic_pred_corr=.true. and pred_corr_gamma > 0.0, since
predictor-corrector has dissipation from pred_corr_gamma > 0.0.
[logical]
-
smooth_eta_t_laplacian
For spatially smoothing the eta_t field on the big time step
by using a laplacian operator. For compatibility
and global conservation, must also introduce a mixing
to the thickness weighted tracer concentration in the k=1 cell.
[logical]
-
smooth_eta_t_biharmonic
For spatially smoothing the eta_t field on the big time step
by using a biharmonic operator. For compatibility
and global conservation, must also introduce a mixing
to the thickness weighted tracer concentration in the k=1 cell.
[logical]
-
vel_micom_lap
Velocity scale that is used for computing the MICOM Laplacian mixing
coefficient used in the Laplacian smoothing of surface height.
[real, units: m/sec]
-
vel_micom_bih
Velocity scale that is used for computing the MICOM biharmonic mixing
coefficient used in the Laplacian smoothing of surface height.
[real, units: m/sec]
-
tidal_forcing_m2
Forces from lunar M2 tidal constituent.
[logical]
-
tidal_forcing_8
Forces from 8 lunar and solar tidal constituents.
[logical]
-
truncate_eta
To truncate the surface height deviation so to ensure positive thickness
within the top cell. This method will not conserve volume or tracer.
It is coded for cases when conservation is not critical but wish to
run with large free surface height deviations, such as when running with
tides and very fine vertical resolution.
[logical]
-
verbose_truncate
For verbose printout on truncate_eta
[logical]
-
frac_crit_cell_height
The top model tracer grid cell has thickness dht(i,j,1) = dzt(1) + eta_t(i,j).
0 < frac_crit_cell_height <= 1 sets the fraction of dzt(1) that is allowed
prior to bringing the model down due to overly small dht(i,j,1).
[real, units: dimensionless]
-
eta_max
The maximum positive eta_t allowed when truncate_eta is true.
[real, units: meter]
-
debug_fs
For debugging.
[logical]
-
verbose_init
For brief or full printout on initialization
[logical]
-
diag_freq
Frequency for output of freesurf diagnostics.
[integer]
DATA SETS
None.
ERROR MESSAGES
None.
REFERENCES
- S.M. Griffies, R.C. Pacanowski, R.M. Schmidt, and V. Balaji
Tracer Conservation with an Explicit Free Surface Method for
Z-coordinate Ocean Models
Monthly Weather Review (2001) vol 129 pages 1081--1098
- S.M. Griffies
Fundamentals of Ocean Climate Models
Princeton University Press (2004)
- S.M. Griffies, M.J. Harrison, R.C. Pacanowski, and A. Rosati
A Technical Guide to MOM4, including supplement for MOM4p1 (2004)
COMPILER SPECIFICS
None.
PRECOMPILER OPTIONS
None.
LOADER OPTIONS
None.
TEST PROGRAM
None.
KNOWN BUGS
None.
NOTES
None.
FUTURE PLANS
None.