BISICLES AMR ice sheet model  0.9
Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | List of all members
VieliPayneIBC Class Reference

Physical/domain initial and boundary conditions. More...

#include <VieliPayneIBC.H>

Inheritance diagram for VieliPayneIBC:
Inheritance graph
[legend]
Collaboration diagram for VieliPayneIBC:
Collaboration graph
[legend]

Public Member Functions

 VieliPayneIBC ()
 Constructor. More...
 
virtual ~VieliPayneIBC ()
 Destructor. More...
 
virtual void define (const ProblemDomain &a_domain, const Real &a_dx)
 Define the object. More...
 
void setParameters (const Real &a_thickness, const RealVect &a_slope, const Real &a_originElevation, const Real &a_seaLevel)
 set parameters More...
 
virtual IceThicknessIBCnew_thicknessIBC ()
 Factory method - this object is its own factory. More...
 
void setBoundaryThickness (Real a_boundaryThickness)
 set boundary ice-sheet thickness More...
 
virtual void initialize (LevelData< FArrayBox > &a_U)
 Set up initial conditions. More...
 
virtual void initializeIceGeometry (LevelSigmaCS &a_coords, const RealVect &a_dx, const RealVect &a_domainSize, const Real &a_time, const LevelSigmaCS *a_crseCoords, const int a_refRatio)
 set up initial ice state More...
 
virtual void primBC (FArrayBox &a_WGdnv, const FArrayBox &a_Wextrap, const FArrayBox &a_W, const int &a_dir, const Side::LoHiSide &a_side, const Real &a_time)
 Set boundary fluxes. More...
 
virtual void setBdrySlopes (FArrayBox &a_dW, const FArrayBox &a_W, const int &a_dir, const Real &a_time)
 Set boundary slopes. More...
 
virtual void artViscBC (FArrayBox &a_F, const FArrayBox &a_U, const FArrayBox &a_divVel, const int &a_dir, const Real &a_time)
 Adjust boundary fluxes to account for artificial viscosity. More...
 
virtual RefCountedPtr< CompGridVTOBC > velocitySolveBC ()
 return boundary condition for Ice velocity solve More...
 
virtual void velocityGhostBC (LevelData< FArrayBox > &a_velocity, LevelSigmaCS &a_coords, const ProblemDomain &a_domain, Real a_time)
 fill ghost cells on velocity More...
 
virtual void modifyVelocityRHS (LevelData< FArrayBox > &a_rhs, LevelSigmaCS &a_coords, const ProblemDomain &a_domain, Real a_time, Real a_dt)
 if appropriate, modify velocity solve RHS in a problem-dependent way. More...
 
virtual void setSurfaceHeightBCs (LevelData< FArrayBox > &a_zSurface, LevelSigmaCS &a_coords, const ProblemDomain &a_domain, const RealVect &a_dx, Real a_time, Real a_dt)
 set non-periodic ghost cells for surface height z_s. More...
 
