Difference between revisions of "Lateral Boundary Conditions"
Line 1: | Line 1: | ||
<div class="title">Lateral Boundary Conditions</div> | <div class="title">Lateral Boundary Conditions</div> | ||
The lateral boundary conditions are specified by logical switches to facilitate applications with nested grids. It also allows to set different boundary conditions between the nonlinear model and the adjoint/tangent models. In addition we can have different boundary conditions between active and passive tracers. The LBC structure is allocated as:<div class="box">[[Variables#LBC|LBC]](1:4, [[Variables#nLBCvar|nLBCvar]], [[Ngrids]])</div>where '''1:4''' are the numbered boundary edges, [[Variables#nLBCvar|nLBCvar]] is the number of LBC state variables, and [[Ngrids]] is the number of nested grids. For example, for free-surface gradient boundary conditions we have:<div class="box"> [[Variables#LBC|LBC]]([[Variables#iwest|iwest]], [[Variables#isFsur|isFsur]], ng) % gradient<br /> [[Variables#LBC|LBC]]([[Variables#ieast|ieast]], [[Variables#isFsur|isFsur]], ng) % gradient<br /> [[Variables#LBC|LBC]]([[Variables#isouth|isouth]], [[Variables#isFsur|isFsur]], ng) % gradient<br /> [[Variables#LBC|LBC]]([[Variables#inorth|inorth]], [[Variables#isFsur|isFsur]], ng) % gradient<br /><br /> integer :: [[Variables#nLBCvar|nLBCvar]]<br /><br /> TYPE T_LBC<br /> logical :: acquire ! process lateral boundary data<br /><br /> logical :: Chapman<br /> logical :: clamped<br /> logical :: closed<br /> logical :: Flather<br /> logical :: gradient<br /> logical :: nested<br /> logical :: nudging<br /> logical :: periodic<br /> logical :: radiation<br /> logical :: reduced<br /> END TYPE T_LBC<br /><br /> TYPE (T_LBC), allocatable :: [[Variables#LBC|LBC]](:,:,:)<br /><br /> TYPE (T_LBC), allocatable :: [[Variables#ad_LBC|ad_LBC]](:,:,:)<br /> TYPE (T_LBC), allocatable :: [[Variables#tl_LBC|tl_LBC]](:,:,:) </div> | The lateral boundary conditions are specified by logical switches to facilitate applications with nested grids. It also allows to set different boundary conditions between the nonlinear model and the adjoint/tangent models. In addition we can have different boundary conditions between active and passive tracers. The LBC structure is allocated as:<div class="box">[[Variables#LBC|LBC]](1:4, [[Variables#nLBCvar|nLBCvar]], [[Ngrids]])</div>where '''1:4''' are the numbered boundary edges, [[Variables#nLBCvar|nLBCvar]] is the number of LBC state variables, and [[Ngrids]] is the number of nested grids. The boundary order is: '''1'''=west, '''2'''=south, '''3'''=east, and '''4'''=north. That is, anticlockwise starting at the western boundary. | ||
[[Image:LBC_indices.png|250px]] | |||
For example, for free-surface gradient boundary conditions we have:<div class="box"> [[Variables#LBC|LBC]]([[Variables#iwest|iwest]], [[Variables#isFsur|isFsur]], ng) % gradient<br /> [[Variables#LBC|LBC]]([[Variables#ieast|ieast]], [[Variables#isFsur|isFsur]], ng) % gradient<br /> [[Variables#LBC|LBC]]([[Variables#isouth|isouth]], [[Variables#isFsur|isFsur]], ng) % gradient<br /> [[Variables#LBC|LBC]]([[Variables#inorth|inorth]], [[Variables#isFsur|isFsur]], ng) % gradient<br /><br /> integer :: [[Variables#nLBCvar|nLBCvar]]<br /><br /> TYPE T_LBC<br /> logical :: acquire ! process lateral boundary data<br /><br /> logical :: Chapman<br /> logical :: clamped<br /> logical :: closed<br /> logical :: Flather<br /> logical :: gradient<br /> logical :: nested<br /> logical :: nudging<br /> logical :: periodic<br /> logical :: radiation<br /> logical :: reduced<br /> END TYPE T_LBC<br /><br /> TYPE (T_LBC), allocatable :: [[Variables#LBC|LBC]](:,:,:)<br /><br /> TYPE (T_LBC), allocatable :: [[Variables#ad_LBC|ad_LBC]](:,:,:)<br /> TYPE (T_LBC), allocatable :: [[Variables#tl_LBC|tl_LBC]](:,:,:) </div> | |||
Line 10: | Line 14: | ||
==Conversion Tables== | ==Conversion Tables== | ||
The following tables | Starting with ROMS version 3.6, the [[Options|CPP options]] for lateral boundary conditions (user defined and internal) are deprecated and replaced with logical switches that are activated in the [[Input_Parameter_Files|standard input]] files. The following tables show the conversion from [[Options|CPP options]] to logical switches for each state variable using the [[Variables#LBC|LBC]] structure: | ||
{| id="var_tab" style="font-family: monospace" border="1" cellspacing="0" cellpadding="5" align="center" | {| id="var_tab" style="font-family: monospace" border="1" cellspacing="0" cellpadding="5" align="center" | ||
Line 79: | Line 84: | ||
|- bgcolor="#E0E0E0" | |- bgcolor="#E0E0E0" | ||
|align="right" | [[Options#EW_PERIODIC|EW_PERIODIC]] | |align="right" | [[Options#EW_PERIODIC|EW_PERIODIC]] | ||
|[[Variables#LBC|LBC]]([[Variables#iwest|iwest]], [[Variables#isFsur|isFsur]], ng) % periodic<br />[[Variables#LBC|LBC]]([[Variables#ieast|ieast]], [[Variables#isFsur|isFsur]], ng) % periodic | |[[Variables#EWperiodic|EWperiodic]](ng)<br />[[Variables#LBC|LBC]]([[Variables#iwest|iwest]], [[Variables#isFsur|isFsur]], ng) % periodic<br />[[Variables#LBC|LBC]]([[Variables#ieast|ieast]], [[Variables#isFsur|isFsur]], ng) % periodic | ||
|- bgcolor="#E0E0E0" | |- bgcolor="#E0E0E0" | ||
|align="right" | [[Options#NS_PERIODIC|NS_PERIODIC]] | |align="right" | [[Options#NS_PERIODIC|NS_PERIODIC]] | ||
|[[Variables#LBC|LBC]]([[Variables#isouth|isouth]], [[Variables#isFsur|isFsur]], ng) % periodic<br />[[Variables#LBC|LBC]]([[Variables#inorth|inorth]], [[Variables#isFsur|isFsur]], ng) % periodic | |[[Variables#NSperiodic|NSperiodic]](ng)<br />[[Variables#LBC|LBC]]([[Variables#isouth|isouth]], [[Variables#isFsur|isFsur]], ng) % periodic<br />[[Variables#LBC|LBC]]([[Variables#inorth|inorth]], [[Variables#isFsur|isFsur]], ng) % periodic | ||
|- bgcolor="white" | |- bgcolor="white" | ||
|align="right" | [[Options#WEST_FSRADIATION|WEST_FSRADIATION]] | |align="right" | [[Options#WEST_FSRADIATION|WEST_FSRADIATION]] | ||
Line 177: | Line 182: | ||
|- bgcolor="#E0E0E0" | |- bgcolor="#E0E0E0" | ||
|align="right" | [[Options#EW_PERIODIC|EW_PERIODIC]] | |align="right" | [[Options#EW_PERIODIC|EW_PERIODIC]] | ||
|[[Variables#LBC|LBC]]([[Variables#iwest|iwest]], [[Variables#isUbar|isUbar]], ng) % periodic<br />[[Variables#LBC|LBC]]([[Variables#ieast|ieast]], [[Variables#isUbar|isUbar]], ng) % periodic | |[[Variables#EWperiodic|EWperiodic]](ng)<br />[[Variables#LBC|LBC]]([[Variables#iwest|iwest]], [[Variables#isUbar|isUbar]], ng) % periodic<br />[[Variables#LBC|LBC]]([[Variables#ieast|ieast]], [[Variables#isUbar|isUbar]], ng) % periodic | ||
|- bgcolor="#E0E0E0" | |- bgcolor="#E0E0E0" | ||
|align="right" | [[Options#NS_PERIODIC|NS_PERIODIC]] | |align="right" | [[Options#NS_PERIODIC|NS_PERIODIC]] | ||
|[[Variables#LBC|LBC]]([[Variables#isouth|isouth]], [[Variables#isUbar|isUbar]], ng) % periodic<br />[[Variables#LBC|LBC]]([[Variables#inorth|inorth]], [[Variables#isUbar|isUbar]], ng) % periodic | |[[Variables#NSperiodic|NSperiodic]](ng)<br />[[Variables#LBC|LBC]]([[Variables#isouth|isouth]], [[Variables#isUbar|isUbar]], ng) % periodic<br />[[Variables#LBC|LBC]]([[Variables#inorth|inorth]], [[Variables#isUbar|isUbar]], ng) % periodic | ||
|- bgcolor="white" | |- bgcolor="white" | ||
|align="right" | [[Options#WEST_M2RADIATION|WEST_M2RADIATION]] | |align="right" | [[Options#WEST_M2RADIATION|WEST_M2RADIATION]] | ||
Line 287: | Line 292: | ||
|- bgcolor="#E0E0E0" | |- bgcolor="#E0E0E0" | ||
|align="right" | [[Options#EW_PERIODIC|EW_PERIODIC]] | |align="right" | [[Options#EW_PERIODIC|EW_PERIODIC]] | ||
|[[Variables#LBC|LBC]]([[Variables#iwest|iwest]], [[Variables#isVbar|isVbar]], ng) % periodic<br />[[Variables#LBC|LBC]]([[Variables#ieast|ieast]], [[Variables#isVbar|isVbar]], ng) % periodic | |[[Variables#EWperiodic|EWperiodic]](ng)<br />[[Variables#LBC|LBC]]([[Variables#iwest|iwest]], [[Variables#isVbar|isVbar]], ng) % periodic<br />[[Variables#LBC|LBC]]([[Variables#ieast|ieast]], [[Variables#isVbar|isVbar]], ng) % periodic | ||
|- bgcolor="#E0E0E0" | |- bgcolor="#E0E0E0" | ||
|align="right" | [[Options#NS_PERIODIC|NS_PERIODIC]] | |align="right" | [[Options#NS_PERIODIC|NS_PERIODIC]] | ||
|[[Variables#LBC|LBC]]([[Variables#isouth|isouth]], [[Variables#isVbar|isVbar]], ng) % periodic<br />[[Variables#LBC|LBC]]([[Variables#inorth|inorth]], [[Variables#isVbar|isVbar]], ng) % periodic | |[[Variables#NSperiodic|NSperiodic]](ng)<br />[[Variables#LBC|LBC]]([[Variables#isouth|isouth]], [[Variables#isVbar|isVbar]], ng) % periodic<br />[[Variables#LBC|LBC]]([[Variables#inorth|inorth]], [[Variables#isVbar|isVbar]], ng) % periodic | ||
|- bgcolor="white" | |- bgcolor="white" | ||
|align="right" | [[Options#WEST_M2RADIATION|WEST_M2RADIATION]] | |align="right" | [[Options#WEST_M2RADIATION|WEST_M2RADIATION]] | ||
Line 385: | Line 390: | ||
|- bgcolor="white" | |- bgcolor="white" | ||
|align="right" | [[Options#EW_PERIODIC|EW_PERIODIC]] | |align="right" | [[Options#EW_PERIODIC|EW_PERIODIC]] | ||
|[[Variables#LBC|LBC]]([[Variables#iwest|iwest]], [[Variables#isUvel|isUvel]], ng) % periodic<br />[[Variables#LBC|LBC]]([[Variables#ieast|ieast]], [[Variables#isUvel|isUvel]], ng) % periodic | |[[Variables#EWperiodic|EWperiodic]](ng)<br />[[Variables#LBC|LBC]]([[Variables#iwest|iwest]], [[Variables#isUvel|isUvel]], ng) % periodic<br />[[Variables#LBC|LBC]]([[Variables#ieast|ieast]], [[Variables#isUvel|isUvel]], ng) % periodic | ||
|- bgcolor="white" | |- bgcolor="white" | ||
|align="right" | [[Options#NS_PERIODIC|NS_PERIODIC]] | |align="right" | [[Options#NS_PERIODIC|NS_PERIODIC]] | ||
|[[Variables#LBC|LBC]]([[Variables#isouth|isouth]], [[Variables#isUvel|isUvel]], ng) % periodic<br />[[Variables#LBC|LBC]]([[Variables#inorth|inorth]], [[Variables#isUvel|isUvel]], ng) % periodic | |[[Variables#NSperiodic|NSperiodic]](ng)<br />[[Variables#LBC|LBC]]([[Variables#isouth|isouth]], [[Variables#isUvel|isUvel]], ng) % periodic<br />[[Variables#LBC|LBC]]([[Variables#inorth|inorth]], [[Variables#isUvel|isUvel]], ng) % periodic | ||
|- bgcolor="#E0E0E0" | |- bgcolor="#E0E0E0" | ||
|align="right" | [[Options#WEST_M3RADIATION|WEST_M3RADIATION]] | |align="right" | [[Options#WEST_M3RADIATION|WEST_M3RADIATION]] | ||
Line 471: | Line 476: | ||
|- bgcolor="white" | |- bgcolor="white" | ||
|align="right" | [[Options#EW_PERIODIC|EW_PERIODIC]] | |align="right" | [[Options#EW_PERIODIC|EW_PERIODIC]] | ||
|[[Variables#LBC|LBC]]([[Variables#iwest|iwest]], [[Variables#isVvel|isVvel]], ng) % periodic<br />[[Variables#LBC|LBC]]([[Variables#ieast|ieast]], [[Variables#isVvel|isVvel]], ng) % periodic | |[[Variables#EWperiodic|EWperiodic]](ng)<br />[[Variables#LBC|LBC]]([[Variables#iwest|iwest]], [[Variables#isVvel|isVvel]], ng) % periodic<br />[[Variables#LBC|LBC]]([[Variables#ieast|ieast]], [[Variables#isVvel|isVvel]], ng) % periodic | ||
|- bgcolor="white" | |- bgcolor="white" | ||
|align="right" | [[Options#NS_PERIODIC|NS_PERIODIC]] | |align="right" | [[Options#NS_PERIODIC|NS_PERIODIC]] | ||
|[[Variables#LBC|LBC]]([[Variables#isouth|isouth]], [[Variables#isVvel|isVvel]], ng) % periodic<br />[[Variables#LBC|LBC]]([[Variables#inorth|inorth]], [[Variables#isVvel|isVvel]], ng) % periodic | |[[Variables#NSperiodic|NSeriodic]](ng)<br />[[Variables#LBC|LBC]]([[Variables#isouth|isouth]], [[Variables#isVvel|isVvel]], ng) % periodic<br />[[Variables#LBC|LBC]]([[Variables#inorth|inorth]], [[Variables#isVvel|isVvel]], ng) % periodic | ||
|- bgcolor="#E0E0E0" | |- bgcolor="#E0E0E0" | ||
|align="right" | [[Options#WEST_M3RADIATION|WEST_M3RADIATION]] | |align="right" | [[Options#WEST_M3RADIATION|WEST_M3RADIATION]] | ||
Line 534: | Line 539: | ||
|- bgcolor="white" | |- bgcolor="white" | ||
|align="right" | [[Options#EW_PERIODIC|EW_PERIODIC]] | |align="right" | [[Options#EW_PERIODIC|EW_PERIODIC]] | ||
|[[Variables#LBC|LBC]]([[Variables#iwest|iwest]], [[Variables#isMtke|isMtke]], ng) % periodic<br />[[Variables#LBC|LBC]]([[Variables#ieast|ieast]], [[Variables#isMtke|isMtke]], ng) % periodic | |[[Variables#EWperiodic|EWperiodic]](ng)<br />[[Variables#LBC|LBC]]([[Variables#iwest|iwest]], [[Variables#isMtke|isMtke]], ng) % periodic<br />[[Variables#LBC|LBC]]([[Variables#ieast|ieast]], [[Variables#isMtke|isMtke]], ng) % periodic | ||
|- bgcolor="white" | |- bgcolor="white" | ||
|align="right" | [[Options#NS_PERIODIC|NS_PERIODIC]] | |align="right" | [[Options#NS_PERIODIC|NS_PERIODIC]] | ||
|[[Variables#LBC|LBC]]([[Variables#isouth|isouth]], [[Variables#isMtke|isMtke]], ng) % periodic<br />[[Variables#LBC|LBC]]([[Variables#inorth|inorth]], [[Variables#isFsur|isFsur]], ng) % periodic | |[[Variables#NSperiodic|NSperiodic]](ng)<br />[[Variables#LBC|LBC]]([[Variables#isouth|isouth]], [[Variables#isMtke|isMtke]], ng) % periodic<br />[[Variables#LBC|LBC]]([[Variables#inorth|inorth]], [[Variables#isFsur|isFsur]], ng) % periodic | ||
|- bgcolor="#E0E0E0" | |- bgcolor="#E0E0E0" | ||
|align="right" | [[Options#WEST_KRADIATION|WEST_KRADIATION]] | |align="right" | [[Options#WEST_KRADIATION|WEST_KRADIATION]] | ||
Line 608: | Line 613: | ||
|- bgcolor="white" | |- bgcolor="white" | ||
|align="right" | [[Options#EW_PERIODIC|EW_PERIODIC]] | |align="right" | [[Options#EW_PERIODIC|EW_PERIODIC]] | ||
|[[Variables#LBC|LBC]]([[Variables#iwest|iwest]], [[Variables#isTvar|isTvar]](:), ng) % periodic<br />[[Variables#LBC|LBC]]([[Variables#ieast|ieast]], [[Variables#isTvar|isTvar]](:), ng) % periodic | |[[Variables#EWperiodic|EWperiodic]](ng)<br />[[Variables#LBC|LBC]]([[Variables#iwest|iwest]], [[Variables#isTvar|isTvar]](:), ng) % periodic<br />[[Variables#LBC|LBC]]([[Variables#ieast|ieast]], [[Variables#isTvar|isTvar]](:), ng) % periodic | ||
|- bgcolor="white" | |- bgcolor="white" | ||
|align="right" | [[Options#NS_PERIODIC|NS_PERIODIC]] | |align="right" | [[Options#NS_PERIODIC|NS_PERIODIC]] | ||
|[[Variables#LBC|LBC]]([[Variables#isouth|isouth]], [[Variables#isTvar|isTvar]](:), ng) % periodic<br />[[Variables#LBC|LBC]]([[Variables#inorth|inorth]], [[Variables#isTvar|isTvar]](:), ng) % periodic | |[[Variables#NSperiodic|NSperiodic]](ng)<br />[[Variables#LBC|LBC]]([[Variables#isouth|isouth]], [[Variables#isTvar|isTvar]](:), ng) % periodic<br />[[Variables#LBC|LBC]]([[Variables#inorth|inorth]], [[Variables#isTvar|isTvar]](:), ng) % periodic | ||
|- bgcolor="#E0E0E0" | |- bgcolor="#E0E0E0" | ||
|align="right" | [[Options#WEST_TRADIATION|WEST_TRADIATION]] | |align="right" | [[Options#WEST_TRADIATION|WEST_TRADIATION]] |
Revision as of 17:59, 12 September 2011
The lateral boundary conditions are specified by logical switches to facilitate applications with nested grids. It also allows to set different boundary conditions between the nonlinear model and the adjoint/tangent models. In addition we can have different boundary conditions between active and passive tracers. The LBC structure is allocated as:
where 1:4 are the numbered boundary edges, nLBCvar is the number of LBC state variables, and Ngrids is the number of nested grids. The boundary order is: 1=west, 2=south, 3=east, and 4=north. That is, anticlockwise starting at the western boundary.
For example, for free-surface gradient boundary conditions we have:
LBC(ieast, isFsur, ng) % gradient
LBC(isouth, isFsur, ng) % gradient
LBC(inorth, isFsur, ng) % gradient
integer :: nLBCvar
TYPE T_LBC
logical :: acquire ! process lateral boundary data
logical :: Chapman
logical :: clamped
logical :: closed
logical :: Flather
logical :: gradient
logical :: nested
logical :: nudging
logical :: periodic
logical :: radiation
logical :: reduced
END TYPE T_LBC
TYPE (T_LBC), allocatable :: LBC(:,:,:)
TYPE (T_LBC), allocatable :: ad_LBC(:,:,:)
TYPE (T_LBC), allocatable :: tl_LBC(:,:,:)
Conversion Tables
Starting with ROMS version 3.6, the CPP options for lateral boundary conditions (user defined and internal) are deprecated and replaced with logical switches that are activated in the standard input files. The following tables show the conversion from CPP options to logical switches for each state variable using the LBC structure:
TKE mixing | |
---|---|
CPP | Logical Switch, IF (...) THEN |
WESTERN_WALL | LBC(iwest, isMtke, ng) % closed |
EASTERN_WALL | LBC(ieast, isMtke, ng) % closed |
SOUTHERN_WALL | LBC(isouth, isMtke, ng) % closed |
NORTHERN_WALL | LBC(inorth, isMtke, ng) % closed |
WEST_KGRADIENT | LBC(iwest, isMtke, ng) % gradient |
EAST_KGRADIENT | LBC(ieast, isMtke, ng) % gradient |
SOUTH_KGRADIENT | LBC(isouth, isMtke, ng) % gradient |
NORTH_KGRADIENT | LBC(inorth, isMtke, ng) % gradient |
EW_PERIODIC | EWperiodic(ng) LBC(iwest, isMtke, ng) % periodic LBC(ieast, isMtke, ng) % periodic |
NS_PERIODIC | NSperiodic(ng) LBC(isouth, isMtke, ng) % periodic LBC(inorth, isFsur, ng) % periodic |
WEST_KRADIATION | LBC(iwest, isMtke, ng) % radiation |
EAST_KRADIATION | LBC(ieast, isMtke, ng) % radiation |
SOUTH_KRADIATION | LBC(isouth, isMtke, ng) % radiation |
NORTH_KRADIATION | LBC(inorth, isMtke, ng) % radiation |