BISICLES AMR ice sheet model  0.9
CrevasseCalvingModel.H
Go to the documentation of this file.
1 #ifdef CH_LANG_CC
2 /*
3 * _______ __
4 * / ___/ / ___ __ _ / / ___
5 * / /__/ _ \/ _ \/ V \/ _ \/ _ \
6 * \___/_//_/\___/_/_/_/_.__/\___/
7 * Please refer to Copyright.txt, in Chombo's root directory.
8 */
9 #endif
10 
11 #ifndef _CREVASSECALVINGMODEL_H_
12 #define _CREVASSECALVINGMODEL_H_
13 
14 #include "LevelSigmaCS.H"
15 #include "ParmParse.H"
16 #include "CalvingModel.H"
17 #include "SurfaceFlux.H"
18 #include "NamespaceHeader.H"
19 
28 {
29 public:
30 
32 
33  CrevasseCalvingModel(ParmParse& a_pp);
34 
35  virtual ~CrevasseCalvingModel();
36 
37  virtual void computeRemnant(LevelData<FArrayBox>& a_remnant,
38  const LevelData<FArrayBox>& a_stress,
39  const LevelData<FArrayBox>& a_thck,
40  const LevelData<FArrayBox>& a_usrf,
41  const LevelData<FArrayBox>& a_hab,
42  const LevelData<FArrayBox>& a_waterDepth,
43  const LevelSigmaCS& a_coords) = 0;
44 
45 
46  // CalvingModel implementation
47  virtual void applyCriterion(LevelData<FArrayBox>& a_thickness,
48  LevelData<FArrayBox>& a_calvedIce,
49  LevelData<FArrayBox>& a_addedIce,
50  LevelData<FArrayBox>& a_removedIce,
51  LevelData<FArrayBox>& a_iceFrac,
52  const AmrIce& a_amrIce,
53  int a_level,
54  Stage a_stage);
55 
56  virtual void getWaterDepth(LevelData<FArrayBox>& a_waterDepth,
57  const AmrIce& a_amrIce,int a_level);
58 
60  {
66  }
67 
68 protected:
69  //compute a scalar stress measure from the viscous stress tensor
70  void computeStressMeasure(LevelData<FArrayBox>& a_stressMeasure,
71  const AmrIce& a_amrIce,int a_level);
72 
73 
79 
80 };
81 
86 {
87 
88 public:
89 
90  BennCalvingModel(ParmParse& a_pp);
91 
93 
94  virtual void computeRemnant(LevelData<FArrayBox>& a_remnant,
95  const LevelData<FArrayBox>& a_stress,
96  const LevelData<FArrayBox>& a_thck,
97  const LevelData<FArrayBox>& a_usrf,
98  const LevelData<FArrayBox>& a_hab,
99  const LevelData<FArrayBox>& a_waterDepth,
100  const LevelSigmaCS& a_coords);
101 
103  {
104  }
105 
106 
109  {
110  return new BennCalvingModel(*this);
111  }
112 };
113 
117 {
118 
119 public:
120 
121  VdVCalvingModel(ParmParse& a_pp);
122 
123  ~VdVCalvingModel();
124 
125  virtual void computeRemnant(LevelData<FArrayBox>& a_remnant,
126  const LevelData<FArrayBox>& a_stress,
127  const LevelData<FArrayBox>& a_thck,
128  const LevelData<FArrayBox>& a_usrf,
129  const LevelData<FArrayBox>& a_hab,
130  const LevelData<FArrayBox>& a_waterDepth,
131  const LevelSigmaCS& a_ccords);
132 
134  {
135  }
136 
139  {
140  return new VdVCalvingModel(*this);
141  }
142 };
143 
144 
145 #include "NamespaceFooter.H"
146 
147 #endif
SurfaceFlux * m_waterDepth
Definition: CrevasseCalvingModel.H:74
Definition: CrevasseCalvingModel.H:116
Definition: CrevasseCalvingModel.H:31
DomainEdgeCalvingModel * m_domainEdgeCalvingModel
Definition: CrevasseCalvingModel.H:77
Ensure open ocean on one or more domain edges.
Definition: CalvingModel.H:141
Definition: CrevasseCalvingModel.H:31
virtual CalvingModel * new_CalvingModel()
factory method
Definition: CrevasseCalvingModel.H:138
StressMeasure m_stressMeasure
Definition: CrevasseCalvingModel.H:78
CrevasseCalvingModel(ParmParse &a_pp)
Definition: CrevasseCalvingModel.cpp:236
Real m_calvingZoneLength
Definition: CrevasseCalvingModel.H:76
class to manage non-subcycled AMR ice-sheet model
Definition: AmrIce.H:40
Definition: CrevasseCalvingModel.H:31
virtual void applyCriterion(LevelData< FArrayBox > &a_thickness, LevelData< FArrayBox > &a_calvedIce, LevelData< FArrayBox > &a_addedIce, LevelData< FArrayBox > &a_removedIce, LevelData< FArrayBox > &a_iceFrac, const AmrIce &a_amrIce, int a_level, Stage a_stage)
Definition: CrevasseCalvingModel.cpp:87
bool m_includeBasalCrevasses
Definition: CrevasseCalvingModel.H:75
CrevasseCalvingModel(const CrevasseCalvingModel &a)
Definition: CrevasseCalvingModel.H:59
abstract class defining the surface flux interface
Definition: SurfaceFlux.H:39
virtual CalvingModel * new_CalvingModel()
factory method
Definition: CrevasseCalvingModel.H:108
Basic Sigma fourth-order coordinate system on an AMR level.
Definition: LevelSigmaCS.H:48
virtual void computeRemnant(LevelData< FArrayBox > &a_remnant, const LevelData< FArrayBox > &a_stress, const LevelData< FArrayBox > &a_thck, const LevelData< FArrayBox > &a_usrf, const LevelData< FArrayBox > &a_hab, const LevelData< FArrayBox > &a_waterDepth, const LevelSigmaCS &a_coords)=0
StressMeasure
Definition: CrevasseCalvingModel.H:31
virtual SurfaceFlux * new_surfaceFlux()=0
factory method: return a pointer to a new SurfaceFlux object
BennCalvingModel(const BennCalvingModel &a)
Definition: CrevasseCalvingModel.H:102
Stage
Definition: CalvingModel.H:28
Definition: CrevasseCalvingModel.H:85
VdVCalvingModel(const VdVCalvingModel &a)
Definition: CrevasseCalvingModel.H:133
Definition: CrevasseCalvingModel.H:31
virtual base for calving models
Definition: CalvingModel.H:23
virtual ~CrevasseCalvingModel()
Definition: CrevasseCalvingModel.cpp:300
virtual void getWaterDepth(LevelData< FArrayBox > &a_waterDepth, const AmrIce &a_amrIce, int a_level)
water depth for crevasse calving.
Definition: CrevasseCalvingModel.cpp:81
Definition: CrevasseCalvingModel.H:27
void computeStressMeasure(LevelData< FArrayBox > &a_stressMeasure, const AmrIce &a_amrIce, int a_level)
Definition: CrevasseCalvingModel.cpp:24