virtual void setGridHierarchy (Vector< RefCountedPtr< LevelSigmaCS > > &a_vectCS, Vector< ProblemDomain > &a_vectDomain)
 set AMR grid hierarchy (for the BC's which need this) More...
 
- Public Member Functions inherited from IceThicknessIBC
 IceThicknessIBC ()
 Constructor. More...
 
virtual ~IceThicknessIBC ()
 Destructor. More...
 
virtual PhysIBC * new_physIBC ()
 Factory method - this object is its own factory. More...
 
virtual bool regridIceGeometry (LevelSigmaCS &a_coords, const RealVect &a_dx, const RealVect &a_domainSize, const Real &a_time, const LevelSigmaCS *a_crseCoords, const int a_refRatio)
 set up topography, etc at regrid time More...
 
virtual void velocityGhostBC (LevelData< FArrayBox > &a_velocity, const LevelSigmaCS &a_coords, const ProblemDomain &a_domain, Real a_time)
 fill ghost cells on velocity More...
 
virtual void modifyFaceVelocity (LevelData< FluxBox > &a_faceVel, const LevelSigmaCS &a_coords, const ProblemDomain &a_domain) const
 if appropriate, modify face velocities in a problem-dependent way. More...
 
virtual void setGeometryBCs (LevelSigmaCS &a_coords, const ProblemDomain &a_domain, const RealVect &a_dx, Real a_time, Real a_dt)
 set non-periodic ghost cells for geometry More...
 
virtual void setIceFractionBCs (LevelData< FArrayBox > &a_iceFrac, const ProblemDomain &a_domain, const RealVect &a_dx, Real a_time, Real a_dt)
 set non-periodic ghost cells for ice fraction More...
 
virtual void checkOK () const
 

Static Public Attributes

static RealVect s_edgeThickness
 ice thickness at edge of domain for use in computing velocity Bc's More...
 

Protected Member Functions

void setupBCs ()
 set up bc's based on parmparse inputs More...
 

Protected Attributes

RealVect m_slope
 
Real m_originElevation
 
Real m_thickness
 ice sheet thickness (initially constant) More...
 
RealVect m_domainSize
 
Real m_seaLevel
 
bool m_isBCsetUp
 
bool m_paramsSet
 
RefCountedPtr< CompGridVTOBC > m_velBCs
 
RefCountedPtr< VieliPayneBCFunctionm_BCfunction
 

Detailed Description

Physical/domain initial and boundary conditions.

Constructor & Destructor Documentation

◆ VieliPayneIBC()

VieliPayneIBC::VieliPayneIBC ( )

Constructor.

References m_isBCsetUp, and m_paramsSet.

Referenced by new_thicknessIBC().

◆ ~VieliPayneIBC()

VieliPayneIBC::~VieliPayneIBC ( )
virtual

Destructor.

Member Function Documentation

◆ artViscBC()

void VieliPayneIBC::artViscBC ( FArrayBox &  a_F,
const FArrayBox &  a_U,
const FArrayBox &  a_divVel,
const int &  a_dir,
const Real &  a_time 
)
virtual

Adjust boundary fluxes to account for artificial viscosity.

Implements IceThicknessIBC.

◆ define()

void VieliPayneIBC::define ( const ProblemDomain &  a_domain,
const Real &  a_dx 
)
virtual

Define the object.

Set the problem domain index space and the grid spacing for this initial and boundary condition object.

Set the problem domain index space and the grid spacing for this initial and boundary condition object. Just calls base-class define

Reimplemented from IceThicknessIBC.

Referenced by VieliPayneBCFunction::VieliPayneBCFunction().

◆ initialize()

void VieliPayneIBC::initialize ( LevelData< FArrayBox > &  a_U)
virtual

Set up initial conditions.

shouldn't be here...

Implements IceThicknessIBC.

◆ initializeIceGeometry()

void VieliPayneIBC::initializeIceGeometry ( LevelSigmaCS a_coords,
const RealVect &  a_dx,
const RealVect &  a_domainSize,
const Real &  a_time,
const LevelSigmaCS a_crseCoords,
const int  a_refRatio 
)
virtual

set up initial ice state

reads info from ParmParse and sets up ice sheet geometry

Implements IceThicknessIBC.

References LevelSigmaCS::dx(), LevelSigmaCS::getH(), LevelSigmaCS::getTopography(), m_originElevation, m_paramsSet, m_seaLevel, m_slope, m_thickness, LevelSigmaCS::setSeaLevel(), and LevelSigmaCS::setTopography().

◆ modifyVelocityRHS()

void VieliPayneIBC::modifyVelocityRHS ( LevelData< FArrayBox > &  a_rhs,
LevelSigmaCS a_coords,
const ProblemDomain &  a_domain,
Real  a_time,
Real  a_dt 
)
virtual

if appropriate, modify velocity solve RHS in a problem-dependent way.

In this case, what's done is to set the boundary thickness for use in computing the inhomogeneous form of the velocity BC. (actual RHS is left unmodified, which suggests that maybe this function should really be called something else...)

add a momemtum source s[dir] = 1/Dx * 0.5 * ri/rw * (ri - rw) * g * H^2 to the rhs[dir] at the high dir boundary (1D or 2D cases), or s[dir] = - 1/Dx * ri/rw * (ri - rw) * g * H (3D case) , which is equvalent to setting the momentum flux through the surface (with unit normal n) T.n n = s n

Reimplemented from IceThicknessIBC.

References LevelSigmaCS::dx(), LevelSigmaCS::getH(), LevelSigmaCS::gravity(), LevelSigmaCS::iceDensity(), and LevelSigmaCS::waterDensity().

◆ new_thicknessIBC()

IceThicknessIBC * VieliPayneIBC::new_thicknessIBC ( )
virtual

Factory method - this object is its own factory.

Return a pointer to a new IceThicknessIBC object with m_isDefined = false (i.e., its define() must be called before it is used).

Return a pointer to a new PhysIBC object with m_isDefined = false (i.e., its define() must be called before it is used).

Implements IceThicknessIBC.

References m_isBCsetUp, m_originElevation, m_paramsSet, m_seaLevel, m_slope, m_thickness, m_velBCs, and VieliPayneIBC().

◆ primBC()

void VieliPayneIBC::primBC ( FArrayBox &  a_WGdnv,
const FArrayBox &  a_Wextrap,
const FArrayBox &  a_W,
const int &  a_dir,
const Side::LoHiSide &  a_side,
const Real &  a_time 
)
virtual

Set boundary fluxes.

Implements IceThicknessIBC.

◆ setBdrySlopes()

void VieliPayneIBC::setBdrySlopes ( FArrayBox &  a_dW,
const FArrayBox &  a_W,
const int &  a_dir,
const Real &  a_time 
)
virtual

Set boundary slopes.

The boundary slopes in a_dW are already set to one sided difference approximations. If this function doesn't change them they will be used for the slopes at the boundaries.

Implements IceThicknessIBC.

◆ setBoundaryThickness()

void VieliPayneIBC::setBoundaryThickness ( Real  a_boundaryThickness)
inline

set boundary ice-sheet thickness

◆ setGridHierarchy()

void VieliPayneIBC::setGridHierarchy ( Vector< RefCountedPtr< LevelSigmaCS > > &  a_vectCS,
Vector< ProblemDomain > &  a_vectDomain 
)
virtual

set AMR grid hierarchy (for the BC's which need this)

Reimplemented from IceThicknessIBC.

References m_BCfunction, m_isBCsetUp, and setupBCs().

◆ setParameters()

void VieliPayneIBC::setParameters ( const Real &  a_thickness,
const RealVect &  a_slope,
const Real &  a_originElevation,
const Real &  a_seaLevel 
)

set parameters

References m_originElevation, m_paramsSet, m_seaLevel, m_slope, and m_thickness.

Referenced by main().

◆ setSurfaceHeightBCs()

void VieliPayneIBC::setSurfaceHeightBCs ( LevelData< FArrayBox > &  a_zSurface,
LevelSigmaCS a_coords,
const ProblemDomain &  a_domain,
const RealVect &  a_dx,
Real  a_time,
Real  a_dt 
)
virtual

set non-periodic ghost cells for surface height z_s.

use linear extrapolation

use linear extrapolation (corresponds to one-sided differencing)

Reimplemented from IceThicknessIBC.

◆ setupBCs()

void VieliPayneIBC::setupBCs ( )
protected

set up bc's based on parmparse inputs

References m_BCfunction, m_isBCsetUp, and m_velBCs.

Referenced by setGridHierarchy(), and velocitySolveBC().

◆ velocityGhostBC()

void VieliPayneIBC::velocityGhostBC ( LevelData< FArrayBox > &  a_velocity,
LevelSigmaCS a_coords,
const ProblemDomain &  a_domain,
Real  a_time 
)
virtual

fill ghost cells on velocity

References LevelSigmaCS::dx(), and zeroBCValueVP().

◆ velocitySolveBC()

RefCountedPtr< CompGridVTOBC > VieliPayneIBC::velocitySolveBC ( )
virtual

return boundary condition for Ice velocity solve

eventually would like this to be a BCHolder

Implements IceThicknessIBC.

References m_isBCsetUp, m_velBCs, and setupBCs().

Member Data Documentation

◆ m_BCfunction

RefCountedPtr<VieliPayneBCFunction> VieliPayneIBC::m_BCfunction
protected

Referenced by setGridHierarchy(), and setupBCs().

◆ m_domainSize

RealVect VieliPayneIBC::m_domainSize
protected

◆ m_isBCsetUp

bool VieliPayneIBC::m_isBCsetUp
protected

◆ m_originElevation

Real VieliPayneIBC::m_originElevation
protected

◆ m_paramsSet

bool VieliPayneIBC::m_paramsSet
protected

◆ m_seaLevel

Real VieliPayneIBC::m_seaLevel
protected

◆ m_slope

RealVect VieliPayneIBC::m_slope
protected

◆ m_thickness

Real VieliPayneIBC::m_thickness
protected

ice sheet thickness (initially constant)

Referenced by initializeIceGeometry(), new_thicknessIBC(), and setParameters().

◆ m_velBCs

RefCountedPtr<CompGridVTOBC> VieliPayneIBC::m_velBCs
protected

◆ s_edgeThickness

RealVect VieliPayneIBC::s_edgeThickness
static

ice thickness at edge of domain for use in computing velocity Bc's

this is an initial hack intended to get things up and running, and assumes that thickness is constant along the front... This is public so that the BCFunc can access it.

Referenced by zeroBCValueVP().


The documentation for this class was generated from the following files: