PUBLIC INTERFACE ~ PUBLIC DATA ~ PUBLIC ROUTINES ~ NAMELIST ~ DIAGNOSTIC FIELDS ~ ERROR MESSAGES ~ REFERENCES ~ NOTES

Module ocean_freesurf_mod

Contact:  S.M. Griffies R.C. Pacanowski Zhi Liang (OBC) Martin Schmidt (OBC) Harper Simmons (tides)
Reviewers:  M.J. Harrison
Change History: WebCVS Log


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

ocean_freesurf_init:
update_ocean_surface_height:
surface_height_tendency:
ocean_surface_smooth:
update_ocean_barotropic:
ocean_barotropic_forcing:
leap_frog_barotropic:
pred_corr_barotropic:
freesurf_integrals:
freesurf_energy:
read_freesurf:
ocean_freesurf_end:
eta_truncate:
maximum_convud:
ocean_ud_chksum:
ocean_eta_chksum:
psi_compute:
eta_check:
tidal_forcing_init:
get_tidal_forcing:


PUBLIC DATA

None.


PUBLIC ROUTINES

  1. ocean_freesurf_init

    DESCRIPTION
    Initialize the free surface module


  2. update_ocean_surface_height

    DESCRIPTION
    Time step the surface height using a "big" time step.


  3. surface_height_tendency

    DESCRIPTION
    Compute tendency for surface height.


  4. ocean_surface_smooth

    DESCRIPTION
    Compute tendency for surface diffusion in both eta and tracer. Use either a laplacian or a biharmonic smoother.


  5. 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.


  6. 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.



  7. leap_frog_barotropic

    DESCRIPTION
    Integrate barotropic dynamics for "nts" timesteps using leapfrog.


  8. 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.



  9. freesurf_integrals

    DESCRIPTION
    Compute area averaged fresh water and surface height


  10. freesurf_energy

    DESCRIPTION
    Compute free surface energetics


  11. read_freesurf

    DESCRIPTION
    Read in external mode fields from restart file.


  12. ocean_freesurf_end

    DESCRIPTION
    Write out external mode fields to restart file.


  13. eta_truncate

    DESCRIPTION
    Truncate eta_t to keep

    dzt(1) + eta_t >= frac_crit_cell_height*dzt(1)

    and

    eta_t <= eta_max



  14. maximum_convud

    DESCRIPTION
    Compute maximum convergence(ud,vd).


  15. ocean_ud_chksum

    DESCRIPTION
    Compute checksum for ud.


  16. ocean_eta_chksum

    DESCRIPTION
    Compute checksum for surface height.


  17. 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



  18. eta_check

    DESCRIPTION
    Perform diagnostic check on top cell thickness.


  19. tidal_forcing_init

    DESCRIPTION
    Initialize fields needed for lunar and solar tidal forcing.


  20. 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

  1. 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
  2. S.M. Griffies Fundamentals of Ocean Climate Models Princeton University Press (2004)
  3. 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.


top