Lateral Boundary Conditions

From WikiROMS
Jump to navigationJump to search
Lateral Boundary Conditions

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. For example, for free-surface gradient boundary conditions we have:

LBC(iwest, isFsur, ng) % gradient
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(:,:,:)



Changes

Conversion from CPP options to logical switches for free-surface:

CPP Logical Switch, IF (...) THEN
WEST_FSCHAPMAN LBC(iwest,  isFsur, ng) % Chapman
EAST_FSCHAPMAN LBC(ieast,  isFsur, ng) % Chapman
SOUTH_FSCHAPMAN LBC(isouth, isFsur, ng) % Chapman
NORTH_FSCHAPMAN LBC(inorth, isFsur, ng) % Chapman
WEST_FSCLAMPED LBC(iwest,  isFsur, ng) % clamped
EAST_FSCLAMPED LBC(ieast,  isFsur, ng) % clamped
SOUTH_FSCLAMPED LBC(isouth, isFsur, ng) % clamped
NORTH_FSCLAMPED LBC(inorth, isFsur, ng) % clamped
WESTERN_WALL LBC(iwest,  isFsur, ng) % closed
EASTERN_WALL LBC(ieast,  isFsur, ng) % closed
SOUTHERN_WALL LBC(isouth, isFsur, ng) % closed
NORTHERN_WALL LBC(inorth, isFsur, ng) % closed
WEST_FSGRADIENT LBC(iwest,  isFsur, ng) % gradient
EAST_FSGRADIENT LBC(ieast,  isFsur, ng) % gradient
SOUTH_FSGRADIENT LBC(isouth, isFsur, ng) % gradient
NORTH_FSGRADIENT LBC(inorth, isFsur, ng) % gradient
WEST_FSNUDGING LBC(iwest,  isFsur, ng) % nudging
EAST_FSNUDGING LBC(ieast,  isFsur, ng) % nudging
SOUTH_FSNUDGING LBC(isouth, isFsur, ng) % nudging
NORTH_FSNUDGING LBC(inorth, isFsur, ng) % nudging
EW_PERIODIC LBC(iwest,  isFsur, ng) % periodic
LBC(ieast,  isFsur, ng) % periodic
NS_PERIODIC LBC(isouth, isFsur, ng) % periodic
LBC(inorth, isFsur, ng) % periodic
WEST_FSRADIATION LBC(iwest,  isFsur, ng) % radiation
EAST_FSRADIATION LBC(ieast,  isFsur, ng) % radiation
SOUTH_FSRADIATION LBC(isouth, isFsur, ng) % radiation
NORTH_FSRADIATION LBC(inorth, isFsur, ng) % radiation


Conversion from CPP options to logical switches for 2D U-momentum:

CPP Logical Switch, IF (...) THEN
WEST_M2CLAMPED LBC(iwest,  isUbar, ng) % clamped
EAST_M2CLAMPED LBC(ieast,  isUbar, ng) % clamped
SOUTH_M2CLAMPED LBC(isouth, isUbar, ng) % clamped
NORTH_M2CLAMPED LBC(inorth, isUbar, ng) % clamped
WESTERN_WALL LBC(iwest,  isUbar, ng) % closed
EASTERN_WALL LBC(ieast,  isUbar, ng) % closed
SOUTHERN_WALL LBC(isouth, isUbar, ng) % closed
NORTHERN_WALL LBC(inorth, isUbar, ng) % closed
WEST_M2FLATHER LBC(iwest,  isUbar, ng) % Flather
EAST_M2FLATHER LBC(ieast,  isUbar, ng) % Flather
SOUTH_M2FLATHER LBC(isouth, isUbar, ng) % Flather
NORTH_M2FLATHER LBC(inorth, isUbar, ng) % Flather
WEST_M2GRADIENT LBC(iwest,  isUbar, ng) % gradient
EAST_M2GRADIENT LBC(ieast,  isUbar, ng) % gradient
SOUTH_M2GRADIENT LBC(isouth, isUbar, ng) % gradient
NORTH_M2GRADIENT LBC(inorth, isUbar, ng) % gradient
WEST_M2NUDGING LBC(iwest,  isUbar, ng) % nudging
EAST_M2NUDGING LBC(ieast,  isUbar, ng) % nudging
SOUTH_M2NUDGING LBC(isouth, isUbar, ng) % nudging
NORTH_M2NUDGING LBC(inorth, isUbar, ng) % nudging
EW_PERIODIC LBC(iwest,  isUbar, ng) % periodic
LBC(ieast,  isUbar, ng) % periodic
NS_PERIODIC LBC(isouth, isUbar, ng) % periodic
LBC(inorth, isUbar, ng) % periodic
WEST_M2RADIATION LBC(iwest,  isUbar, ng) % radiation
EAST_M2RADIATION LBC(ieast,  isUbar, ng) % radiation
SOUTH_M2RADIATION LBC(isouth, isUbar, ng) % radiation
NORTH_M2RADIATION LBC(inorth, isUbar, ng) % radiation
WEST_M2REDUCED LBC(iwest,  isUbar, ng) % reduced
EAST_M2REDUCED LBC(ieast,  isUbar, ng) % reduced
SOUTH_M2REDUCED LBC(isouth, isUbar, ng) % reduced
NORTH_M2REDUCED LBC(inorth, isUbar, ng) % reduced


Conversion from CPP options to logical switches for 2D V-momentum:

CPP Logical Switch, IF (...) THEN
WEST_M2CLAMPED LBC(iwest,  isVbar, ng) % clamped
EAST_M2CLAMPED LBC(ieast,  isVbar, ng) % clamped
SOUTH_M2CLAMPED LBC(isouth, isVbar, ng) % clamped
NORTH_M2CLAMPED LBC(inorth, isVbar, ng) % clamped
WESTERN_WALL LBC(iwest,  isVbar, ng) % closed
EASTERN_WALL LBC(ieast,  isVbar, ng) % closed
SOUTHERN_WALL LBC(isouth, isVbar, ng) % closed
NORTHERN_WALL LBC(inorth, isVbar, ng) % closed
WEST_M2FLATHER LBC(iwest,  isVbar, ng) % Flather
EAST_M2FLATHER LBC(ieast,  isVbar, ng) % Flather
SOUTH_M2FLATHER LBC(isouth, isVbar, ng) % Flather
NORTH_M2FLATHER LBC(inorth, isVbar, ng) % Flather
WEST_M2GRADIENT LBC(iwest,  isVbar, ng) % gradient
EAST_M2GRADIENT LBC(ieast,  isVbar, ng) % gradient
SOUTH_M2GRADIENT LBC(isouth, isVbar, ng) % gradient
NORTH_M2GRADIENT LBC(inorth, isVbar, ng) % gradient
WEST_M2NUDGING LBC(iwest,  isVbar, ng) % nudging
EAST_M2NUDGING LBC(ieast,  isVbar, ng) % nudging
SOUTH_M2NUDGING LBC(isouth, isVbar, ng) % nudging
NORTH_M2NUDGING LBC(inorth, isVbar, ng) % nudging
EW_PERIODIC LBC(iwest,  isVbar, ng) % periodic
LBC(ieast,  isVbar, ng) % periodic
NS_PERIODIC LBC(isouth, isVbar, ng) % periodic
LBC(inorth, isVbar, ng) % periodic
WEST_M2RADIATION LBC(iwest,  isVbar, ng) % radiation
EAST_M2RADIATION LBC(ieast,  isVbar, ng) % radiation
SOUTH_M2RADIATION LBC(isouth, isVbar, ng) % radiation
NORTH_M2RADIATION LBC(inorth, isVbar, ng) % radiation
WEST_M2REDUCED LBC(iwest,  isVbar, ng) % reduced
EAST_M2REDUCED LBC(ieast,  isVbar, ng) % reduced
SOUTH_M2REDUCED LBC(isouth, isVbar, ng) % reduced
NORTH_M2REDUCED LBC(inorth, isVbar, ng) % reduced


Conversion from CPP options to logical switches for 3D U-momentum:

CPP Logical Switch, IF (...) THEN
WEST_M3CLAMPED LBC(iwest,  isUvel, ng) % clamped
EAST_M3CLAMPED LBC(ieast,  isUvel, ng) % clamped
SOUTH_M3CLAMPED LBC(isouth, isUvel, ng) % clamped
NORTH_M3CLAMPED LBC(inorth, isUvel, ng) % clamped
WESTERN_WALL LBC(iwest,  isUvel, ng) % closed
EASTERN_WALL LBC(ieast,  isUvel, ng) % closed
SOUTHERN_WALL LBC(isouth, isUvel, ng) % closed
NORTHERN_WALL LBC(inorth, isUvel, ng) % closed
WEST_M3GRADIENT LBC(iwest,  isUvel, ng) % gradient
EAST_M3GRADIENT LBC(ieast,  isUvel, ng) % gradient
SOUTH_M3GRADIENT LBC(isouth, isUvel, ng) % gradient
NORTH_M3GRADIENT LBC(inorth, isUvel, ng) % gradient
WEST_M3NUDGING LBC(iwest,  isUvel, ng) % nudging
EAST_M3NUDGING LBC(ieast,  isUvel, ng) % nudging
SOUTH_M3NUDGING LBC(isouth, isUvel, ng) % nudging
NORTH_M3NUDGING LBC(inorth, isUvel, ng) % nudging
EW_PERIODIC LBC(iwest,  isUvel, ng) % periodic
LBC(ieast,  isUvel, ng) % periodic
NS_PERIODIC LBC(isouth, isUvel, ng) % periodic
LBC(inorth, isUvel, ng) % periodic
WEST_M3RADIATION LBC(iwest,  isUvel, ng) % radiation
EAST_M3RADIATION LBC(ieast,  isUvel, ng) % radiation
SOUTH_M3RADIATION LBC(isouth, isUvel, ng) % radiation
NORTH_M3RADIATION LBC(inorth, isUvel, ng) % radiation


Conversion from CPP options to logical switches for 3D V-momentum:

CPP Logical Switch, IF (...) THEN
WEST_M3CLAMPED LBC(iwest,  isVvel, ng) % clamped
EAST_M3CLAMPED LBC(ieast,  isVvel, ng) % clamped
SOUTH_M3CLAMPED LBC(isouth, isVvel, ng) % clamped
NORTH_M3CLAMPED LBC(inorth, isVvel, ng) % clamped
WESTERN_WALL LBC(iwest,  isVvel, ng) % closed
EASTERN_WALL LBC(ieast,  isVvel, ng) % closed
SOUTHERN_WALL LBC(isouth, isVvel, ng) % closed
NORTHERN_WALL LBC(inorth, isVvel, ng) % closed
WEST_M3GRADIENT LBC(iwest,  isVvel, ng) % gradient
EAST_M3GRADIENT LBC(ieast,  isVvel, ng) % gradient
SOUTH_M3GRADIENT LBC(isouth, isVvel, ng) % gradient
NORTH_M3GRADIENT LBC(inorth, isVvel, ng) % gradient
WEST_M3NUDGING LBC(iwest,  isVvel, ng) % nudging
EAST_M3NUDGING LBC(ieast,  isVvel, ng) % nudging
SOUTH_M3NUDGING LBC(isouth, isVvel, ng) % nudging
NORTH_M3NUDGING LBC(inorth, isVvel, ng) % nudging
EW_PERIODIC LBC(iwest,  isVvel, ng) % periodic
LBC(ieast,  isVvel, ng) % periodic
NS_PERIODIC LBC(isouth, isVvel, ng) % periodic
LBC(inorth, isVvel, ng) % periodic
WEST_M3RADIATION LBC(iwest,  isVvel, ng) % radiation
EAST_M3RADIATION LBC(ieast,  isVvel, ng) % radiation
SOUTH_M3RADIATION LBC(isouth, isVvel, ng) % radiation
NORTH_M3RADIATION LBC(inorth, isVvel, ng) % radiation


Conversion from CPP options to logical switches for 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 LBC(iwest,  isMtke, ng) % periodic
LBC(ieast,  isMtke, ng) % periodic
NS_PERIODIC 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


Conversion from CPP options to logical switches for tracers:

CPP Logical Switch, IF (...) THEN
WEST_TCLAMPED LBC(iwest,  isTvar(:), ng) % clamped
EAST_TCLAMPED LBC(ieast,  isTvar(:), ng) % clamped
SOUTH_TCLAMPED LBC(isouth, isTvar(:), ng) % clamped
NORTH_TCLAMPED LBC(inorth, isTvar(:), ng) % clamped
WESTERN_WALL LBC(iwest,  isTvar(:), ng) % closed
EASTERN_WALL LBC(ieast,  isTvar(:), ng) % closed
SOUTHERN_WALL LBC(isouth, isTvar(:), ng) % closed
NORTHERN_WALL LBC(inorth, isTvar(:), ng) % closed
WEST_TGRADIENT LBC(iwest,  isTvar(:), ng) % gradient
EAST_TGRADIENT LBC(ieast,  isTvar(:), ng) % gradient
SOUTH_TGRADIENT LBC(isouth, isTvar(:), ng) % gradient
NORTH_TGRADIENT LBC(inorth, isTvar(:), ng) % gradient
WEST_TNUDGING LBC(iwest,  isTvar(:), ng) % nudging
EAST_TNUDGING LBC(ieast,  isTvar(:), ng) % nudging
SOUTH_TNUDGING LBC(isouth, isTvar(:), ng) % nudging
NORTH_TNUDGING LBC(inorth, isTvar(:), ng) % nudging
EW_PERIODIC LBC(iwest,  isTvar(:), ng) % periodic
LBC(ieast,  isTvar(:), ng) % periodic
NS_PERIODIC LBC(isouth, isTvar(:), ng) % periodic
LBC(inorth, isTvar(:), ng) % periodic
WEST_TRADIATION LBC(iwest,  isTvar(:), ng) % radiation
EAST_TRADIATION LBC(ieast,  isTvar(:), ng) % radiation
SOUTH_TRADIATION LBC(isouth, isTvar(:), ng) % radiation
NORTH_TRADIATION LBC(inorth, isTvar(:), ng) % radiation