BISICLES AMR ice sheet model
0.9
|
Physical/domain initial and boundary conditions. More...
#include <MarineIBC.H>
Public Member Functions | |
MarineIBC () | |
Constructor. More... | |
virtual | ~MarineIBC () |
Destructor. More... | |
virtual void | define (const ProblemDomain &a_domain, const Real &a_dx) |
Define the object. More... | |
void | setParameters (RefCountedPtr< RealFunction< RealVect > > a_thicknessFunction, RefCountedPtr< RealFunction< RealVect > > a_bedrockFunction, const Real &a_seaLevel) |
void | setParameters (RefCountedPtr< RealFunction< RealVect > > a_thicknessFunction, Vector< RefCountedPtr< RealFunction< RealVect > > > a_bedrockFunction, const Real &a_seaLevel) |
virtual IceThicknessIBC * | new_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... | |
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 | 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 | 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 | setGeometryBCs (LevelSigmaCS &a_coords, const ProblemDomain &a_domain, const RealVect &a_dx, Real a_time, Real a_dt) |
set non-periodic geometry (thickness, topography) ghost cells More... | |
![]() | |
IceThicknessIBC () | |
Constructor. More... | |
virtual | ~IceThicknessIBC () |
Destructor. More... | |
virtual PhysIBC * | new_physIBC () |
Factory method - this object is its own factory. 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 | 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 |
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 | |
Vector< RefCountedPtr< RealFunction< RealVect > > > | m_bedrockFunction |
RefCountedPtr< RealFunction< RealVect > > | m_thicknessFunction |
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 |
Physical/domain initial and boundary conditions.
MarineIBC::MarineIBC | ( | ) |
|
virtual |
Destructor.
|
virtual |
Adjust boundary fluxes to account for artificial viscosity.
Implements IceThicknessIBC.
|
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.
|
virtual |
|
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(), LevelSigmaCS::grids(), m_bedrockFunction, m_paramsSet, m_seaLevel, LevelSigmaCS::setSeaLevel(), and LevelSigmaCS::setTopography().
|
inlinevirtual |
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
currently, dir = 0 only
Reimplemented from IceThicknessIBC.
Referenced by velocitySolveBC().
|
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_bedrockFunction, m_isBCsetUp, m_paramsSet, m_seaLevel, m_thicknessFunction, m_velBCs, and MarineIBC().
|
virtual |
Set boundary fluxes.
Implements IceThicknessIBC.
|
virtual |
set up topography, etc at regrid time
Reimplemented from IceThicknessIBC.
References LevelSigmaCS::dx(), LevelSigmaCS::getTopography(), LevelSigmaCS::grids(), m_bedrockFunction, and m_paramsSet.
|
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.
|
inline |
set boundary ice-sheet thickness
|
virtual |
set non-periodic geometry (thickness, topography) ghost cells
set non-periodic ghost cells for thickness & topography,
reflection
Reimplemented from IceThicknessIBC.
References LevelSigmaCS::getH(), LevelSigmaCS::getTopography(), and ReflectGhostCells().
void MarineIBC::setParameters | ( | RefCountedPtr< RealFunction< RealVect > > | a_thicknessFunction, |
RefCountedPtr< RealFunction< RealVect > > | a_bedrockFunction, | ||
const Real & | a_seaLevel | ||
) |
Referenced by main().
void MarineIBC::setParameters | ( | RefCountedPtr< RealFunction< RealVect > > | a_thicknessFunction, |
Vector< RefCountedPtr< RealFunction< RealVect > > > | a_bedrockFunction, | ||
const Real & | a_seaLevel | ||
) |
References m_bedrockFunction, m_paramsSet, m_seaLevel, and m_thicknessFunction.
|
virtual |
set non-periodic ghost cells for surface height z_s.
reflection
Reimplemented from IceThicknessIBC.
References ReflectGhostCells().
|
protected |
set up bc's based on parmparse inputs
References m_isBCsetUp, m_velBCs, and MarineVelBC().
Referenced by velocitySolveBC().
|
virtual |
return boundary condition for Ice velocity solve
eventually would like this to be a BCHolder
Implements IceThicknessIBC.
References LevelSigmaCS::dx(), LevelSigmaCS::getH(), LevelSigmaCS::gravity(), LevelSigmaCS::grids(), LevelSigmaCS::iceDensity(), m_isBCsetUp, m_velBCs, modifyVelocityRHS(), setupBCs(), and LevelSigmaCS::waterDensity().
|
protected |
Referenced by initializeIceGeometry(), new_thicknessIBC(), regridIceGeometry(), and setParameters().
|
protected |
|
protected |
Referenced by MarineIBC(), new_thicknessIBC(), setupBCs(), and velocitySolveBC().
|
protected |
|
protected |
Referenced by initializeIceGeometry(), MarineIBC(), new_thicknessIBC(), regridIceGeometry(), and setParameters().
|
protected |
Referenced by initializeIceGeometry(), new_thicknessIBC(), and setParameters().
|
protected |
|
protected |
ice sheet thickness (initially constant)
|
protected |
Referenced by new_thicknessIBC(), and setParameters().
|
protected |
Referenced by new_thicknessIBC(), setupBCs(), and velocitySolveBC().
|
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.