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

Module ocean_obc_mod

Contact:  Martin Schmidt Mike Herzfeld Zhi Liang Matthew Harrison
Reviewers:  Stephen Griffies
Change History: WebCVS Log


OVERVIEW

Open Boundary condition for mom4 ocean model.

This module can extrapolate data on the open lateral boundaries for mom4 ocean model. Tracer and surface height are extrapolated on the boundary by using implicit radiation boundary conditions, velocities are calculated on the boundary from a linear equation (omitted advection equation). The gradient of each field is supposed to be zero between boundary points and the first points accross the boundary.

This scheme has been tested only with the following vertical coordinates: vertical_coordinate=='geopotential' vertical_coordinate=='zstar' Notably, there is no OBC prescription for pressure coordinates.



OTHER MODULES USED

           constants_mod
data_override_mod
diag_manager_mod
fms_mod
fms_io_mod
mpp_io_mod
mpp_domains_mod
mpp_mod
time_interp_external_mod
time_manager_mod
tracer_manager_mod
ocean_util_mod
ocean_domains_mod
ocean_parameters_mod
ocean_types_mod

PUBLIC INTERFACE

obc_update_boundary:
obc_zero_boundary:
ocean_obc_enhance_visc_back:
ocean_obc_enhance_diff_back:
ocean_obc_init:
ocean_obc_tracer_init:
ocean_obc_check_for_update:
ocean_obc_prepare:
ocean_obc_adjust_divud:
ocean_obc_damp_newton:
ocean_obc_ud:
ocean_obc_mixing:
ocean_obc_barotropic:
ocean_obc_adjust_advel:
ocean_obc_adjust_forcing_bt:
ocean_obc_enhance_diff_back_3d:
ocean_obc_enhance_diff_back_2d:
ocean_obc_enhance_visc_back_2d:
ocean_obc_enhance_visc_back_3d:
ocean_obc_tracer:
ocean_obc_check_topog:
ocean_obc_set_mask:
ocean_obc_restart:
ocean_obc_end:
phase_speed_IOW:
phase_speed_ORLANS:
phase_speed_GRAVTY:
phase_speed_MILLER:
phase_speed_RAYMND:
ocean_obc_mass_flux:
ocean_obc_tracer_flux:
store_ocean_obc_tracer_flux:
store_ocean_obc_tracer_advect:
store_ocean_obc_pressure_grad:
boundary_average:
check_eta_OBC:


PUBLIC DATA

None.


