Description
Contact segment for FEA elements that use XYZ nodes.
Used to 'tessellate' FEA meshes with 1-D elements for collision purposes.
#include <ChContactSurfaceSegmentSet.h>
Inherits chrono::ChContactable_2vars< T1, T2 >.
Public Member Functions | |
ChContactSegmentXYZ (const std::array< std::shared_ptr< ChNodeFEAxyz >, 2 > &nodes, ChContactSurface *container=nullptr) | |
void | SetNodes (const std::array< std::shared_ptr< ChNodeFEAxyz >, 2 > &nodes) |
Set the FEA nodes for which this is a proxy. | |
void | SetNodeOwnership (const ChVector2b &owns_node) |
Set node ownership. | |
std::shared_ptr< ChNodeFEAxyz > | GetNode (int i) const |
Acccess the specified FEA node for which this is a proxy. | |
bool | OwnsNode (int i) const |
Returns true if the specified node is owned by this segment. | |
ChContactSurface * | GetContactSurface () const |
Get the contact surface container. | |
void | SetContactSurface (ChContactSurface *contact_surface) |
Set the contact surface container. | |
virtual ChContactable::eChContactableType | GetContactableType () const override |
Return the type of contactable (here, a contactable with 2 variables, each with 3 DOFs). | |
virtual ChVariables * | GetVariables1 () override |
Access variables for node 1. | |
virtual ChVariables * | GetVariables2 () override |
Access variables for node 2. | |
virtual bool | IsContactActive () override |
Indicate if the object must be considered in collision detection. | |
virtual int | GetContactableNumCoordsPosLevel () override |
Get the number of DOFs affected by this object (position part). | |
virtual int | GetContactableNumCoordsVelLevel () override |
Get the number of DOFs affected by this object (speed part). | |
virtual void | ContactableGetStateBlockPosLevel (ChState &x) override |
Get all the DOFs packed in a single vector (position part). | |
virtual void | ContactableGetStateBlockVelLevel (ChStateDelta &w) override |
Get all the DOFs packed in a single vector (speed part). | |
virtual void | ContactableIncrementState (const ChState &x, const ChStateDelta &dw, ChState &x_new) override |
Increment the provided state of this object by the given state-delta increment. More... | |
virtual ChVector3d | GetContactPoint (const ChVector3d &loc_point, const ChState &state_x) override |
Express the local point in absolute frame, for the given state position. | |
virtual ChFrame | GetCollisionModelFrame () override |
Return the frame of the associated collision model relative to the contactable object. | |
virtual ChVector3d | GetContactPointSpeed (const ChVector3d &loc_point, const ChState &state_x, const ChStateDelta &state_w) override |
Get the absolute speed of a local point attached to the contactable. More... | |
virtual ChVector3d | GetContactPointSpeed (const ChVector3d &abs_point) override |
Get the absolute speed of point abs_point if attached to the surface. | |
virtual void | ContactForceLoadResidual_F (const ChVector3d &F, const ChVector3d &T, const ChVector3d &abs_point, ChVectorDynamic<> &R) override |
Apply the force & torque, expressed in absolute reference, applied in pos, to the coordinates of the variables. More... | |
virtual void | ContactComputeQ (const ChVector3d &F, const ChVector3d &T, const ChVector3d &point, const ChState &state_x, ChVectorDynamic<> &Q, int offset) override |
Compute a contiguous vector of generalized forces Q from a given force & torque at the given point. More... | |
virtual void | ComputeJacobianForContactPart (const ChVector3d &abs_point, ChMatrix33<> &contact_plane, type_constraint_tuple &jacobian_tuple_N, type_constraint_tuple &jacobian_tuple_U, type_constraint_tuple &jacobian_tuple_V, bool second) override |
Compute the jacobian(s) part(s) for this contactable item. More... | |
virtual double | GetContactableMass () override |
Return mass of contactable object. | |
virtual ChPhysicsItem * | GetPhysicsItem () override |
This is only for backward compatibility. | |
double | ComputeUfromP (const ChVector3d &P) |
Compute u of given point with respect to the segment. More... | |
Member Function Documentation
◆ ComputeJacobianForContactPart()
|
overridevirtual |
Compute the jacobian(s) part(s) for this contactable item.
For example, if the contactable is a ChBody, this should update the corresponding 1x6 jacobian.
◆ ComputeUfromP()
double chrono::fea::ChContactSegmentXYZ::ComputeUfromP | ( | const ChVector3d & | P | ) |
Compute u of given point with respect to the segment.
u is the line parameter of the point projection onto the segment, in the node1->node2 direction, and such that u=0 indicates that P projects into node1.
◆ ContactableIncrementState()
|
overridevirtual |
Increment the provided state of this object by the given state-delta increment.
Compute: x_new = x + dw.
Implements chrono::ChContactable.
◆ ContactComputeQ()
|
overridevirtual |
Compute a contiguous vector of generalized forces Q from a given force & torque at the given point.
Used for computing stiffness matrix (square force jacobian) by backward differentiation. The force and its application point are specified in the global frame. Each object must set the entries in Q corresponding to its variables, starting at the specified offset. If needed, the object states must be extracted from the provided state position.
Implements chrono::ChContactable.
◆ ContactForceLoadResidual_F()
|
overridevirtual |
Apply the force & torque, expressed in absolute reference, applied in pos, to the coordinates of the variables.
Force for example could come from a penalty model.
Implements chrono::ChContactable.
◆ GetContactPointSpeed()
|
overridevirtual |
Get the absolute speed of a local point attached to the contactable.
The given point is assumed to be expressed in the local frame of this object. This function must use the provided states.
Implements chrono::ChContactable.
The documentation for this class was generated from the following files:
- /builds/uwsbel/chrono/src/chrono/fea/ChContactSurfaceSegmentSet.h
- /builds/uwsbel/chrono/src/chrono/fea/ChContactSurfaceSegmentSet.cpp