BISICLES AMR ice sheet model
0.9
|
Implemnets ConstitutiveRelation to give the effective viscosity in the L1L2 stress model. More...
#include <L1L2ConstitutiveRelation.H>
Public Member Functions | |
L1L2ConstitutiveRelation () | |
void | parseParameters () |
virtual | ~L1L2ConstitutiveRelation () |
GlensFlowRelation * | getGlensFlowRelationPtr () |
GlensFlowRelation & | getGlensFlowRelation () |
virtual Real | power () const |
virtual ConstitutiveRelation * | getNewConstitutiveRelation () const |
creates a new copy of this ConstitutiveRelation object. More... | |
virtual void | computeMu (LevelData< FArrayBox > &a_mu, const LevelData< FArrayBox > &a_vel, const Real &a_scale, const LevelData< FArrayBox > *a_crseVelPtr, int a_nRefCrse, const LevelData< FArrayBox > &a_A, const LevelSigmaCS &a_coordSys, const ProblemDomain &a_domain, const IntVect &a_ghostVect=IntVect::Zero) const |
computes cell-centered ![]() | |
virtual void | computeDissipation (LevelData< FArrayBox > &a_dissipation, const LevelData< FArrayBox > &a_vel, const LevelData< FArrayBox > *a_crseVel, int a_nRefCrse, const LevelData< FArrayBox > &a_A, const LevelSigmaCS &a_coordSys, const ProblemDomain &a_domain, const IntVect &a_ghostVect=IntVect::Zero) const |
virtual void | computeFaceMu (LevelData< FluxBox > &a_mu, LevelData< FArrayBox > &a_vel, const Real &a_scale, const LevelData< FArrayBox > *a_crseVelPtr, int nRefCrse, const LevelData< FluxBox > &a_A, const LevelSigmaCS &a_coordSys, const ProblemDomain &a_domain, const IntVect &a_ghostVect=IntVect::Zero) const |
computes face-centered ![]() | |
virtual void | modifyTransportCoefficients (const LevelData< FArrayBox > &a_cellVel, const LevelData< FArrayBox > *a_crseVelPtr, const LevelData< FArrayBox > *a_crseDiffusivityPtr, int a_nRefCrse, const LevelSigmaCS &a_coordSys, const DisjointBoxLayout &a_grids, const ProblemDomain &a_domain, const LevelData< FArrayBox > &a_A, const LevelData< FArrayBox > &a_sA, const LevelData< FArrayBox > &a_bA, LevelData< FluxBox > &a_faceVelAdvection, LevelData< FluxBox > &a_faceVelTotal, LevelData< FluxBox > &a_faceDiffusivity, LevelData< FArrayBox > &a_cellDiffusivity, LevelData< FluxBox > &a_layerXYFaceXYVel, LevelData< FArrayBox > &a_layerSFaceXYVel) const |
modify 2D thickness advection velocity and diffusion coefficients, also 3D ice velocity More... | |
void | solverTolerance (Real a_solverTol) |
sets tolerance for secant solve More... | |
![]() | |
ConstitutiveRelation () | |
virtual | ~ConstitutiveRelation () |
void | computeStrainRateInvariant (LevelData< FArrayBox > &a_epsilonSquared, const LevelData< FArrayBox > &a_velocity, const LevelData< FArrayBox > *a_crseVel, int nRefCrse, const LevelSigmaCS &a_coordSys, const IntVect &a_ghostVect=IntVect::Zero) const |
compute cell-centered strainrate invariant epsilon^2 More... | |
void | computeStrainRateInvariantFace (LevelData< FluxBox > &a_epsilonSquared, LevelData< FArrayBox > &a_velocity, const LevelData< FArrayBox > *a_crseVel, int a_nRefCrse, const LevelSigmaCS &a_coordSys, const IntVect &a_ghostVect=IntVect::Zero) const |
compute face-centered strainrate invariant epsilon^2 based on cell-centered velocity More... | |
void | computeStrainRateInvariant (LevelData< FArrayBox > &a_epsilonSquared, LevelData< FArrayBox > &a_gradVelocity, const LevelData< FArrayBox > &a_velocity, const LevelData< FArrayBox > *a_crseVel, int a_nRefCrse, const LevelSigmaCS &a_coordSys, const IntVect &a_ghostVect=IntVect::Zero) const |
compute cell-centered strainrate invariant epsilon^2 and velocity gradients. No more costly than just computing epsilon^2 More... | |
void | computeStrainRateInvariantFace (LevelData< FluxBox > &a_epsilonSquared, LevelData< FluxBox > &a_gradVelocity, LevelData< FArrayBox > &a_velocity, const LevelData< FArrayBox > *a_crseVel, int a_nRefCrse, const LevelSigmaCS &a_coordSys, const IntVect &a_ghostVect=IntVect::Zero) const |
compute face-centered strainrate invariant epsilon^2 and velocity gradients based on cell-centered velocity. No more costly than just computing epsilon^2 More... | |
Additional Inherited Members | |
![]() | |
static ConstitutiveRelation * | parse (const char *a_prefix) |
Implemnets ConstitutiveRelation to give the effective viscosity in the L1L2 stress model.
The L1L2 stress model is described by Schoof and Hindmarsh 2010.
Like GlensFlowRelation, this class computes such that (stress =
*strainrate ) assuming that
. But
\ is now found by solving a nonlinear problem
numerically for mu at each point and integrating vertically.
is the gravitaional driving stress, and its appearance means that vertical shear strains computed accoding to the shallow ice approximation are included in the effective viscosity (so that ice softens in the region of steep slopes). Although an analytic solution does exist when n = 3, it is expensive/unreliable to compute
|
inline |
References parseParameters().
Referenced by getNewConstitutiveRelation().
|
inlinevirtual |
|
virtual |
Compute a cell centred bulk dissipation (heat source) at the cell centres. This ought to have the same dependencies as cell centred mu a_dissipation –
based on the local velocity field. a_vel – Cell-centered velocity field. a_crseVel – coarse-level velocity field (for coarse-fine bc's). (NULL if no coarser level) a_nRefCrse – refinement ratio to next coarser level a_A: Cell-centered flow law coefficient (Glenn's A) field a_coordSys: SigmaCS object containing the geometry of this patch. a_box: cell-centered box over which to do this computation
Implements ConstitutiveRelation.
References computeMu(), and ConstitutiveRelation::computeStrainRateInvariant().
Referenced by power().
|
virtual |
computes face-centered based on cell-centered velocity
a_mu | face-centered mu_{AS} based on the local velocity field. |
a_vel | Cell-centered velocity field. |
a_crseVel | – coarse-level velocity field (for coarse-fine bc's). (NULL if no coarser level) |
a_nRefCrse | – refinement ratio to next coarser level |
a_A | Cell-centered flow law coefficient (Glenn's A) field |
a_coordSys | LevelSigmaCS object containing the geometry. |
a_ghostVect | how the boxes on which we want to compute mu compare with the DisjointBoxLayout. (can be negative) |
Implements ConstitutiveRelation.
References ConstitutiveRelation::computeStrainRateInvariant(), ConstitutiveRelation::computeStrainRateInvariantFace(), derivComponent(), LevelSigmaCS::getDSigma(), LevelSigmaCS::getFaceH(), LevelSigmaCS::getFaceSigma(), LevelSigmaCS::getGradSurface(), LevelSigmaCS::getGradSurfaceFace(), LevelSigmaCS::getH(), LevelSigmaCS::getSigma(), LevelSigmaCS::gravity(), LevelSigmaCS::iceDensity(), modifyTransportCoefficients(), and ReflectGhostCells().
Referenced by power().
|
virtual |
computes cell-centered based on the cell-centered velocity
a_mu | – mu_{AS} based on the local velocity field. |
a_vel | – Cell-centered velocity field. |
a_crseVel | – coarse-level velocity field (for coarse-fine bc's). (NULL if no coarser level) |
a_nRefCrse | – refinement ratio to next coarser level |
a_A | Cell-centered flow law coefficient (Glenn's A) field |
a_coordSys | LevelSigmaCS object containing the geometry. |
a_ghostVect | how the boxes on which we want to compute mu compare with the DisjointBoxLayout. (can be negative) |
Implements ConstitutiveRelation.
References LevelSigmaCS::getDSigma(), and LevelSigmaCS::getSigma().
Referenced by computeDissipation(), and power().
|
inline |
|
inline |
Referenced by getNewConstitutiveRelation().
|
virtual |
creates a new copy of this ConstitutiveRelation object.
Implements ConstitutiveRelation.
References getGlensFlowRelationPtr(), and L1L2ConstitutiveRelation().
Referenced by power().
|
virtual |
modify 2D thickness advection velocity and diffusion coefficients, also 3D ice velocity
a_cellVel | : cell-centered basal velocity field ![]() |
a_crseVelPtr | : coarser level cell-centered velocity field (NULL if no coarser level) |
a_crseVelPtr | : coarser level cell-centered diffusivity field (NULL if no coarser level) |
a_nRefCrse | : refinement ratio to next coarser level |
a_coordSys | LevelSigmaCS object containing the geometry. |
a_grids | : DisjointBoxLayout of grids for the level |
a_domain | : ProblemDomain for the level |
a_A | (x,y,sigma) cell-centered flow law coefficient (Glenn's A) field |
a_sA | (x,y) cell-centered A field at the ice surface ( ![]() |
a_bA | (x,y) cell-centered A field at the ice base ( ![]() |
faceVelAdvection | : face-centered vertically averaged advection velocity. Should contain the velocity at the ice base on entry. |
a_faceVelTotal | : face-centered vertically averaged total velocity (including diffusion). Should contain the velocity at the ice base on entry |
a_faceDiffusivity | face-centered vertically thickness diffusivity. : cell-centered vertically thickness diffusivity. |
a_layerXYFaceXYVel | : (x,y) face-centered, sigma cell-centered 3D x and y velocity |
a_layerSFaceXYVel | : (x,y) cell-centered, sigma face centered 3D x and y velocity |
References LevelSigmaCS::dx(), LevelSigmaCS::getFaceSigma(), LevelSigmaCS::getFloatingMask(), LevelSigmaCS::getH(), LevelSigmaCS::getSigma(), LevelSigmaCS::getSurfaceHeight(), LevelSigmaCS::getTopography(), LevelSigmaCS::iceDensity(), and LevelSigmaCS::waterDensity().
Referenced by computeFaceMu(), IceUtility::computeFaceVelocity(), and power().
void L1L2ConstitutiveRelation::parseParameters | ( | ) |
Referenced by L1L2ConstitutiveRelation(), and ConstitutiveRelation::parse().
|
inlinevirtual |
|
inline |
sets tolerance for secant solve