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

Module ocean_obc_mod

Contact:  Martin Schmidt Zhi Liang
Reviewers: 
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 accross boundary.


OTHER MODULES USED

           constants_mod
data_override_mod
diag_manager_mod
field_manager_mod
fms_mod
mpp_domains_mod
mpp_mod
time_interp_external_mod
time_manager_mod
tracer_manager_mod
ocean_domains_mod
ocean_types_mod

PUBLIC INTERFACE

ocean_obc_freesurf:
obc_update_boundary:
ocean_obc_init:
ocean_obc_tracer_init:
ocean_obc_prepare:
ocean_obc_adjust_advel:
ocean_obc_adjust_forcing_fs:
ocean_obc_tracer:
ocean_obc_end:


PUBLIC DATA

None.


PUBLIC ROUTINES

  1. ocean_obc_freesurf

      subroutine ocean_obc_freesurf(eta, taum1, tau, taup1, tstep)
      subroutine ocean_obc_freesurf(Time, Ext_mode)
        type(ocean_time_type), intent(in)             :: Time
        type(ocean_external_mode_type), intent(inout) :: Ext_mode

    DESCRIPTION
    Extrapolate surface height on the open boundaries for ocean model.


    INPUT
    taum1, tau, taup1    Time step index.
       [integer]

    INPUT/OUTPUT
    eta    surface height
       [real, dimension(isd:,jsd:,:)]
    etataum1    surface height at time step taum1

  2. 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(:,:,:,:)]

  3. ocean_obc_init

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


    INPUT
    dtts, dtuv, dtfs, 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]

  4. 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]

  5. ocean_obc_prepare

      subroutine ocean_obc_prepare(Time, Ext_mode, T_prog)
        type(ocean_time_type), intent(in)           :: Time 
        type(ocean_external_mode_type),  intent(in) :: Ext_mode
        type(ocean_prog_tracer_type), intent(inout) :: T_prog(:)
    
        integer                                     :: m, n, i, j, taum1, tau
        logical                                     :: used
    DESCRIPTION
    Prepares OBC



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

  7. ocean_obc_adjust_forcing_fs

      subroutine ocean_obc_adjust_forcing_fs(Ext_mode)
    DESCRIPTION
    Add wrong pressure gradient


    INPUT/OUTPUT
    Ext_mode   
       [ocean_external_mode_type]

  8. ocean_obc_tracer

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


    INPUT
    wrk2    contains rho0r/dht 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:,:,:)]

  9. ocean_obc_end

    DESCRIPTION
    Destructor routine. Release memory.


    OUTPUT
    have_obc    Contains open boundary information
       [logical]


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_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 resolution. Default value is .false.
[logical, dimension(max_obc)]
obc_relax_eta_profile
logical variable that decide whether relax eta to a prscribed profile or not. Default value is .false.
[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_tracer_orlanski
logical variable that decide whether apply orlanski obc on tracer or not. Default value is .false.
[logical, dimension(max_obc)]
Relaxation coefficient.
[real, dimension(max_obc)]
adjust_topog
Control adjusting topography on the open boundary. Default value is true. If true, no topographic gradient accross boundary.
[logical]
nt
number of tracers to use open boundary condition
[integer]
debug_phase_speed
Includes the phase speed into the model output.
[logical]
debug_obc
For debugging.
[logical]


DATA SETS

None.


ERROR MESSAGES

None.


top