Itasca C++ Interface
Loading...
Searching...
No Matches
Public Member Functions | Static Public Attributes | List of all members
pfc::IFWall Class Referenceabstract

Interface for a faceted wall. More...

#include <ifwall.h>

Public Member Functions

virtual IThinggetIThing ()=0
 Return an IThing interface for this object.
 
virtual const IThinggetIThing () const =0
 Return a const IThing interface for this object.
 
virtual IBodygetIBody ()=0
 Return an IBody pointer.
 
virtual const IBodygetIBody () const =0
 Return a const IBody pointer.
 
virtual IString getName () const =0
 Return the QString name.
 
virtual IFWallgetNextIFWall ()=0
 Return the next IFWall object in the global list, or 0 if it is the last set.
 
virtual const IFWallgetNextIFWall () const =0
 Return the next IFWall object in the global list, or 0 if it is the last set.
 
virtual IHalfFacetgetFirstIHalfFacet ()=0
 Return the first IHalfFacet associated with this FWall.
 
virtual const IHalfFacetgetFirstIHalfFacet () const =0
 Return the const first IHalfFacet associated with this FWall.
 
virtual DExtent3 getExtent () const =0
 Return the DExtent3 extent of the faceted wall.
 
virtual double getCutoffAng () const =0
 Get the user defined cutoff angle for contact resolution - in radians.
 
virtual void setCutoffAng (const double &d)=0
 Set the user defined cutoff angle for contact resolution - provided in radians.
 
virtual IContainergetFWallAsFacetContainer ()=0
 Return the IContainer of facets associated with a wall.
 
virtual const IContainergetFWallAsFacetContainer () const =0
 Return the IContainer of facets associated with a wall.
 
virtual IContainergetFWallAsVertexContainer ()=0
 Return the IContainer of vertices associated with a wall.
 
virtual const IContainergetFWallAsVertexContainer () const =0
 Return the IContainer of vertices associated with a wall.
 
virtual int getNumberFacets () const =0
 Return the number of IHalfFacets.
 
virtual void getFacetList (FArray< IHalfFacet * > *ret)=0
 Return a list of IHalfFacets.
 
virtual void getFacetList (FArray< const IHalfFacet * > *ret) const =0
 Return a list of const IHalfFacets.
 
virtual const IHalfFacetfindFacetWithID (uint64 id) const =0
 Find the const IHalfFacet with ID id;.
 
virtual IHalfFacetfindFacetWithID (uint64 id)=0
 Find the IHalfFacet with ID id.
 
virtual const IHalfFacetfindClosestFacet (const DVect &pos, const double &radius=limits< double >::max()) const =0
 Find the IHalfFacet closest to pos.
 
virtual IHalfFacetfindClosestFacet (const DVect &pos, const double &radius=limits< double >::max())=0
 Find the const IHalfFacet closest to pos.
 
virtual void removeIHalfFacet (IHalfFacet *fac)=0
 Remove the IHalfFacet from the FWall.
 
virtual IHalfFacetaddFacetFromVertices (DVect verts[dim], QString &error, uint64 id=0, bool ignoreEnd=false, bool allowStar=false)=0
 Add a facet from vertices.
 
virtual void doValidate ()=0
 Cause a validate, updating convexity.
 
virtual void getVertexList (FArray< IHalfVertex * > *ret)=0
 Return a list of IHalfVertex objects.
 
virtual void getVertexList (FArray< const IHalfVertex * > *ret) const =0
 Return a list of const IHalfVertex object.
 
virtual const IHalfVertexfindVertexWithID (uint64 id) const =0
 Find the const IHalfVertex with ID id;.
 
virtual IHalfVertexfindVertexWithID (uint64 id)=0
 Find the IHalfVertex with ID id.
 
virtual const IHalfVertexfindClosestVertex (const DVect &pos, const double &radius=limits< double >::max()) const =0
 Find the IHalfVertex closest to pos.
 
virtual IHalfVertexfindClosestVertex (const DVect &pos, const double &radius=limits< double >::max())=0
 Find the const IHalfFacet closest to pos.
 
virtual DVect getPosition () const =0
 Return the wall position. This is implementation dependent.
 
virtual DVect getCentRot () const =0
 Return the center of rotation - the point about which the wall can rotate.
 
virtual DVect getVelocity () const =0
 Return the translational velocity of the wall.
 
virtual DAVect getAngVelocity () const =0
 Return the angular velocity of the wall.
 
virtual DVect getDisplacement () const =0
 Return the accumulated displacement of the point corresponding to position.
 
virtual DVect getForce () const =0
 Return the sum of all contact forces to which the wall does not react.
 