PUBLIC ROUTINES

  1. obc_update_boundary


    DESCRIPTION
    update field on the halo points at the global boundaries.


    INPUT/OUTPUT
    field    field to be update on the boundary
       [real, dimension(:,:,:,:)]

  2. obc_zero_boundary


    DESCRIPTION
    set field at open boundaries to zero.


    INPUT/OUTPUT
    field    field to be set to zero on the boundary

  3. ocean_obc_enhance_visc_back


    DESCRIPTION
    enhance viscosity near open boundaries


  4. ocean_obc_enhance_diff_back


    DESCRIPTION
    enhance diffusion near open boundaries


  5. ocean_obc_init

      subroutine ocean_obc_init(have_obc, Time, Time_steps, Domain, Grid, Ocean_options, ver_coordinate, debug)
    DESCRIPTION
    Allocates space and initializes a derived-type variable that contains domain decompostion and grid information.


    INPUT
    dtts, dtuv, dtbt, dteta   
       [real]
    Domain    A derived data type that contains domain information for mom4.
       [type(ocean_domain_type)]
    Grid    A derived data type that contains grid information for mom4.
       [type(ocean_grid_type)]

    INPUT/OUTPUT
    have_obc    logical variable to indicate if there is any open boundary condition. if true, open boudanry exists.
       [logical]

  6. ocean_obc_tracer_init

      subroutine ocean_obc_tracer_init(Time, T_prog, num_prog_tracers, debug)
    DESCRIPTION
    Allocates space and initializes all stuff for tracers at OBC


    INPUT
    debug   
       [logical]

  7. ocean_obc_check_for_update

      function ocean_obc_check_for_update()
    DESCRIPTION
    Prepares OBC



  8. ocean_obc_prepare

      subroutine ocean_obc_prepare(Time, Thickness, Ext_mode, T_prog)
    DESCRIPTION
    Prepares OBC



  9. ocean_obc_adjust_divud

      subroutine ocean_obc_adjust_divud(divud)
    DESCRIPTION


    INPUT/OUTPUT
    divud   
       [real, dimension(isd:,jsd:)]

  10. ocean_obc_damp_newton

      subroutine ocean_obc_damp_newton(udrho_bt,forcing)
    DESCRIPTION


  11. ocean_obc_ud

      subroutine ocean_obc_ud(eta_t, udrho)
    DESCRIPTION


  12. ocean_obc_mixing

      subroutine ocean_obc_mixing(visc_cbt, diff_cbt, field1, field2)
    DESCRIPTION


    INPUT/OUTPUT
    visc_cbu   
       [real, dimension(isd:,jsd:,:)]
    diff_cbt   
       [real, dimension(isd:,jsd:,:,2)]

  13. ocean_obc_barotropic

      subroutine ocean_obc_barotropic(eta, taum1, tau, taup1, tstep)
    DESCRIPTION


    INPUT
    taum1, tau, taup1   
       [integer]

    INPUT/OUTPUT
    eta   
       [real, dimension(isd:,jsd:,:)]

  14. ocean_obc_adjust_advel

      subroutine ocean_obc_adjust_advel(Adv_vel)
    DESCRIPTION
    Subtract wrong vertical bottom velocity


    INPUT/OUTPUT
    Adv_vel    Advection velocities
       [ocean_adv_vel_type]

  15. ocean_obc_adjust_forcing_bt

      subroutine ocean_obc_adjust_forcing_bt(Ext_mode)
    DESCRIPTION
    Add wrong pressure gradient


    INPUT/OUTPUT
    Ext_mode   
       [ocean_external_mode_type]

  16. ocean_obc_enhance_diff_back_3d

      subroutine ocean_obc_enhance_diff_back_3d(diff_cet, diff_cnt, scheme)
    DESCRIPTION
    enhance diffusion near open boundary


    INPUT/OUTPUT
    diff_cet   
       [real array 3D]
    diff_cnt   
       [real array 3D]

  17. ocean_obc_enhance_diff_back_2d

      subroutine ocean_obc_enhance_diff_back_2d(aiso_back, scheme)
    DESCRIPTION
    enhance diffusivity near open boundary


    INPUT
    aiso_back   
       [real array 2D]

  18. ocean_obc_enhance_visc_back_2d

      subroutine ocean_obc_enhance_visc_back_2d(aiso_back, scheme)
    DESCRIPTION
    enhance viscosity near open boundary


    INPUT/OUTPUT
    aiso_back   
       [real array 2D]

  19. ocean_obc_enhance_visc_back_3d

      subroutine ocean_obc_enhance_visc_back_3d(aiso_back, aaniso_back, scheme)
    DESCRIPTION
    enhance viscosity near open boundary. Maximum viscosity for stability is set on the boundary, linearly decreasing to the interior value at enh_pnts into the interior.


    INPUT/OUTPUT
    aiso_back   
       [real array 3D]
    aaniso_back   
       [real array 3D]

  20. ocean_obc_tracer

      subroutine ocean_obc_tracer(tracer, adv_vet, adv_vnt, Thickness, pme, taum1, tau, taup1, time, name, tn)
    DESCRIPTION
    Extrapolate tracer on the open boundaries for ocean model and regional atmosphere model.


    INPUT
    rho_dztr    contains Thickness%rho_dztr from update_tracer
       [real, dimension(isc:,jsc:,:)]
    taum1, tau, taup1    time step index
       [integer]
    time    model time
       [type(time_type)]
    name    tracer name.
       [character(len=*)]
    n    tracer number
       [integer]

    INPUT/OUTPUT
    tracer    Tracer field
       [real, dimension(isd:,jsd:,:,:)]

  21. ocean_obc_check_topog

    DESCRIPTION


  22. ocean_obc_set_mask

    DESCRIPTION


  23. ocean_obc_restart

    DESCRIPTION
    Write out restart files registered through register_restart_file


  24. ocean_obc_end

    DESCRIPTION
    Destructor routine. Release memory.


    OUTPUT
    have_obc    Contains open boundary information
       [logical]

  25. phase_speed_IOW

    DESCRIPTION


  26. phase_speed_ORLANS

    DESCRIPTION


  27. phase_speed_GRAVTY

    DESCRIPTION


  28. phase_speed_MILLER

    DESCRIPTION


  29. phase_speed_RAYMND

    DESCRIPTION


  30. ocean_obc_mass_flux

    DESCRIPTION


  31. ocean_obc_tracer_flux

    DESCRIPTION


  32. store_ocean_obc_tracer_flux

    DESCRIPTION


  33. store_ocean_obc_tracer_advect

    DESCRIPTION


  34. store_ocean_obc_pressure_grad

    DESCRIPTION


  35. boundary_average

    DESCRIPTION


  36. check_eta_OBC

    DESCRIPTION



NAMELIST

&ocean_obc_nml

