BISICLES AMR ice sheet model  0.9
Public Member Functions | List of all members
IceThicknessIBC Class Referenceabstract

Physical/domain initial and boundary conditions for ice-sheet problems. More...

#include <IceThicknessIBC.H>

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

Public Member Functions

 IceThicknessIBC ()
 Constructor. More...
 
virtual ~IceThicknessIBC ()
 Destructor. More...
 
virtual void define (const ProblemDomain &a_domain, const Real &a_dx)
 Define the object. More...
 
virtual PhysIBC * new_physIBC ()
 Factory method - this object is its own factory. More...
 
virtual IceThicknessIBCnew_thicknessIBC ()=0
 same as new_physIBC, except pointer cast to an IceThicknessIBC More...
 
virtual void initialize (LevelData< FArrayBox > &a_U)=0
 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)=0
 set up initial ice state 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 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)=0
 Set boundary fluxes. More...
 
virtual void setBdrySlopes (FArrayBox &a_dW, const FArrayBox &a_W, const int &a_dir, const Real &a_time)=0
 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)=0
 Adjust boundary fluxes to account for artificial viscosity. More...
 
virtual RefCountedPtr< CompGridVTOBC > velocitySolveBC ()=0
 return boundary condition for Ice velocity solve 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 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 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 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 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 setGridHierarchy (Vector< RefCountedPtr< LevelSigmaCS > > &a_vectCS, Vector< ProblemDomain > &a_vectDomain)
 set AMR grid hierarchy (for the BC's which need this) More...
 
virtual void checkOK () const
 

Detailed Description

Physical/domain initial and boundary conditions for ice-sheet problems.

Virtual base class through which a user specifies the initial and boundary conditions for an ice sheet. Derived from PhysIBC, adds functions for initializing SigmaCS.

Constructor & Destructor Documentation

◆ IceThicknessIBC()

IceThicknessIBC::IceThicknessIBC ( )
inline

Constructor.

◆ ~IceThicknessIBC()

virtual IceThicknessIBC::~IceThicknessIBC ( )
inlinevirtual

Destructor.

Member Function Documentation

◆ artViscBC()

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

Adjust boundary fluxes to account for artificial viscosity.

Implemented in MarineIBC, FortranInterfaceIBC, PythonInterface::PythonIBC, VieliPayneIBC, LevelDataIBC, HumpIBC, BasicThicknessIBC, and MultiLevelDataIBC.

◆ checkOK()

virtual void IceThicknessIBC::checkOK ( ) const
inlinevirtual

Reimplemented in FortranInterfaceIBC.

References IceBCFuncWrapper::operator=().

◆ define()

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

Define the object.

Set the problem domain index space and the grid spacing for this initial and boundary condition object. Default is to just call PhysIBC::define

Reimplemented in MarineIBC, PythonInterface::PythonIBC, VieliPayneIBC, LevelDataIBC, FortranInterfaceIBC, BasicThicknessIBC, HumpIBC, and MultiLevelDataIBC.

Referenced by AmrIce::initData().

◆ initialize()

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

◆ initializeIceGeometry()

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

◆ modifyFaceVelocity()

virtual void IceThicknessIBC::modifyFaceVelocity ( LevelData< FluxBox > &  a_faceVel,
const LevelSigmaCS a_coords,
const ProblemDomain &  a_domain 
) const
inlinevirtual

if appropriate, modify face velocities in a problem-dependent way.

default is to do nothing

Reimplemented in PythonInterface::PythonIBC.

Referenced by IceUtility::computeFaceVelocity().

◆ modifyVelocityRHS()

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

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

default is to do nothing

Reimplemented in MarineIBC, VieliPayneIBC, PythonInterface::PythonIBC, LevelDataIBC, HumpIBC, and MultiLevelDataIBC.

Referenced by AmrIce::defineVelRHS().

◆ new_physIBC()

virtual PhysIBC* IceThicknessIBC::new_physIBC ( )
inlinevirtual

Factory method - this object is its own factory.

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

◆ new_thicknessIBC()

virtual IceThicknessIBC* IceThicknessIBC::new_thicknessIBC ( )
pure virtual

◆ primBC()

virtual void IceThicknessIBC::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 
)
pure virtual

