11 #ifndef _CONSTITUTIVERELATION_H_ 12 #define _CONSTITUTIVERELATION_H_ 14 #include "LevelData.H" 15 #include "FArrayBox.H" 18 #include "CellToEdge.H" 19 #include "NamespaceHeader.H" 58 virtual void computeMu(LevelData<FArrayBox>& a_mu,
59 const LevelData<FArrayBox>& a_vel,
const Real& a_scale,
60 const LevelData<FArrayBox>* a_crseVel,
62 const LevelData<FArrayBox>& a_A,
64 const ProblemDomain& a_domain,
65 const IntVect& a_ghostVect = IntVect::Zero)
const = 0;
83 const LevelData<FArrayBox>& a_cellVel,
84 const LevelData<FArrayBox>* a_crseVel,
86 const LevelData<FArrayBox>& a_A,
88 const ProblemDomain& a_domain,
89 const IntVect& a_ghostVect = IntVect::Zero)
const = 0;
105 LevelData<FArrayBox>& a_vel,
const Real& a_scale,
106 const LevelData<FArrayBox>* a_crseVel,
108 const LevelData<FluxBox>& a_A,
110 const ProblemDomain& a_domain,
111 const IntVect& a_ghostVect = IntVect::Zero)
const = 0;
119 const LevelData<FArrayBox>& a_velocity,
120 const LevelData<FArrayBox>* a_crseVel,
123 const IntVect& a_ghostVect = IntVect::Zero)
const;
127 LevelData<FArrayBox>& a_velocity,
128 const LevelData<FArrayBox>* a_crseVel,
131 const IntVect& a_ghostVect = IntVect::Zero)
const;
135 LevelData<FArrayBox>& a_gradVelocity,
136 const LevelData<FArrayBox>& a_velocity,
137 const LevelData<FArrayBox>* a_crseVel,
140 const IntVect& a_ghostVect = IntVect::Zero)
const;
144 LevelData<FluxBox>& a_gradVelocity,
145 LevelData<FArrayBox>& a_velocity,
146 const LevelData<FArrayBox>* a_crseVel,
149 const IntVect& a_ghostVect = IntVect::Zero)
const;
163 virtual void computeA(FArrayBox& a_A,
164 const FArrayBox& a_thetaStar,
165 const FArrayBox& a_pressure,
166 const Box& a_box)
const = 0;
168 virtual RateFactor* getNewRateFactor()
const = 0;
194 const FArrayBox& a_theta,
195 const FArrayBox& a_pressure,
196 const Box& a_box)
const 198 a_A.setVal(m_A, a_box, 0);
238 void setDefaultParameters(Real a_seconds_per_unit_time);
241 void setParameters(Real a_n,
252 const FArrayBox& a_thetaStar,
253 const FArrayBox& a_pressure,
254 const Box& a_box)
const;
302 void setDefaultParameters(Real a_seconds_per_unit_time);
309 void setParameters(Real a_E, Real a_A0, Real a_T0, Real a_R,
310 Real a_Qm, Real a_Qp);
315 const FArrayBox& a_thetaPC,
316 const FArrayBox& a_pressure,
317 const Box& a_box)
const;
368 void setDefaultParameters(Real a_seconds_per_unit_time);
371 void setParameters(Real a_E, Real a_A0, Real a_T0, Real a_R,
372 Real a_Qm, Real a_Qp);
377 const FArrayBox& a_thetaPC,
378 const FArrayBox& a_pressure,
379 const Box& a_box)
const;
411 virtual ~GlensFlowRelation();
415 virtual void computeMu(LevelData<FArrayBox>& a_mu,
416 const LevelData<FArrayBox>& a_vel,
const Real& a_scale,
417 const LevelData<FArrayBox>* a_crseVel,
419 const LevelData<FArrayBox>& a_A,
421 const ProblemDomain& a_domain,
422 const IntVect& a_ghostVect = IntVect::Zero)
const;
425 const LevelData<FArrayBox>& a_vel,
426 const LevelData<FArrayBox>* a_crseVel,
428 const LevelData<FArrayBox>& a_A,
430 const ProblemDomain& a_domain,
431 const IntVect& a_ghostVect = IntVect::Zero)
const;
434 LevelData<FArrayBox>& a_vel,
const Real& a_scale,
435 const LevelData<FArrayBox>* a_crseVel,
437 const LevelData<FluxBox>& a_A,
439 const ProblemDomain& a_domain,
440 const IntVect& a_ghostVect = IntVect::Zero)
const;
443 virtual void setDefaultParameters();
445 virtual void setParameters(Real a_n,
455 virtual Real power()
const {
return m_n;}
462 Real m_epsSqr0, m_delta;
467 void computeMu0(FArrayBox& a_mu0,
468 const FArrayBox& a_A,
const Real& a_scale,
469 const Box& a_box)
const;
485 virtual ~constMuRelation();
488 virtual void computeMu(LevelData<FArrayBox>& a_mu,
489 const LevelData<FArrayBox>& a_vel,
const Real& a_scale,
490 const LevelData<FArrayBox>* a_crseVel,
492 const LevelData<FArrayBox>& a_A,
494 const ProblemDomain& a_domain,
495 const IntVect& a_ghostVect = IntVect::Zero)
const;
499 const LevelData<FArrayBox>& a_vel,
500 const LevelData<FArrayBox>* a_crseVel,
502 const LevelData<FArrayBox>& a_A,
504 const ProblemDomain& a_domain,
505 const IntVect& a_ghostVect = IntVect::Zero)
const;
509 LevelData<FArrayBox>& a_vel,
const Real& a_scale,
510 const LevelData<FArrayBox>* a_crseVel,
512 const LevelData<FluxBox>& a_A,
514 const ProblemDomain& a_domain,
515 const IntVect& a_ghostVect = IntVect::Zero)
const;
519 virtual void setDefaultParameters();
521 virtual void setConstVal(Real a_mu) {m_mu = a_mu;}
528 virtual Real power()
const{
return 1.0;}
536 #include "NamespaceFooter.H" Real m_R
universal gas constant
Definition: ConstitutiveRelation.H:293
ConstantRateFactor(Real a_A)
Definition: ConstitutiveRelation.H:188
Real m_Qp
Definition: ConstitutiveRelation.H:296
void computeA(FArrayBox &a_A, const FArrayBox &a_theta, const FArrayBox &a_pressure, const Box &a_box) const
Definition: ConstitutiveRelation.H:193
Zwinger Rate Factor.
Definition: ConstitutiveRelation.H:349
Abstract class around the englacial constitutive relations for ice.
Definition: ConstitutiveRelation.H:34
virtual void computeMu(LevelData< FArrayBox > &a_mu, const LevelData< FArrayBox > &a_vel, const Real &a_scale, 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 =0
Compute cell-centered based on the cell-centered velocity.
rate factor A(T) in (e.g) Glen's law
Definition: ConstitutiveRelation.H:156
static ConstitutiveRelation * parse(const char *a_prefix)
Definition: ConstitutiveRelation.cpp:815
Real m_E
enhancement factor
Definition: ConstitutiveRelation.H:287
void setA0(Real a_A0)
Definition: ConstitutiveRelation.H:304
RateFactor * getNewRateFactor() const
Definition: ConstitutiveRelation.H:201
virtual ConstitutiveRelation * getNewConstitutiveRelation() const =0
creates a new copy of this ConstitutiveRelation object.
Paterson Rate Factor.
Definition: ConstitutiveRelation.H:282
virtual void computeFaceMu(LevelData< FluxBox > &a_mu, LevelData< FArrayBox > &a_vel, const Real &a_scale, const LevelData< FArrayBox > *a_crseVel, int a_nRefCrse, const LevelData< FluxBox > &a_A, const LevelSigmaCS &a_coordSys, const ProblemDomain &a_domain, const IntVect &a_ghostVect=IntVect::Zero) const =0
compute face-centered effective viscosity based on cell-centered velocity
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
Definition: ConstitutiveRelation.cpp:25
Real m_T0
limit temperature in flow-rate factor
Definition: ConstitutiveRelation.H:291
virtual ~RateFactor()
Definition: ConstitutiveRelation.H:161
void computeA(LevelData< FArrayBox > &a_A, const Vector< Real > &a_sigma, const LevelSigmaCS &a_coordSys, const RateFactor *a_rateFactor, const LevelData< FArrayBox > &a_internalEnergy)
compute cell centered rate factor A from the temperature
Definition: IceUtility.cpp:287
Basic Sigma fourth-order coordinate system on an AMR level.
Definition: LevelSigmaCS.H:48
Real m_A0
flow rate factor
Definition: ConstitutiveRelation.H:289
virtual ~ConstitutiveRelation()
Definition: ConstitutiveRelation.H:44
Constant Rate Factor.
Definition: ConstitutiveRelation.H:178
Arrhenius Rate Factor.
Definition: ConstitutiveRelation.H:215
ConstitutiveRelation()
Definition: ConstitutiveRelation.H:42
virtual void computeDissipation(LevelData< FArrayBox > &a_dissipation, const LevelData< FArrayBox > &a_cellVel, const LevelData< FArrayBox > *a_crseVel, int nRefCrse, const LevelData< FArrayBox > &a_A, const LevelSigmaCS &a_coordSys, const ProblemDomain &a_domain, const IntVect &a_ghostVect=IntVect::Zero) const =0
Compute a cell centred bulk dissipation (heat source) at the cell centres. This ought to have the sa...
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 ...
Definition: ConstitutiveRelation.cpp:41