 |
revision: v0.14
|
Go to the documentation of this file.
26 #ifndef PeriodicBoundary_H
27 #define PeriodicBoundary_H
175 virtual void read(std::istream& is)
override;
180 void oldRead(std::istream& is);
185 void write(std::ostream& os)
const override;
190 std::string
getName()
const override;
void setName(const std::string &name)
Allows to set the name of all the files (ene, data, fstat, restart, stat)
Definition: DPMBase.cc:420
void write(std::ostream &os) const override
writes boundary properties to ostream
Definition: PeriodicBoundary.cc:426
void setTimeStep(Mdouble newDt)
Sets a new value for the simulation time step.
Definition: DPMBase.cc:1225
void setupInitialConditions()
This function allows to set the initial conditions for our problem to be solved, by default particle ...
Definition: periodic.cpp:37
Vec3D getShift() const
Returns the vector going from the left to the right side of the periodic boundary.
Definition: PeriodicBoundary.cc:159
Mdouble scaleFactor_
This is the normal to rescale the normal vector to a unit vectors.
Definition: PeriodicBoundary.h:211
unsigned int N
Definition: periodic.cpp:89
virtual void shiftPosition(BaseParticle *p) const override
shifts the particle
Definition: PeriodicBoundary.cc:219
BaseParticle * getPeriodicFromParticle() const
Returns the 'original' particle this one's a periodic copy of.
Definition: BaseParticle.h:341
Mdouble getXMax() const
If the length of the problem domain in x-direction is XMax - XMin, then getXMax() returns XMax.
Definition: DPMBase.h:607
void setPosition(const Vec3D &position)
Sets the position of this BaseInteractable.
Definition: BaseInteractable.h:239
Logger< MERCURY_LOGLEVEL > logger("MercuryKernel")
Definition of different loggers with certain modules. A user can define its own custom logger here.
~PeriodicBoundary() override
destructor
Definition: PeriodicBoundary.cc:50
void copyInteractionsForPeriodicParticles(const BaseInteractable &p)
Copies interactions to this BaseInteractable whenever a periodic copy made.
Definition: BaseInteractable.cc:386
int main(int argc UNUSED, char *argv[] UNUSED)
Definition: periodic.cpp:111
static Mdouble dot(const Vec3D &a, const Vec3D &b)
Calculates the dot product of two Vec3D: .
Definition: Vector.cc:76
void setYMax(Mdouble newYMax)
Sets the value of YMax, the upper bound of the problem domain in the y-direction.
Definition: DPMBase.cc:1182
unsigned int getSize() const
Gets the size of the particleHandler (including mpi and periodic particles)
Definition: BaseHandler.h:655
virtual void move(const Vec3D &move)
Moves this BaseInteractable by adding an amount to the position.
Definition: BaseInteractable.cc:215
virtual void hGridUpdateMove(BaseParticle *, Mdouble)
Definition: DPMBase.cc:1924
virtual void setRadius(Mdouble radius)
Sets the particle's radius_ (and adjusts the mass_ accordingly, based on the particle's species)
Definition: BaseParticle.cc:542
void solve()
The work horse of the code.
Definition: DPMBase.cc:4003
Mdouble getYMin() const
If the length of the problem domain in y-direction is YMax - YMin, then getYMin() returns YMin.
Definition: DPMBase.h:613
void setZMax(Mdouble newZMax)
Sets the value of ZMax, the upper bound of the problem domain in the z-direction.
Definition: DPMBase.cc:1208
BoundaryHandler boundaryHandler
An object of the class BoundaryHandler which concerns insertion and deletion of particles into or fro...
Definition: DPMBase.h:1410
Definition: BasePeriodicBoundary.h:41
#define NUMBER_OF_PROCESSORS
For the MPI communication routines this quantity is often required. defining this macro makes the cod...
Definition: GeneralDefine.h:62
Mdouble getDistanceRight() const
Returns the distance of the right wall to the origin, in normal direction.
Definition: PeriodicBoundary.cc:151
PeriodicBoundary * copy() const override
copy method
Definition: PeriodicBoundary.cc:58
BaseParticle * getLargestParticle() const
Returns the pointer of the largest particle in the particle handler. When mercury is running in paral...
Definition: ParticleHandler.cc:530
Mdouble distanceRight_
position of right edge, s.t. normal*x = distanceRight_
Definition: PeriodicBoundary.h:206
void setVelocity(const Vec3D &velocity)
set the velocity of the BaseInteractable.
Definition: BaseInteractable.cc:350
void write(std::ostream &os) const override
Adds object's id_ to given ostream.
Definition: BasePeriodicBoundary.cc:80
virtual BaseParticle * copy() const =0
Particle copy method. It calls to copy constructor of this Particle, useful for polymorphism.
todo{This code is not working as is wanted}
Definition: elastic_gas.cpp:34
void setPeriodicFromParticle(BaseParticle *p)
Assigns the pointer to the 'original' particle this one's a periodic copy of (used in periodic bounda...
Definition: BaseParticle.h:441
Vec3D normal_
outward unit normal vector for right edge
Definition: PeriodicBoundary.h:197
virtual void read(std::istream &is) override
reads boundary properties from istream
Definition: PeriodicBoundary.cc:397
void moveRight(Mdouble distanceRight)
Sets the distance from the origin of the 'right' periodic wall.
Definition: PeriodicBoundary.cc:182
PeriodicBoundary()
default constructor
Definition: PeriodicBoundary.cc:37
Mdouble getDistanceLeft() const
Returns the distance of the left wall to the origin, in normal direction.
Definition: PeriodicBoundary.cc:143
Mdouble sin(Mdouble x)
Definition: ExtendedMath.cc:44
#define MERCURY_DEPRECATED
Definition: GeneralDefine.h:37
Species< LinearViscoelasticNormalSpecies > LinearViscoelasticSpecies
Definition: LinearViscoelasticSpecies.h:33
Mdouble getTime() const
Returns the current simulation time.
Definition: DPMBase.cc:805
void setXMax(Mdouble newXMax)
Sets the value of XMax, the upper bound of the problem domain in the x-direction.
Definition: DPMBase.cc:1156
SpeciesHandler speciesHandler
A handler to that stores the species type i.e. LinearViscoelasticSpecies, etc.
Definition: DPMBase.h:1385
Mdouble getDistance(const BaseParticle &p) const override
Returns the distance of the edge to the particle.
Definition: PeriodicBoundary.cc:197
Vec3D getNormal() const
returns the vector normal to the periodic boundary
Definition: PeriodicBoundary.cc:135
void moveLeft(Mdouble distanceLeft)
Sets the distance from the origin of the 'left' periodic wall.
Definition: PeriodicBoundary.cc:170
WallHandler wallHandler
An object of the class WallHandler. Contains pointers to all the walls created.
Definition: DPMBase.h:1405
MERCURY_DEPRECATED void oldRead(std::istream &is)
deprecated version of CubeInsertionBoundary::read().
Definition: PeriodicBoundary.cc:412
void setTimeMax(Mdouble newTMax)
Sets a new value for the maximum simulation duration.
Definition: DPMBase.cc:870
void setGravity(Vec3D newGravity)
Sets a new value for the gravitational acceleration.
Definition: DPMBase.cc:1374
A infinite wall fills the half-space {point: (position_-point)*normal_<=0}.
Definition: InfiniteWall.h:48
const std::complex< Mdouble > i
Definition: ExtendedMath.h:51
Mdouble getZMin() const
If the length of the problem domain in z-direction is ZMax - ZMin, then getZMin() returns ZMin.
Definition: DPMBase.h:625
void createPeriodicParticle(BaseParticle *p, ParticleHandler &pH) override
Creates a single periodic particle if required from a given particle.
Definition: PeriodicBoundary.cc:304
void setPrescribedPosition(const std::function< Vec3D(double)> &prescribedPosition)
Allows the position of an infinite mass interactable to be prescribed.
Definition: BaseInteractable.cc:413
T * getObject(const unsigned int id)
Gets a pointer to the Object at the specified index in the BaseHandler.
Definition: BaseHandler.h:613
std::string getName() const override
Returns the name of the object.
Definition: PeriodicBoundary.cc:440
DPMBase * getDPMBase()
Gets the problem that is solved using this handler.
Definition: BaseHandler.h:725
Mdouble distanceLeft_
position of left edge, s.t. normal*x = distanceLeft_
Definition: PeriodicBoundary.h:201
Definition: BaseParticle.h:54
static Mdouble getLengthSquared(const Vec3D &a)
Calculates the squared length of a Vec3D: .
Definition: Vector.h:316
This adds on the hierarchical grid code for 2D problems.
Definition: Mercury2D.h:36
void addObject(BaseParticle *P) override
Adds a BaseParticle to the ParticleHandler.
Definition: ParticleHandler.cc:170
#define UNUSED
Definition: GeneralDefine.h:39
Vec3D getMin() const
Definition: DPMBase.h:637
std::enable_if<!std::is_pointer< U >::value, U * >::type copyAndAddObject(const U &object)
Creates a copy of a Object and adds it to the BaseHandler.
Definition: BaseHandler.h:379
Mdouble getMaxInteractionRadius() const
Returns the particle's interaction radius, which might be different from radius_ (e....
Definition: BaseParticle.h:362
const std::vector< T * >::const_iterator begin() const
Gets the begin of the const_iterator over all Object in this BaseHandler.
Definition: BaseHandler.h:690
virtual void shiftPositions(Vec3D &postition1, Vec3D &postion2) const
shifts two positions
Definition: PeriodicBoundary.cc:255
Defines a pair of periodic walls. Inherits from BaseBoundary.
Definition: PeriodicBoundary.h:41
Mdouble getYMax() const
If the length of the problem domain in y-direction is YMax - YMin, then getYMax() returns XMax.
Definition: DPMBase.h:619
void createGhostParticle(BaseParticle *pReal)
Creates and adds a ghost particle from a given real particle.
Definition: PeriodicBoundary.cc:314
BoundaryHandler * getHandler() const
Returns the boundary's BoundaryHandler.
Definition: BaseBoundary.cc:143
void set(Vec3D normal, Mdouble distanceLeft, Mdouble distanceRight)
Defines a PeriodicBoundary by its normal and positions.
Definition: PeriodicBoundary.cc:84
Container to store all BaseParticle.
Definition: ParticleHandler.h:48
virtual bool isClosestToLeftBoundary(const BaseParticle &p) const
Returns TRUE if particle checked is closest to the 'left' edge, and FALSE if it is closest to the 'ri...
Definition: PeriodicBoundary.cc:275
virtual void createPeriodicParticles(ParticleHandler &pH) override
Checks distance of particle to closer edge and creates a periodic copy if necessary.
Definition: PeriodicBoundary.cc:349
ParticleHandler particleHandler
An object of the class ParticleHandler, contains the pointers to all the particles created.
Definition: DPMBase.h:1395
Vec3D shift_
shift from left to right boundary
Definition: PeriodicBoundary.h:216
virtual void checkBoundaryAfterParticlesMove(ParticleHandler &pH) override
Loops over particles, checks if each particle has crossed either boundary edge, and applies a shift i...
Definition: PeriodicBoundary.cc:374
void setSaveCount(unsigned int saveCount)
Sets File::saveCount_ for all files (ene, data, fstat, restart, stat)
Definition: DPMBase.cc:406
void setPlanewiseShift(Vec3D planewiseShift)
Set the planewise shift (projected onto the planewise direction, and zero by default).
Definition: PeriodicBoundary.cc:126
void set(Vec3D normal, Vec3D point)
Defines a standard wall, given an outward normal vector s.t. normal*x=normal*point for all x of the w...
Definition: InfiniteWall.cc:118
void read(std::istream &is) override
Reads the object's id_ from given istream.
Definition: BasePeriodicBoundary.cc:71
const std::vector< T * >::const_iterator end() const
Gets the end of the const_iterator over all BaseBoundary in this BaseHandler.
Definition: BaseHandler.h:704
void setPeriodicGhostParticle(bool flag)
Flags the status of the particle to be a ghost in periodic boundary or not.
Definition: BaseParticle.cc:296
Mdouble getXMin() const
If the length of the problem domain in x-direction is XMax - XMin, then getXMin() returns XMin.
Definition: DPMBase.h:600
const Vec3D & getPosition() const
Returns the position of this BaseInteractable.
Definition: BaseInteractable.h:218
void setSystemDimensions(unsigned int newDim)
Sets the system dimensionality.
Definition: DPMBase.cc:1408