BISICLES AMR ice sheet model  0.9
BasalFriction.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 // Virtual base class encapsulating coefficient of basal friction
12 // for ice-sheet model
13 
14 #ifndef _BASALFRICTION_H_
15 #define _BASALFRICTION_H_
16 
17 #include "LevelData.H"
18 #include "FArrayBox.H"
19 #include "LevelSigmaCS.H"
20 
21 #include "NamespaceHeader.H"
22 
25 
29 {
30 public:
32  virtual ~BasalFriction() {};
33 
35 
38  virtual BasalFriction* new_basalFriction() const = 0;
39 
41 
52  virtual void setBasalFriction(LevelData<FArrayBox>& a_betaSqr,
53  LevelSigmaCS& a_coordSys,
54  Real a_time,
55  Real a_dt) = 0;
56 
57  static BasalFriction *parse(const char* a_prefix, const RealVect& a_domainSize);
58 
59 private:
60  // Disallowed for all the usual reasons
61  void operator=(const BasalFriction& a_input)
62  {
63  MayDay::Error("invalid operator");
64  }
65 
66  // // Disallowed for all the usual reasons
67  // BasalFriction(const BasalFriction& a_input)
68  // {
69  // MayDay::Error("invalid operator");
70  // }
71 };
72 
73 
76 {
77 public:
79 
81 
83 
84  void setBasalFriction(LevelData<FArrayBox>& a_betaSqr,
85  LevelSigmaCS& a_coordSys,
86  Real a_time,
87  Real a_dt);
88 
89 
90 private:
91  // Disallowed for all the usual reasons
92  void operator=(const zeroFriction& a_input)
93  {
94  MayDay::Error("invalid operator");
95  }
96 
97  // Disallowed for all the usual reasons
98  zeroFriction(const zeroFriction& a_input)
99  {
100  MayDay::Error("invalid operator");
101  }
102 };
103 
104 
106 
115 {
116 public:
118 
120 
123  constantFriction(Real a_betaSqr);
124 
126 
128 
129  void setBasalFriction(LevelData<FArrayBox>& a_betaSqr,
130  LevelSigmaCS& a_coordSys,
131  Real a_time,
132  Real a_dt);
133 
135 
138  void setFrictionVal(const Real& a_betaSqr);
139 
140 protected:
141 
144 
145 private:
146  // Disallowed for all the usual reasons
147  void operator=(const constantFriction& a_input)
148  {
149  MayDay::Error("invalid operator");
150  }
151 
152  // Disallowed for all the usual reasons
153  constantFriction(const constantFriction& a_input)
154  {
155  MayDay::Error("invalid operator");
156  }
157 };
158 
159 
161 
166 {
167 public:
170 
171  sinusoidalFriction(const Real& a_betaVal,
172  const RealVect& a_omega,
173  const Real& a_eps,
174  const RealVect& a_domainSize);
175 
177  virtual ~sinusoidalFriction();
178 
180 
182  virtual BasalFriction* new_basalFriction() const;
183 
185 
189  virtual void setBasalFriction(LevelData<FArrayBox>& a_betaSqr,
190  LevelSigmaCS& a_coordSys,
191  Real a_time,
192  Real a_dt);
193 
195  void setSinParameters(const Real& a_betaVal,
196  const RealVect& a_omega,
197  const Real& a_eps,
198  const RealVect& a_domainSize);
199 
200  Real m_betaVal;
201  RealVect m_omega;
202  Real m_eps;
203  RealVect m_domainSize;
204 
205 private:
206  // Disallowed for all the usual reasons
207  void operator=(const sinusoidalFriction& a_input)
208  {
209  MayDay::Error("invalid operator");
210  }
211 
212  // Disallowed for all the usual reasons
213  sinusoidalFriction(const constantFriction& a_input)
214  {
215  MayDay::Error("invalid operator");
216  }
217 };
218 
219 
220 #include "NamespaceFooter.H"
221 
222 
223 #endif // multiple-include preventer
RealVect m_domainSize
Definition: BasalFriction.H:203
static BasalFriction * parse(const char *a_prefix, const RealVect &a_domainSize)
Definition: BasalFriction.cpp:194
virtual void setBasalFriction(LevelData< FArrayBox > &a_betaSqr, LevelSigmaCS &a_coordSys, Real a_time, Real a_dt)=0
compute basal friction coefficient beta^2 and place in a_betaSqr
RealVect m_omega
Definition: BasalFriction.H:201
virtual BasalFriction * new_basalFriction() const =0
factory method
simple version which sets basal friction to a sinusoidal profile
Definition: BasalFriction.H:165
bool m_isValSet
Definition: BasalFriction.H:143
virtual ~BasalFriction()
virtual destructor
Definition: BasalFriction.H:32
Real m_frictionVal
Definition: BasalFriction.H:142
Real m_betaVal
Definition: BasalFriction.H:200
BasalFriction which sets basal friction to zero. Probably completely useless.
Definition: BasalFriction.H:75
Basic Sigma fourth-order coordinate system on an AMR level.
Definition: LevelSigmaCS.H:48
~constantFriction()
Definition: BasalFriction.H:125
Definition: BasalFriction.H:28
Real m_eps
Definition: BasalFriction.H:202
~zeroFriction()
Definition: BasalFriction.H:80
zeroFriction()
Definition: BasalFriction.H:78
BasalFriction where is constant in space and time.
Definition: BasalFriction.H:114