virtual DVect getContactForce () const =0
 
virtual DAVect getMoment () const =0
 Return the moment of all contacts with with wall.
 
virtual DAVect getContactMoment () const =0
 
virtual Quat getOrient () const =0
 Return the current orientation.
 
virtual bool getIsClosed () const =0
 Return a boolean indicating whether or not this is a closed wall.
 
virtual bool getIsIn (const DVect &d) const =0
 Return a bool indicating whether or not a point is inside a wall. If not closed then returns false.
 
virtual bool getIsConvex () const =0
 Retuen boolean indicating convex. Returns false if not closed.
 
virtual void setPosition (const DVect &p)=0
 Set the wall position to p.
 
virtual void setCentRot (const DVect &p)=0
 Set the wall center of rotation to p.
 
virtual void setVelocity (const DVect &p)=0
 Set the wall translational velocity to p.
 
virtual void setAngVelocity (const DAVect &p)=0
 Set the wall angular velocity to p.
 
virtual void setDisplacement (const DVect &v)=0
 Set the wall accumulated displacement to v.
 
virtual void setContactForce (const DVect &v)=0
 Set the contact force.
 
virtual void setContactMoment (const DAVect &v)=0
 Set the contact moment.
 
virtual void setOrient (const Quat &q)=0
 Set the orientation.
 
virtual bool setProperty (const QString &name, const QVariant &v)=0
 Set the properties in prop to v for all PieceMechanicals that are in this wall.
 
virtual void rotate (const DVect &rotp, const DVect &axis, const double &w, bool update=true, bool noThrow=false)=0
 
virtual bool getVertsHaveVel () const =0
 Get the boolean indicating whether or not the vertices have velocities.
 
virtual void updateFWallPosition (IHalfVertex *v=0, DVect *prevPos=0)=0
 Update the position of the wall centroid.
 
virtual int getFragmentIndex () const =0
 Return the wall fragment index.
 
virtual void setFragmentIndex (int ind)=0
 Set the wall fragment index.
 
virtual void getContactList (FArray< IContact * > *ret, const TType &type=0, const IPiece *p2=0)=0
 Return a list of IContacts.
 
virtual void getContactList (FArray< const IContact * > *ret, const TType &type=0, const IPiece *p2=0) const =0
 Return a list of const IContacts.
 
virtual double getServoGainFactor () const =0
 Get wall servo gain relaxation factor.
 
virtual double getServoGain () const =0
 Get wall servo gain.
 
virtual double getServoVmax () const =0
 Get wall servo cap velocity.
 
virtual DVect getServoForce () const =0
 Get wall servo force.
 
virtual bool getServoActive () const =0
 Get wall servo activity status.
 
virtual int getServoGainUpdate () const =0
 Get wall servo gain update interval.
 
virtual void setServoGainFactor (const double &d)=0
 Set servo gain relaxation factor.
 
virtual void setServoGain (const double &d)=0
 Set servo gain.
 
virtual void setServoVmax (const double &d)=0
 Set servo cap velocity.
 
virtual void setServoForce (const DVect &f)=0
 Set servo force.
 
virtual void setServoActive (bool b)=0
 Set servo active status.
 
virtual void setServoGainUpdate (int i)=0
 Set servo gain update interval.
 

Static Public Attributes

static const TType type_ = 0x4c90658e
 TType for type casting.
 

Detailed Description

Interface for a faceted wall.

This is the interface for a faceted wall. A faceted wall is a wall that is composed of triangular facets. Each facet is composed of three edges and three vertices. A half-edge data structure is used to efficiently store and retrieve adjacency information (e.g., facets adjacent to another facet, facets that share a vertex, etc.). This implementation requires that a FWall is a manifold, orientable triangular mesh throughout. The position of a FWall is the average location of all vertices. As implemented, FWalls must exist within the model domain. When an FWall intersects a domain boundary with reflect boundary conditions an exception occurs. When an FWall intersects a domain boundary with any other boundary condition the FWall translational and angular velocities are set to 0. The vertices of an FWall can be moved and assigned a translational velocity. The user is responsible for maintaining the manifold/orientable nature of the triangular mesh in these cases. When a vertex has a translational velocity then the FWall translational/angular velocities are set to 0.

Member Function Documentation

◆ rotate()

virtual void pfc::IFWall::rotate ( const DVect & rotp,
const DVect & axis,
const double & w,
bool update = true,
bool noThrow = false )
pure virtual

Rotate the wall about the axis axis through the rotation point rotp by the angle w (in radians). If orientation tracking is enabled then it is updated when the update boolean is set to true


The documentation for this class was generated from the following file: