CurvyChute.h
Go to the documentation of this file.
1 #ifndef CURVYCHUTE_H
2 #define CURVYCHUTE_H
3 #include "Mercury3D.h"
5 
6 #include<functional>
7 
19 class CurvyChute : public Mercury3D
20 {
21  public:
22  CurvyChute();
23 
24  ~CurvyChute();
25 
26  Mdouble getChuteAngle() const;
27 
29 
30  void setChuteAngleAndMagnitudeOfGravity(Mdouble chuteAngle, Mdouble gravity);
31 
32  void setSurface( std::function<Vec3D(Mdouble ccR, Mdouble ccS)> surface,
33  std::function<Mdouble(Mdouble ccR, Mdouble ccS)> areaElement,
34  Mdouble ccRMin, Mdouble ccRMax, Mdouble ccdR,
35  Mdouble ccSMin, Mdouble ccSMax, Mdouble ccdS );
36 
37  void setBasalThickness(Mdouble basalThickness);
38 
39  void setBasalDensity(Mdouble basalDensity);
40 
41  void setBasalDisorder(Mdouble basalDisorder);
42 
43  void setBasalSizeDispersity(Mdouble basalSizeDispersity);
44 
49  void setBasalPrototype(BaseParticle* basalPrototype);
50 
56  void createBottom();
57 
63  void recreateBottom();
64 
65  private:
70 
72 
81  std::function<Vec3D(Mdouble ccR, Mdouble ccS)> surface_;
82 
86  std::function<Mdouble(Mdouble ccR, Mdouble ccS)> areaElement_;
87 
89 
90 #if 0
94  std::function<Mdouble(Mdouble ccR, Mdouble ccS)> scaleFactorR;
95 
99  std::function<Mdouble(Mdouble ccR, Mdouble ccS)> scaleFactorS;
100 #endif
101 
102 
107 
113 
118 
123 
129 
134 
141  // bool isChutePeriodic_;
142 };
143 
144 #endif
double Mdouble
Definition: GeneralDefine.h:34
Definition: BaseParticle.h:54
Creates chutes defined by curvilinear coordinates. Inherits from Mercury3D.
Definition: CurvyChute.h:20
Mdouble getChuteAngle() const
Definition: CurvyChute.cc:33
std::function< Mdouble(Mdouble ccR, Mdouble ccS)> areaElement_
The area element of the surface.
Definition: CurvyChute.h:86
Mdouble ccSMax_
Definition: CurvyChute.h:88
void setBasalDensity(Mdouble basalDensity)
Definition: CurvyChute.cc:80
void setSurface(std::function< Vec3D(Mdouble ccR, Mdouble ccS)> surface, std::function< Mdouble(Mdouble ccR, Mdouble ccS)> areaElement, Mdouble ccRMin, Mdouble ccRMax, Mdouble ccdR, Mdouble ccSMin, Mdouble ccSMax, Mdouble ccdS)
Definition: CurvyChute.cc:55
Mdouble basalDensity_
The area density of the basal particles.
Definition: CurvyChute.h:117
Mdouble ccdR_
Definition: CurvyChute.h:88
Mdouble ccRMax_
Definition: CurvyChute.h:88
void setChuteAngleAndMagnitudeOfGravity(Mdouble chuteAngle, Mdouble gravity)
Definition: CurvyChute.cc:43
CurvyChute()
Definition: CurvyChute.cc:3
Mdouble getChuteAngleDegrees() const
Definition: CurvyChute.cc:38
Mdouble basalThickness_
The thickness of the base, in terms of number of layers.
Definition: CurvyChute.h:106
Mdouble ccRMin_
Definition: CurvyChute.h:88
Mdouble basalDisorder_
The amount of disorder in the base, from 0 (ordered) to 1 (completely disordered)
Definition: CurvyChute.h:112
Mdouble ccSMin_
Definition: CurvyChute.h:88
void setBasalPrototype(BaseParticle *basalPrototype)
The basal prototype should already have a species assigned to it.
Definition: CurvyChute.cc:103
void setBasalSizeDispersity(Mdouble basalSizeDispersity)
Definition: CurvyChute.cc:94
void createBottom()
When this is called, a copy of basalPrototype->getSpecies() will be added to the speciesHandler,...
Definition: CurvyChute.cc:108
Mdouble magnitudeOfGravity_
Definition: CurvyChute.h:71
void setBasalThickness(Mdouble basalThickness)
Definition: CurvyChute.cc:74
void recreateBottom()
When this is called, all particles in the particleHandler that have the species basalSpecies_ will be...
Definition: CurvyChute.cc:161
~CurvyChute()
Definition: CurvyChute.cc:23
BaseParticle * basalPrototype_
Pointer to a prototypical basal particle (not in a particleHandler, but should have a species set)
Definition: CurvyChute.h:128
void setBasalDisorder(Mdouble basalDisorder)
Definition: CurvyChute.cc:87
Mdouble ccdS_
Definition: CurvyChute.h:88
ParticleSpecies * basalSpecies_
Pointer to the species of the prototypical basal particle.
Definition: CurvyChute.h:133
Mdouble chuteAngle_
Chute angle.
Definition: CurvyChute.h:69
std::function< Vec3D(Mdouble ccR, Mdouble ccS)> surface_
The shape of the chute, defined by a function of two curvilinear coordinates. The 'r' direction is th...
Definition: CurvyChute.h:81
Mdouble basalSizeDispersity_
The amount of size dispersity amongst the basal particles.
Definition: CurvyChute.h:122
This adds on the hierarchical grid code for 3D problems.
Definition: Mercury3D.h:37
Definition: ParticleSpecies.h:37
Definition: Vector.h:51