Skip to content

Open Boundary Conditions

Kate Hedstrom edited this page Oct 28, 2016 · 32 revisions

Open Boundary Conditions

The boundaries pass from q-point to q-point. Each boundary segment is specified separately as shown below. The boundary conditions for the southern and western sides only work in symmetric mode.

The boundaries can be either specified or computed based on a radiation-type condition, possibly with nudging as well. There is land mask outside a specified boundary, ocean outside a radiation boundary.

The old way

There was a "Flather" option for each of the four sides of the domain, which applied boundary conditions to the flow normal to the corresponding side. It applied these conditions to both the baroclinic and barotropic velocities, Orlanski and Flather, respectively. It is no longer available.

The new way

Drawing of domain with open segments

Segments are a means of specifying pieces of open boundary, each being aligned with the i- or j-axis. We don't promise to support convex interior corners such as would be required by converting the peninsula between segment 1 and segment 2 in the figure to an open boundary.

We start by reading the number of segments:

  • OBC_NUMBER_OF_SEGMENTS = 2

For each segment, there's a range of i or j at a fixed j or i. Set the fixed value first, then the range. The index order for the range will give the direction, going around the domain in a counter-clockwise direction.

Once the location of the boundary is set, determine its type. Up to five descriptive words can be used. The available list is subject to change...

  • OBC_SEGMENT_001 = "I=0,J=23:1,SIMPLE"
  • OBC_SEGMENT_002 = "J=45,I=5:15,FLATHER, ORLANSKI, OBLIQUE, NUDGED" There is currently no checking to make sure you specify segment 1 first. The first one listed will be segment 1 internally. Warning for the coming of segment data!

For the future: - OBC_SEGMENT_001_DATA = “TEMP=file:xyz_%y.nc(theta),SALT=...” - OBC_SEGMENT_002_DATA = “SALT=IC” - or OBC_SEGMENT_002_DATA = “TEMP=DOME”

  • For the I,J ranges, can use a shorthand of "N" for the northernmost or easternmost value instead of spelling out the numeric value: - "I=N,J=5:N-2" (part of eastern boundary) - "I=0,J=N:0" (entire western boundary) - "I=N-2,J=N-10:N-2" (eastern boundary condition 2 rows in) - Maybe even shorthand for the entire boundary being open? "IJ=N" (not yet)

  • For the whole boundary to be open, including corners, one should set:

    • OBC_NUMBER_OF_SEGMENTS = 4
    • OBC_SEGMENT_001 = "J=N,I=N:0,FLATHER"
    • OBC_SEGMENT_002 = "J=0,I=0:N,FLATHER"
    • OBC_SEGMENT_003 = "I=N,J=0:N,FLATHER"
    • OBC_SEGMENT_004 = "I=0,J=N:0,FLATHER"
  • The depth/mask copy operations happen first in the east-west direction. We want to make sure the corners are covered by the north-south copying after the east-west copying and therefore we make sure to paint the corners in the north-south colors before assigning the east-west colors.