CurvyChute.h
Go to the documentation of this file.
1 // This file is part of the MercuryDPM project (https://www.mercurydpm.org).
2 // Copyright (c), The MercuryDPM Developers Team. All rights reserved.
3 // License: BSD 3-Clause License; see the LICENSE file in the root directory.
4 
5 #ifndef CURVYCHUTE_H
6 #define CURVYCHUTE_H
7 #include "Mercury3D.h"
9 
10 #include<functional>
11 
23 class CurvyChute : public Mercury3D
24 {
25  public:
26  CurvyChute();
27 
28  ~CurvyChute();
29 
30  Mdouble getChuteAngle() const;
31 
33 
35 
36  void setSurface( std::function<Vec3D(Mdouble ccR, Mdouble ccS)> surface,
37  std::function<Mdouble(Mdouble ccR, Mdouble ccS)> areaElement,
38  Mdouble ccRMin, Mdouble ccRMax, Mdouble ccdR,
39  Mdouble ccSMin, Mdouble ccSMax, Mdouble ccdS );
40 
41  void setBasalThickness(Mdouble basalThickness);
42 
43  void setBasalDensity(Mdouble basalDensity);
44 
45  void setBasalDisorder(Mdouble basalDisorder);
46 
47  void setBasalSizeDispersity(Mdouble basalSizeDispersity);
48 
53  void setBasalPrototype(BaseParticle* basalPrototype);
54 
60  void createBottom();
61 
67  void recreateBottom();
68 
69  private:
74 
76 
85  std::function<Vec3D(Mdouble ccR, Mdouble ccS)> surface_;
86 
90  std::function<Mdouble(Mdouble ccR, Mdouble ccS)> areaElement_;
91 
93 
94 #if 0
98  std::function<Mdouble(Mdouble ccR, Mdouble ccS)> scaleFactorR;
99 
103  std::function<Mdouble(Mdouble ccR, Mdouble ccS)> scaleFactorS;
104 #endif
105 
106 
111 
117 
122 
127 
133 
138 
145  // bool isChutePeriodic_;
146 };
147 
148 #endif
double Mdouble
Definition: GeneralDefine.h:13
Definition: BaseParticle.h:33
Creates chutes defined by curvilinear coordinates. Inherits from Mercury3D.
Definition: CurvyChute.h:24
Mdouble getChuteAngle() const
Definition: CurvyChute.cc:37
std::function< Mdouble(Mdouble ccR, Mdouble ccS)> areaElement_
The area element of the surface.
Definition: CurvyChute.h:90
Mdouble ccSMax_
Definition: CurvyChute.h:92
void setBasalDensity(Mdouble basalDensity)
Definition: CurvyChute.cc:84
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:59
Mdouble basalDensity_
The area density of the basal particles.
Definition: CurvyChute.h:121
Mdouble ccdR_
Definition: CurvyChute.h:92
Mdouble ccRMax_
Definition: CurvyChute.h:92
void setChuteAngleAndMagnitudeOfGravity(Mdouble chuteAngle, Mdouble gravity)
Definition: CurvyChute.cc:47
CurvyChute()
Definition: CurvyChute.cc:7
Mdouble getChuteAngleDegrees() const
Definition: CurvyChute.cc:42
Mdouble basalThickness_
The thickness of the base, in terms of number of layers.
Definition: CurvyChute.h:110
Mdouble ccRMin_
Definition: CurvyChute.h:92
Mdouble basalDisorder_
The amount of disorder in the base, from 0 (ordered) to 1 (completely disordered)
Definition: CurvyChute.h:116
Mdouble ccSMin_
Definition: CurvyChute.h:92
void setBasalPrototype(BaseParticle *basalPrototype)
The basal prototype should already have a species assigned to it.
Definition: CurvyChute.cc:107
void setBasalSizeDispersity(Mdouble basalSizeDispersity)
Definition: CurvyChute.cc:98
void createBottom()
When this is called, a copy of basalPrototype->getSpecies() will be added to the speciesHandler,...
Definition: CurvyChute.cc:112
Mdouble magnitudeOfGravity_
Definition: CurvyChute.h:75
void setBasalThickness(Mdouble basalThickness)
Definition: CurvyChute.cc:78
void recreateBottom()
When this is called, all particles in the particleHandler that have the species basalSpecies_ will be...
Definition: CurvyChute.cc:165
~CurvyChute()
Definition: CurvyChute.cc:27
BaseParticle * basalPrototype_
Pointer to a prototypical basal particle (not in a particleHandler, but should have a species set)
Definition: CurvyChute.h:132
void setBasalDisorder(Mdouble basalDisorder)
Definition: CurvyChute.cc:91
Mdouble ccdS_
Definition: CurvyChute.h:92
ParticleSpecies * basalSpecies_
Pointer to the species of the prototypical basal particle.
Definition: CurvyChute.h:137
Mdouble chuteAngle_
Chute angle.
Definition: CurvyChute.h:73
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:85
Mdouble basalSizeDispersity_
The amount of size dispersity amongst the basal particles.
Definition: CurvyChute.h:126
This adds on the hierarchical grid code for 3D problems.
Definition: Mercury3D.h:16
Definition: ParticleSpecies.h:16
Definition: Kernel/Math/Vector.h:30
Definition: MortaringCantileverCompareToNonMortaring.cpp:176