BISICLES AMR ice sheet model  0.9
LevelDataTemperatureIBC.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 //
12 // LevelDataTemperatureIBC.H
13 // ============
14 
15 #ifndef _LEVELDATATEMPERATUREIBC_H_
16 #define _LEVELDATATEMPERATUREIBC_H_
17 
18 #include "IceInternalEnergyIBC.H"
19 #include "ParmParse.H"
20 #include "NamespaceHeader.H"
21 
23 
28 {
29  RefCountedPtr<LevelData<FArrayBox> > m_bulkData; // a temperature or internal energy
30  Real m_defaultTemperature, m_defaultE;
31  bool m_dataIsInternalEnergy;
32 #if BISICLES_Z == BISICLES_LAYERED
33  RefCountedPtr<LevelData<FArrayBox> > m_surfaceData ; // a temperature or internal energy
34  RefCountedPtr<LevelData<FArrayBox> > m_basalHeatFlux ; // usually a heat flux
35 #endif
36  RealVect m_dx;
37 public:
39 
41  LevelDataTemperatureIBC(RefCountedPtr<LevelData<FArrayBox> > a_bulkData,
42 #if BISICLES_Z == BISICLES_LAYERED
43  RefCountedPtr<LevelData<FArrayBox> > a_surfaceData,
44  RefCountedPtr<LevelData<FArrayBox> > a_basalHeatFlux,
45 #endif
46  const RealVect& a_dx,const Real& a_defaultTemperature,
47  const bool& a_dataIsInternalEnergy );
48 
50 
52  virtual ~LevelDataTemperatureIBC();
53 
55 
59  virtual void define(const ProblemDomain& a_domain,
60  const Real& a_dx);
61 
63 
69 
71  virtual void basalHeatFlux(LevelData<FArrayBox>& a_flux,
72  const AmrIceBase& a_amrIce,
73  int a_level, Real a_dt);
74 
75 #if BISICLES_Z == BISICLES_LAYERED
76  virtual void initializeIceInternalEnergy(LevelData<FArrayBox>& a_E,
77  LevelData<FArrayBox>& a_tillWaterDepth,
78  LevelData<FArrayBox>& a_surfaceE,
79  LevelData<FArrayBox>& a_basalE,
80  const AmrIceBase& a_amrIce,
81  int a_level, Real a_dt);
82 
83 #elif BISICLES_Z == BISICLES_FULLZ
84 #error BISICLES_FULLZ not implemented
85 #endif
86 
87 
88  static LevelDataTemperatureIBC* parse(ParmParse& a_pp);
89 
90 private:
91 
92 
93 
94  // Disallowed for all the usual reasons
95  void operator=(const LevelDataTemperatureIBC& a_input)
96  {
97  MayDay::Error("invalid operator");
98  }
99 
100  // Disallowed for all the usual reasons
102  :m_bulkData(a_input.m_bulkData)
103  {
104  MayDay::Error("invalid operator");
105  }
106 
107 };
108 
109 #include "NamespaceFooter.H"
110 #endif
Physical/domain initial and boundary conditions.
Definition: LevelDataTemperatureIBC.H:27
virtual void initializeIceInternalEnergy(LevelData< FArrayBox > &a_E, LevelData< FArrayBox > &a_tillWaterDepth, LevelData< FArrayBox > &a_surfaceE, LevelData< FArrayBox > &a_basalE, const AmrIceBase &a_amrIce, int a_level, Real a_dt)
Definition: LevelDataTemperatureIBC.cpp:171
LevelDataTemperatureIBC(RefCountedPtr< LevelData< FArrayBox > > a_bulkData, #if BISICLES_Z==BISICLES_LAYERED RefCountedPtr< LevelData< FArrayBox > > a_surfaceData, RefCountedPtr< LevelData< FArrayBox > > a_basalHeatFlux, #endif const RealVect &a_dx, const Real &a_defaultTemperature, const bool &a_dataIsInternalEnergy)
Constructor.
static LevelDataTemperatureIBC * parse(ParmParse &a_pp)
Definition: LevelDataTemperatureIBC.cpp:29
virtual void define(const ProblemDomain &a_domain, const Real &a_dx)
Define the object.
Definition: LevelDataTemperatureIBC.cpp:148
virtual ~LevelDataTemperatureIBC()
Destructor.
Definition: LevelDataTemperatureIBC.cpp:143
Partial implementation of IceInternalEnergyIBC, provides reflection (or periodic) boundary conditions...
Definition: IceInternalEnergyIBC.H:164
virtual void basalHeatFlux(LevelData< FArrayBox > &a_flux, const AmrIceBase &a_amrIce, int a_level, Real a_dt)
set a basal heat flux. units are Joules / Year
Definition: LevelDataTemperatureIBC.cpp:155
abstract base class for amr ice sheet models (AmrIce, AMRIceControl)
Definition: AmrIceBase.H:21
virtual LevelDataTemperatureIBC * new_internalEnergyIBC()
Factory method - this object is its own factory.
Definition: LevelDataTemperatureIBC.cpp:268