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

Module ocean_sbc_mod

Contact:  M.J. Harrison
Reviewers:  A. Rosati S. M. Griffies V. Balaji
Change History: WebCVS Log


OVERVIEW

Set up the surface boundary conditions for mom4.

This module sets up the surface boundary conditions for the model. Also fill Ocean_sfc derived-type used to pass information to other component models.


OTHER MODULES USED

           constants_mod
diag_manager_mod
fms_mod
mpp_domains_mod
mpp_mod
time_interp_external_mod
time_manager_mod
ocean_domains_mod
ocean_riverspread_mod
ocean_types_mod

PUBLIC INTERFACE

ocean_sbc_init:
initialize_ocean_sfc:
sum_ocean_sfc:
zero_ocean_sfc:
avg_ocean_sfc:
ocean_sfc_end:
get_ocean_sbc:
flux_adjust:
ocean_sbc_end:


PUBLIC DATA

None.


PUBLIC ROUTINES

  1. ocean_sbc_init

    DESCRIPTION
    Initialize the ocean sbc module


  2. initialize_ocean_sfc

    DESCRIPTION
    Initialize the ocean surface type, which passes information between ocean and other component models.

    Ocean_sfc%t_surf = time averaged sst (Kelvin) passed to atmosphere/ice model Ocean_sfc%s_surf = time averaged sss (psu) passed to atmosphere/ice models Ocean_sfc%u_surf = time averaged u-current (m/sec) passed to atmosphere/ice models Ocean_sfc%v_surf = time averaged v-current (m/sec) passed to atmosphere/ice models Ocean_sfc%sea_lev = time averaged thickness of top model grid cell (m) plus patm/rho0/grav Ocean_sfc%frazil = time accumulated frazil (J/m^2) passed to ice model. time averaging not performed, since ice model needs the frazil accumulated over the ocean time steps. Note that Ocean_sfc%frazil is accumulated, whereas T_diag%frazil (saved in diagnostic tracer restart file) is instantaneous.



  3. sum_ocean_sfc

    DESCRIPTION
    Accumulate the ocean_sfc derived type over the course of the ocean component sub-cycling used when coupling to other models.


  4. zero_ocean_sfc

    DESCRIPTION
    Zero the elements of the Ocean_sfc derived type.


  5. avg_ocean_sfc

    DESCRIPTION
    Compute average of ocean surface quantities. This is for coupling, where pass time averaged information from ocean to other component models. Note that Ocean_sfc%frazil is NOT time averaged. Rather, it is accumulated from T_diag(index_frazil)%field in subroutine sum_ocean_sfc. Doing so is necessary for heat conservation between ocean and sea ice systems. Since it is not time averaged, frazil is not part of this averaging subroutine.

    Note that if one removes the averaging, then we take only the latest values of the surface fields. This approach has been found useful to stabilize the "concurrent" coupling approach.



  6. ocean_sfc_end

    DESCRIPTION
    Save information from Ocean_sfc to restarts. Note that it is important in general to distinguish the time accumulated quantity Ocean_sfc%frazil, saved here, from the instantaneous quantity T_diag%frazil, which is saved in the diagnostic tracer restart file.


  7. get_ocean_sbc

    DESCRIPTION
    Subroutine to get the surface fluxes passed into the ocean from other component models.


  8. flux_adjust

    DESCRIPTION
    Subroutine to compute the surface fluxes derived from a restoring condition. We use a convention whereby a positive flux enters the ocean: (+) down convention.

    Note that the term "flux adjust" should not be confused with a similar term used in coupled modeling, where the atmosphere/ocean fluxes realized in a coupled atmosphere/ocean model are supplemented by fluxes diagnosed from an uncoupled model.


  9. ocean_sbc_end

    DESCRIPTION
    Save pme_taum1 and river_taum1 to restart.



NAMELIST

&ocean_sbc_nml

use_waterflux
Set to true when wish to use real fresh water flux as opposed to virtual salt fluxes.
[logical]
waterflux_tavg
Set to true when aiming to suppress the leap-frog computational mode by setting pme and river equal to a time averaged value over the present and previous time step. This method requires an extra restart file.
[logical]
temp_restore_tscale
Time scale in days for restoring temperature within the top model grid cell.
[real, units: day]
salinity_ref
Reference salinity used for converting fresh water flux to salt flux.
[real, units: psu]
salt_restore_tscale
Time scale in days for restoring salinity within the top model grid cell.
[real, units: day]
salt_restore_under_ice
Logical indicating whether to restore salinity under sea ice or not. When .false. then will not restore salinity in regions where we use a "frazil" condition as a proxy for where sea-ice is present. Do not use sea ice extent from a sea ice model since we generally do not pass information regarding ice extent between the sea ice model and the ocean model.
[logical]
zero_net_salt_restore
Logical indicating whether to remove the area mean of the salinity restore flux so there is a net zero input of salt to the ocean associated with restoring.
[logical]
zero_net_water_restore
Logical indicating whether to remove the area mean of the water restore flux so there is a net zero input of water to the ocean associated with restoring.
[logical]
zero_net_water_coupler
Logical indicating whether to remove the area mean of the water passed through the coupler so there is a net zero input of fresh water to the ocean associated with p-e+r. Do so by removing area mean from pme--keep river values unchanged. Note that a choice must be made whether to remove the area mean from rivers or pme. We choose pme since it is more evenly distributed than rivers. Setting zero_net_water_coupler to true may be appropriate when running an ice-ocean model using a bulk formulae to compute evaporation (e.g., omip) and when only providing a weak (or zero) salinity restoring. It is not appropriate when running a coupled ocean-atmosphere model, where the moisture budget should be conserved without an artificial removal of the global mean.
[logical]
rotate_winds
Set to true when need to rotate the winds onto the ocean model grid. This is needed for cases where the winds are on a spherical grid and the ocean model uses tripolar=.true. If generate the wind data on the ocean model grid, then do not need to rotate, since the rotation has already been done.
[logical]
max_ice_thickness
When coupling mom4 to an ice model, the sea ice thickness may need to be restricted to prevent vanishing top-level in mom4. Set max_ice_thickness (meters) < dzt(k=1) to restrict. This truncation avoids the numerical problem but we loose mass conservation in the coupled sea ice and ocean system. We also alter the pressure felt on the ocean as applied by the sea ice. Different vertical coordinates are needed to do the problem more realistically.
[real, units: m]
riverspread
Set to true if wish to use the spread_river_horz algorithm to spread out the river discharge over a wide area into the ocean.
[logical]
frazil_factor
This factor accounts for possibly different time stepping used in the sea ice model relative to the ocean model. If sea-ice and ocean use same time stepping schemes, then frazil_factor=1.0. If sea-ice uses a twolevel scheme and ocean a threelevel leap-frog, then frazil_factor=0.5. Default is 1.0 since the GFDL sea ice model SIS uses a two-level time stepping scheme and mom4 defaults to a staggered two-level scheme.
[real, units: dimensionless]
avg_sfc_velocity
If set to true, the u and v fields passed up to the sea ice are averaged over a coupling interval. TRUE by default.
[logical]
avg_sfc_temp_salt_eta
If set to true, the t, s and sea_level fields passed up to the sea ice are averaged over a coupling interval. TRUE by default.
[logical]


DATA SETS

None.


ERROR MESSAGES

None.


top