◆ regridIceGeometry()

virtual bool IceThicknessIBC::regridIceGeometry ( LevelSigmaCS a_coords,
const RealVect &  a_dx,
const RealVect &  a_domainSize,
const Real &  a_time,
const LevelSigmaCS a_crseCoords,
const int  a_refRatio 
)
inlinevirtual

set up topography, etc at regrid time

Reimplemented in MarineIBC, FortranInterfaceIBC, PythonInterface::PythonIBC, LevelDataIBC, and MultiLevelDataIBC.

Referenced by AmrIce::regrid().

◆ setBdrySlopes()

virtual void IceThicknessIBC::setBdrySlopes ( FArrayBox &  a_dW,
const FArrayBox &  a_W,
const int &  a_dir,
const Real &  a_time 
)
pure 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.

Implemented in MarineIBC, FortranInterfaceIBC, PythonInterface::PythonIBC, VieliPayneIBC, LevelDataIBC, HumpIBC, BasicThicknessIBC, and MultiLevelDataIBC.

◆ setGeometryBCs()

virtual void IceThicknessIBC::setGeometryBCs ( LevelSigmaCS a_coords,
const ProblemDomain &  a_domain,
const RealVect &  a_dx,
Real  a_time,
Real  a_dt 
)
inlinevirtual

set non-periodic ghost cells for geometry

Default is to do nothing note that we pass in ProblemDomain and dx

Reimplemented in MarineIBC, FortranInterfaceIBC, PythonInterface::PythonIBC, LevelDataIBC, and MultiLevelDataIBC.

Referenced by AmrIce::incrementIceThickness(), main(), AmrIce::regrid(), and AmrIce::updateGeometry().

◆ setGridHierarchy()

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

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

Reimplemented in VieliPayneIBC.

Referenced by AmrIce::defineSolver().

◆ setIceFractionBCs()

virtual void IceThicknessIBC::setIceFractionBCs ( LevelData< FArrayBox > &  a_iceFrac,
const ProblemDomain &  a_domain,
const RealVect &  a_dx,
Real  a_time,
Real  a_dt 
)
inlinevirtual

set non-periodic ghost cells for ice fraction

Default is to do nothing note that we pass in ProblemDomain and dx

Reimplemented in PythonInterface::PythonIBC.

Referenced by AmrIce::advectIceFrac(), and AmrIce::updateInvalidIceFrac().

◆ setSurfaceHeightBCs()

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

set non-periodic ghost cells for surface height z_s.

Default is to do nothing note that we pass in ProblemDomain and dx

Reimplemented in MarineIBC, FortranInterfaceIBC, PythonInterface::PythonIBC, VieliPayneIBC, LevelDataIBC, HumpIBC, and MultiLevelDataIBC.

◆ velocityGhostBC()

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

fill ghost cells on velocity

this is a separate function from the BCFunction returned by the velocitySolveBC function to take into account the case where the boundary condition used in the solve is different from the one used when working with the velocity. One example of this is the case where we incorporate the normal-stress boundary condition into the RHS for the velocity solve; in that case, the BCFunction will be a homogeneous BC. However we want to use the non-homogeneous form of the BC's when we do things like compute derivatives of the velocity at physical domain boundaries (say, for example, when computing the strain invariant in order to compute the viscosity). This function fills ghost cells on the boundary in the generic case. Default implementation simply calls the BCFunction implementation...

References LevelSigmaCS::dx().

Referenced by AmrIce::advectIceFrac(), FASIceViscouseTensorOp::computeMu(), PetscIceSolver::computeMu(), AmrIce::regrid(), IceNonlinearViscousTensor::setState(), and AmrIce::solveVelocityField().

◆ velocitySolveBC()

virtual RefCountedPtr<CompGridVTOBC> IceThicknessIBC::velocitySolveBC ( )
pure virtual

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