Boundary Conditions

Boundary conditions for TMI.

TMI.getboundaryconditionFunction

Get boundary condition by extracting from N-dimensional tracer and returning (N-1)-dimensional array

source

function getboundarycondition(field::Field,dim,dimval)::BoundaryCondition Get boundary condition by extracting from Field (i.e., 3D tracer)

Arguments

  • field::Field: 3D tracer field with metadata and grid
  • dim: dimension number (1,2,3) that the boundary plane has constant value
  • dimval: index number in dimension dim that defines boundary plane

Output

  • b::BoundaryCondition: boundary condition on a plane with metadata and grid
source
TMI.zerosurfaceboundaryFunction

zerosurfaceboundary(γ::Grid,name=:none,longname="unknown",units="unknown") = zeros(3,surfaceindex(γ),γ,name,longname,units)::BoundaryCondition

source
TMI.zeronorthboundaryFunction

zeronorthboundary(γ,name=:none,longname="unknown",units="unknown") = zeros(2,northindex(γ),γ,name,longname,units)::BoundaryCondition

source
TMI.zeroeastboundaryFunction

zeroeastboundary(γ,name=:none,longname="unknown",units="unknown") = zeros(1,eastindex(γ),γ,name,longname,units)::BoundaryCondition

source
TMI.zerosouthboundaryFunction

zerosouthboundary(γ,name=:none,longname="unknown",units="unknown") = zeros(2,southindex(γ),γ,name,longname,units)::BoundaryCondition

source
TMI.zerowestboundaryFunction

zerowestboundary(γ,name=:none,longname="unknown",units="unknown") = zeros(1,westindex(γ),γ,name,longname,units)::BoundaryCondition

source
TMI.onesurfaceboundaryFunction

onesurfaceboundary(γ,name=:none,longname="unknown",units="unknown") = ones(3,surfaceindex(γ),γ,name,longname,units)::BoundaryCondition

source
TMI.geteastboundaryFunction

geteastboundary(c::Field) = getboundarycondition(c,1,eastindex(c.γ))::BoundaryCondition

source
TMI.getwestboundaryFunction

getwestboundary(c::Field) = getboundarycondition(c,1,westindex(c.γ))::BoundaryCondition

source
TMI.setboundarycondition!Function
function setboundarycondition!(d::Field,b::BoundaryCondition)
apply boundary condition to the equation constraints

Arguments

  • d::Field, equation constraints (i.e., right hand side)
  • b::BoundaryCondition
source
function setboundarycondition!(d::Field{T},b::NamedTuple{<:Any, NTuple{N,BoundaryCondition{T}}}) where {N, T <: Real}

set all boundary conditions in a Named Tuple
source
TMI.gsetboundaryconditionFunction
function gsetboundarycondition(gd::Field{T},b::BoundaryCondition{T}) where T<: Real

ADJOINT: apply boundary condition to the equation constraints

Arguments

  • d::Field, equation constraints (i.e., right hand side)
  • b::BoundaryCondition
source
function gsetboundarycondition(gd::Field{T},b::BoundaryCondition{T}) where T<: Real

ADJOINT: apply boundary condition to the equation constraints

Arguments

  • d::Field, equation constraints (i.e., right hand side)
  • b::BoundaryCondition
source
TMI.adjustboundarycondition!Function
function adjustboundarycondition!(b::Union{BoundaryCondition,NamedTuple},u::Union{BoundaryCondition,NamedTuple})

adjust all boundary conditions b that are described in u

warning: if u doesn't contain any boundary condition adjustments,
nothing will change.
source
TMI.gadjustboundarycondition!Function
function gadjustboundarycondition!(b::BoundaryCondition{T},u::BoundaryCondition{T}) where T <: Real

adjust the (one) boundary condition 
Just copy the variable.
Keep this function so that calling functions can look alike.
Could probably combine with lower function, use Union type
source