31 logger(
DEBUG,
"AxisymmetricIntersectionOfWalls() finished");
40 logger(
DEBUG,
"AxisymmetricIntersectionOfWalls(const AxisymmetricIntersectionOfWalls &p) finished");
45 logger(
DEBUG,
"~AxisymmetricIntersectionOfWalls() finished.");
59 return *(other.
copy());
91 tangentialUnitVector /= tangential;
94 Vec3D transformedPosition =
Vec3D(tangential, 0.0, normal);
95 Vec3D transformedNormal;
106 normalReturn = transformedNormal.
Z *
getOrientation() + transformedNormal.
X * tangentialUnitVector;
134 return "AxisymmetricIntersectionOfWalls";
unsigned int getIndex() const
Returns the index of the object in the handler.
void setNormal(Vec3D normal)
Sets the normal vector between the two interacting objects.
Mdouble X
the vector components
A IntersectionOfWalls is convex polygon defined as an intersection of InfiniteWall's.
Logger< MERCURY_LOGLEVEL > logger("MercuryKernel")
void setOverlap(Mdouble overlap)
Set the overlap between the two interacting object.
BaseInteraction * getInteraction(BaseInteractable *P, BaseInteractable *I, Mdouble timeStamp)
Returns the Interaction between the BaseInteractable's P and I.
void write(std::ostream &os) const final
outputs wall
bool getDistanceAndNormal(const BaseParticle &P, Mdouble &distance, Vec3D &normal_return) const final
Computes the distance from the wall for a given BaseParticle and returns true if there is a collision...
BaseInteraction * getInteractionWith(BaseParticle *P, Mdouble timeStamp, InteractionHandler *interactionHandler) final
Get the interaction between this AxisymmetricIntersectionOfWalls and a given BaseParticle at a given ...
void setContactPoint(Vec3D contactPoint)
Set the location of the contact point between the two interacting objects.
std::string getName() const final
Returns the name of the object.
bool getDistanceAndNormal(const BaseParticle &p, Mdouble &distance, Vec3D &normal_return) const override
Compute the distance from the wall for a given BaseParticle and return if there is a collision...
static Mdouble dot(const Vec3D &a, const Vec3D &b)
Calculates the dot product of two Vec3D: .
void setDistance(Mdouble distance)
Sets the interaction distance between the two interacting objects.
const Vec3D & getPosition() const
Returns the position of this BaseInteractable.
const Vec3D & getOrientation() const
Returns the orientation of this BaseInteractable.
Stores information about interactions between two interactable objects; often particles but could be ...
static Mdouble getLength(const Vec3D &a)
Calculates the length of a Vec3D: .
Mdouble getWallInteractionRadius() const
Returns the interaction radius for interaction with walls. See also BaseParticle::getInteractionRadiu...
void read(std::istream &is)
Reads an IntersectionOfWalls from an input stream, for example a restart file.
AxisymmetricIntersectionOfWalls * copy() const final
Wall copy method. It calls the copy constructor of this Wall, useful for polymorphism.
Container to store Interaction objects.
const Vec3D & getNormal() const
Gets the normal vector between the two interacting objects.
Mdouble getRadius() const
Returns the particle's radius_.
AxisymmetricIntersectionOfWalls & operator=(const AxisymmetricIntersectionOfWalls &other)
Copy assignment operator.
Mdouble getOverlap() const
Returns a Mdouble with the current overlap between the two interacting objects.
void read(std::istream &is) final
reads wall
~AxisymmetricIntersectionOfWalls()
Destructor.
AxisymmetricIntersectionOfWalls()
Default constructor.
A AxisymmetricIntersectionOfWalls is a axisymmetric wall, defined by rotating a twodimensional Inters...
void write(std::ostream &os) const
Writes an IntersectionOfWalls to an output stream, for example a restart file.
Implementation of a 3D vector (by Vitaliy).