nobc
number of open boundary condition. Its value should be less than max_obc. Increase max_obc if needed.
[integer]
direction
open boundary direction. Each element value should be west, east, south or north.
[character(len=10), dimension(max_obc)]
is, ie, js, je
open boundary position.
[integer, dimension(max_obc)]
name
type of open bounday.
[character(len=32), dimension(max_obc)]
obc_nor
Normal velocity OBC
[character, dimension(max_obc)]
obc_tan
Tangential velocity OBC
[character, dimension(max_obc)]
obc_eta
Surface elevation OBC
[character, dimension(max_obc)]
obc_tra
Tracers OBC
[character, dimension(max_obc,max_prog_tracers)]
obc_mix
Vertical mixing coefficient OBC
[character, dimension(max_obc)]
obc_relax_eta
logical variable that decide whether relax eta or not. Default value is .false.
[logical, dimension(max_obc)]
obc_consider_convu
logical variable that decide whether to account for one component of convu within the boundary. The appropriate behavior depends on the model configuration. Default value is .false.
[logical, dimension(max_obc)]
obc_vert_advel_t
logical variable that decide whether to account for vertical advection of tracers at the boundary. The appropriate behavior depends on the model configuration. Default value is .false. (Currently inactive)
[logical, dimension(max_obc)]
obc_vert_advel_u
logical variable that decide whether to account for vertical advection of momentum at the boundary. The appropriate behavior depends on the model configuration. Default value is .false.
[logical, dimension(max_obc)]
obc_relax_eta_profile
logical variable that decide whether relax eta to a prescribed profile or not. Default value is .false. In this case only the average sea level is relaxed, the profile, hence the geostrophic current, is unchanged.
[logical, dimension(max_obc)]
obc_relax_tracer
logical variable that decide whether relax tracer or not. Default value is .false.
[logical, dimension(max_obc)]
obc_flow_relax
Integer variable specifying the flow relaxation zone (flow realxation of Martinsen and Engedahl (1987). Default value is 1.
[integer, dimension(max_obc)]
obc_consider_sources
Logical variable specifying if source and SGS terms of the normal tracer scheme are valid. Default value is .false..
[logical, dimension(max_obc)]
obc_tracer_no_inflow
logical variable that decide whether apply orlanski obc on tracer or not. Default value is .false.
[logical, dimension(max_obc)]
ctrop_max
Maximum value to clip diagnosed barotropic phase speed in terms of sqrt(gH). Should be about 1.
[real, dimension(max_obc)]
ctrop_min
Minimum value to diagnosed barotropic phase speed in terms of sqrt(gH). Should be about 0. Default is 0.1.
[real, dimension(max_obc)]
ctrop_inc
value to be set for barotropic phase speed if incoming waves are diagnosed. (in terms of sqrt(gH)) Should be about 0. Default is 0.
[real, dimension(max_obc)]
rel_coef_eta_in
Relaxation coefficient to be used for incoming wave situation.
[real, dimension(max_obc)]
rel_coef_eta_out
Relaxation coefficient to be used for outgoing wave situation. Should be smaller then or equal to rel_coef_eta_in.
[real, dimension(max_obc)]
filename_eta
Filename to read sea level data.
[character, dimension(max_obc)]
fieldname_eta
Fieldname to read sea level data.
[character, dimension(max_obc)]
rel_eta_pnts
Relax sea level at a stripe of rel_eta_pnts. Default = 1.
[integer, dimension(max_obc)]
rel_coef_tracer_in
Relaxation coefficient to be used for inflow situation.
[real, dimension(max_obc,max_prog_tracers)]
rel_coef_tracer_out
Relaxation coefficient to be used for outflow situation. Should be smaller then or equal to rel_coef_tracer_in.
[real, dimension(max_obc,max_prog_tracers)]
rel_clin_pnts
Relax a tracer at a stripe of rel_clin_pnts. Default = 1.
[integer, dimension(max_obc,max_prog_tracers)]
filename_tracer
Filename to read a tracer. It is allowed to put all data for a boundary in one file.
[character, dimension(max_obc,max_prog_tracers)]
fieldname_tracer
Fieldname of a tracer.
[character, dimension(max_obc,max_prog_tracers)]
obc_enhance_visc_back
logical variable that decide whether to enhance viscosity at the boundary. Default value is .false.
[logical, dimension(max_obc)]
obc_enhance_diff_back
logical variable that decide whether to enhance mixing at the boundary. Default value is .false.
[logical, dimension(max_obc)]
enh_fac_v
'Safety factor' applied to maximum stable viscosity at the boundary. Default = 0.9
[real, dimension(max_obc)]
enh_fac_d
Factor applied to enhance mixing at the boundary. Default = 1.
[real, dimension(max_obc)]
enh_pnts
Enhance viscosity and mixing at a stripe of enh_pnts decreasing with the distance from the boundary. Default = 1.
[integer, dimension(max_obc)]
debug_phase_speed
Includes the phase speed into the model output.
[logical]
debug_this_module
For debugging.
[logical]
nt
number of tracers to use open boundary condition.
[integer]


DATA SETS

None.


ERROR MESSAGES

None.


top