|
AGX Dynamics 2.42.3.0
|
Interface to write added mass matrices for one or two rigid bodies. More...
#include <AddedMassInteraction.h>
Inheritance diagram for agx::AddedMassInteraction:Classes | |
| class | Matrix6x6 |
| 6x6 matrix class with blockwise interface to get or set 3x3 matrices: [ M(0, 0) M(0, 1) ] [ M(1, 0) M(1, 1) ] More... | |
| class | RigidBodyStorage |
| Class containing a rigid body and the 6x6 matrix to be written in the diagonal of the system matrix. More... | |
Public Member Functions | |
| AddedMassInteraction (agx::RigidBody *rb1, agx::RigidBody *rb2=nullptr) | |
| Construct given either one or two rigid bodies. | |
| AGXSTREAM_DECLARE_SERIALIZABLE_BASE (agx::AddedMassInteraction) | |
| agx::AddedMassInteraction::Matrix6x6 & | getOffDiagonalBlock () |
| Off diagonal block (6x6 matrix). | |
| const agx::AddedMassInteraction::Matrix6x6 & | getOffDiagonalBlock () const |
| Off diagonal block (6x6 matrix). | |
| virtual agx::RigidBody * | getRigidBody1 () const override |
| agx::AddedMassInteraction::RigidBodyStorage * | getRigidBody1Storage () |
| Storage of 'rb1' from construction containing the rigid body and a 6x6 matrix block. | |
| const agx::AddedMassInteraction::RigidBodyStorage * | getRigidBody1Storage () const |
| Storage of 'rb1' from construction containing the rigid body and a 6x6 matrix block. | |
| virtual agx::RigidBody * | getRigidBody2 () const override |
| agx::AddedMassInteraction::RigidBodyStorage * | getRigidBody2Storage () |
| Storage of 'rb2' from construction containing the rigid body and a 6x6 matrix block. | |
| const agx::AddedMassInteraction::RigidBodyStorage * | getRigidBody2Storage () const |
| Storage of 'rb2' from construction containing the rigid body and a 6x6 matrix block. | |
| void | translateWorldDiagonalBlock (const agx::Vec3 cmOffset, agx::AddedMassInteraction::Matrix6x6 &matrix) const |
| Transform the mass matrix according to a translate of center of mass. | |
| void | translateWorldDiagonalBlock (const agx::Vec3 cmOffsetRb1, const agx::Vec3 cmOffsetRb2, agx::AddedMassInteraction::Matrix6x6 &matrix) const |
Public Member Functions inherited from agx::StrongInteraction | |
| virtual void | addNlCallbacks (agx::SparseRangeReal &sparseRangeReal) const |
| Interface for non-linear callback from solver. | |
| virtual void | addNotification () override |
| Called when added to a simulation. | |
| AGXSTREAM_DECLARE_ABSTRACT_SERIALIZABLE (agx::StrongInteraction) | |
| agx::Bool | getEnable () const |
| virtual agx::RigidBody * | getRigidBody1 () const =0 |
| virtual agx::RigidBody * | getRigidBody2 () const =0 |
| agx::Bool | getValid () const |
| virtual void | postSystemCallback (agx::DynamicsSystem *dynamicsSystem) override |
| Called after the solver is done. | |
| virtual void | prepare () |
| Prepares for solve. | |
| virtual void | preSystemCallback (agx::DynamicsSystem *dynamicsSystem) override |
| Called before solver executes. | |
| virtual void | removeNotification () override |
| Called when removed from a simulation. | |
| virtual void | render (agxRender::RenderManager *mgr, float scale) |
| Render the interaction. | |
| void | setEnable (agx::Bool enable) |
| Enable or disable this interaction. | |
| virtual void | writeMatrixData (agx::StrongInteraction::MatrixData rb1DiagonalBlock, agx::StrongInteraction::MatrixData rb2DiagonalBlock, agx::StrongInteraction::MatrixData offDiagonalBlock)=0 |
| Write data for dynamic bodies. | |
| virtual void | writeRhs (agx::Physics::RigidBodyPtr rb1, agx::Real *rb1Rhs, agx::Physics::RigidBodyPtr rb2, agx::Real *rb2Rhs, agx::Bool isRestingSolve)=0 |
| Write data to the right hand side, for dynamic bodies. | |
Public Member Functions inherited from agx::Interaction | |
| Interaction () | |
| Default constructor. | |
| AGXSTREAM_DECLARE_SERIALIZABLE_BASE (agx::Interaction) | |
| const agx::Name & | getName () const |
| agx::PropertyContainer * | getPropertyContainer () |
| const agx::PropertyContainer * | getPropertyContainer () const |
| agxSDK::SimulationProxy * | getSimulationProxy () const |
| agx::Bool | hasPropertyContainer () const |
| virtual void | postSystemCallback (agx::DynamicsSystem *) |
| Called after all post step events, after solve. | |
| virtual void | preSystemCallback (agx::DynamicsSystem *) |
| Called after all pre step events, before solve. | |
| void | setName (const agx::Name &name) |
| Name this interaction. | |
| void | setPropertyContainer (agx::PropertyContainer *propertyContainer) |
| Assign a new property container. | |
| virtual void | updateForce (agx::DynamicsSystem *dynamicsSystem) |
| This virtual method is implemented so that it computes the interaction forces on all the physical bodies implicated. | |
Public Member Functions inherited from agx::Referenced | |
| Referenced () | |
| Default constructor. | |
| Referenced (const Referenced &) | |
| template<typename T > | |
| T * | as () |
| Subclass casting. | |
| template<typename T > | |
| const T * | as () const |
| template<typename T > | |
| T * | asSafe () |
| Safe subclass casting, return nullptr if template type does not match. | |
| template<typename T > | |
| const T * | asSafe () const |
| int | getReferenceCount () const |
| template<typename T > | |
| bool | is () const |
| Subclass test. | |
| Referenced & | operator= (const Referenced &) |
| Assignment operator. Will increment the number of references to the referenced object. | |
| void | reference (void *ptr=nullptr) const |
| Explicitly increment the reference count by one, indicating that this object has another pointer which is referencing it. | |
| void | unreference (void *ptr=nullptr) const |
| Decrement the reference count by one, indicating that a pointer to this object is referencing it. | |
| void | unreference_nodelete () const |
| Decrement the reference count by one, indicating that a pointer to this object is referencing it. | |
Public Member Functions inherited from agxStream::Serializable | |
| virtual | ~Serializable () |
| Destructor for normal C++ use but hidden from SWIG bindings. | |
| virtual const char * | getClassName () const |
| bool | getEnableSerialization () const |
| bool | getEnableUuidGeneration () |
| agx::UInt32 | getIndex () const |
| This index is given at creation of this object. | |
| virtual StorageAgent * | getStorageAgent () const =0 |
| agx::Uuid | getUuid () const |
| bool | isFinished () const |
| void | setEnableSerialization (bool flag) |
| Set to false to disable serialization of this object. | |
| void | setFinished () |
| Tells this class that it is restored correctly and should not be deleted during destruction of an Archive. | |
| void | setUuid (const agx::Uuid &uuid) |
| Explicitly set a Uuid on a serializable object. | |
Static Public Member Functions | |
| static agxStream::Serializable * | create (agxStream::InputArchive &) |
Static Public Member Functions inherited from agx::Interaction | |
| static agxStream::Serializable * | create (agxStream::InputArchive &) |
Static Public Member Functions inherited from agx::Referenced | |
| template<typename T > | |
| static bool | ValidateCast (const Referenced *object) |
Static Public Member Functions inherited from agxStream::Serializable | |
| static void | setEnableUuidGeneration (bool flag) |
| Specify if there should be UUID:s generated for each new Serializable object. By default it is enabled. | |
Protected Member Functions | |
| AddedMassInteraction () | |
| Default constructor used by serialization. | |
| virtual | ~AddedMassInteraction () |
| Reference counted object, protected destructor. | |
| virtual void | prepare () override |
| Checks if this interaction is valid for the solver. | |
| virtual void | writeMatrixData (agx::StrongInteraction::MatrixData rb1DiagonalBlock, agx::StrongInteraction::MatrixData rb2DiagonalBlock, agx::StrongInteraction::MatrixData offDiagonalBlock) override |
| Call from the direct solver with pointers where to write diagonal block(s) and the off diagonal block. | |
| virtual void | writeRhs (agx::Physics::RigidBodyPtr rb1, agx::Real *rb1Rhs, agx::Physics::RigidBodyPtr rb2, agx::Real *rb2Rhs, agx::Bool isRestingSolve) override |
| Right hand side update. | |
Protected Member Functions inherited from agx::StrongInteraction | |
| StrongInteraction () | |
| Construct given one or two rigid bodies. | |
| virtual | ~StrongInteraction () |
| Reference counted object, protected destructor. | |
| virtual void | restore (agxStream::InputArchive &in) override |
| Restore local content. | |
| void | setValid (agx::Bool valid) |
| Valid if enable and configuration is ok for solver. | |
| virtual void | store (agxStream::OutputArchive &out) const override |
| Store local content. | |
Protected Member Functions inherited from agx::Interaction | |
| virtual | ~Interaction () |
| Reference counted object, protected destructor. | |
| virtual void | addNotification () |
| Called when added to a simulation. | |
| virtual void | removeNotification () |
| Called when removed from a simulation. | |
| virtual void | setSimulation (agxSDK::Simulation *simulation) |
| Assign simulation. | |
Protected Member Functions inherited from agx::Referenced | |
| virtual | ~Referenced () |
| Destructor. | |
| void | allocateObserverVector () const |
| void | deleteUsingDeleteHandler () const |
Protected Member Functions inherited from agxStream::Serializable | |
| Serializable () | |
| Default constructor. | |
| Serializable (const Serializable &other) | |
| Copy constructor. | |
| void | generateUuid () |
Additional Inherited Members | |
Static Protected Member Functions inherited from agx::Referenced | |
| static DeleteHandler * | getDeleteHandler () |
| static void | setDeleteHandler (DeleteHandler *handler) |
| Internal: Set a DeleteHandler to which deletion of all referenced counted objects will be delegated to. | |
Protected Attributes inherited from agx::Referenced | |
| Mutex | m_mutex |
| ObserverContainer | m_observers |
| AtomicValue | m_refCount |
Interface to write added mass matrices for one or two rigid bodies.
For two dynamic rigid bodies an off diagonal block may be written as well: [ M_0 ] [ . . ] [ . . ] [ . . ] [ A_i0 M_i ] [ . ] [ . ] [ . ]
Definition at line 39 of file AddedMassInteraction.h.
| agx::AddedMassInteraction::AddedMassInteraction | ( | agx::RigidBody * | rb1, |
| agx::RigidBody * | rb2 = nullptr |
||
| ) |
Construct given either one or two rigid bodies.
| rb1 | - first rigid body |
| rb2 | - second rigid body |
|
protected |
Default constructor used by serialization.
|
protectedvirtual |
Reference counted object, protected destructor.
| agx::AddedMassInteraction::AGXSTREAM_DECLARE_SERIALIZABLE_BASE | ( | agx::AddedMassInteraction | ) |
|
inlinestatic |
Definition at line 307 of file AddedMassInteraction.h.
| AddedMassInteraction::Matrix6x6 & agx::AddedMassInteraction::getOffDiagonalBlock | ( | ) |
Off diagonal block (6x6 matrix).
Defines how acceleration of the first body results in a force acting on the second body.
Definition at line 436 of file AddedMassInteraction.h.
| const AddedMassInteraction::Matrix6x6 & agx::AddedMassInteraction::getOffDiagonalBlock | ( | ) | const |
Off diagonal block (6x6 matrix).
Defines how acceleration of the first body results in a force acting on the second body.
Definition at line 431 of file AddedMassInteraction.h.
|
overridevirtual |
Implements agx::StrongInteraction.
| agx::AddedMassInteraction::RigidBodyStorage * agx::AddedMassInteraction::getRigidBody1Storage | ( | ) |
Storage of 'rb1' from construction containing the rigid body and a 6x6 matrix block.
| const agx::AddedMassInteraction::RigidBodyStorage * agx::AddedMassInteraction::getRigidBody1Storage | ( | ) | const |
Storage of 'rb1' from construction containing the rigid body and a 6x6 matrix block.
|
overridevirtual |
Implements agx::StrongInteraction.
| agx::AddedMassInteraction::RigidBodyStorage * agx::AddedMassInteraction::getRigidBody2Storage | ( | ) |
Storage of 'rb2' from construction containing the rigid body and a 6x6 matrix block.
| const agx::AddedMassInteraction::RigidBodyStorage * agx::AddedMassInteraction::getRigidBody2Storage | ( | ) | const |
Storage of 'rb2' from construction containing the rigid body and a 6x6 matrix block.
|
overrideprotectedvirtual |
Checks if this interaction is valid for the solver.
Reimplemented from agx::StrongInteraction.
| void agx::AddedMassInteraction::translateWorldDiagonalBlock | ( | const agx::Vec3 | cmOffset, |
| agx::AddedMassInteraction::Matrix6x6 & | matrix | ||
| ) | const |
Transform the mass matrix according to a translate of center of mass.
| void agx::AddedMassInteraction::translateWorldDiagonalBlock | ( | const agx::Vec3 | cmOffsetRb1, |
| const agx::Vec3 | cmOffsetRb2, | ||
| agx::AddedMassInteraction::Matrix6x6 & | matrix | ||
| ) | const |
|
overrideprotectedvirtual |
Call from the direct solver with pointers where to write diagonal block(s) and the off diagonal block.
rb1DiagonalBlock and rb2DiagonalBlock can/will come in a different order than what m_rb1Storage and m_rb2Storage are. | rb1DiagonalBlock | - block for what the solver thinks is rb1 |
| rb2DiagonalBlock | - block for what the solver thinks is rb2 (data is zero if the solver doesn't need the data to be written) |
| offDiagonalBlock | - off diagonal block. Location of this block in the system matrix is defined by blockRowIndex fields in rb1DiagonalBlock and rb2DiagonalBlock. |
Implements agx::StrongInteraction.
|
overrideprotectedvirtual |
Right hand side update.
Implements agx::StrongInteraction.