|
OOFEM 3.0
|
#include <rigidarmnode.h>
Public Member Functions | |
| RigidArmNode (int n, Domain *aDomain) | |
| virtual | ~RigidArmNode (void) |
| Destructor. | |
| void | initializeFrom (InputRecord &ir, int priority) override |
| void | postInitialize () override |
| Performs post initialization steps. Called after all components are created and initialized. | |
| void | updateLocalNumbering (EntityRenumberingFunctor &f) override |
| int | checkConsistency () override |
| void | computeMasterContribution (std::map< DofIDItem, IntArray > &masterDofID, std::map< DofIDItem, FloatArray > &masterContribution) |
| const char * | giveClassName () const override |
| const char * | giveInputRecordName () const override |
| bool | isDofTypeCompatible (dofType type) const override |
| Returns true if dof of given type is allowed to be associated to receiver. | |
| Public Member Functions inherited from oofem::Node | |
| Node (int n, Domain *aDomain) | |
| void | setCoordinates (FloatArray coords) |
| virtual double | giveUpdatedCoordinate (int ic, TimeStep *tStep, double scale=1.) |
| virtual void | giveUpdatedCoordinates (FloatArray &answer, TimeStep *tStep, double scale=1.) |
| bool | hasLocalCS () |
| Returns nonzero if node has prescribed local coordinate system. | |
| FloatMatrix * | giveLocalCoordinateTriplet () |
| bool | hasSameLCS (Node *remote) |
| bool | computeL2GTransformation (FloatMatrix &answer, const IntArray &dofIDArry) override |
| bool | requiresTransformation () override |
| void | computeLoadVector (FloatArray &answer, Load *load, CharType type, TimeStep *tStep, ValueModeType mode) override |
| void | updateYourself (TimeStep *tStep) override |
| void | initializeFrom (InputRecord &ir) override |
| void | initializeFinish () override |
| Performs post initialization steps. | |
| void | giveInputRecord (DynamicInputRecord &input) override |
| void | printYourself () override |
| Prints receiver state on stdout. Useful for debugging. | |
| virtual int | giveQcNodeType () |
| void | saveContext (DataStream &stream, ContextMode mode) override |
| void | restoreContext (DataStream &stream, ContextMode mode) override |
| void | drawYourself (oofegGraphicContext &gc, TimeStep *tStep) override |
| Public Member Functions inherited from oofem::DofManager | |
| std::vector< Dof * >::iterator | begin () |
| std::vector< Dof * >::iterator | end () |
| std::vector< Dof * >::const_iterator | begin () const |
| std::vector< Dof * >::const_iterator | end () const |
| DofManager (int n, Domain *aDomain) | |
| virtual | ~DofManager () |
| Destructor. | |
| Dof * | giveDofWithID (int dofID) const |
| int | giveNumberOfDofs () const |
| void | askNewEquationNumbers (TimeStep *tStep) |
| Renumbers all contained DOFs. | |
| int | giveNumberOfPrimaryMasterDofs (const IntArray &dofIDArray) const |
| void | giveLocationArray (const IntArray &dofIDArry, IntArray &locationArray, const UnknownNumberingScheme &s) const |
| void | giveMasterDofIDArray (const IntArray &dofIDArry, IntArray &masterDofIDs) const |
| void | giveCompleteLocationArray (IntArray &locationArray, const UnknownNumberingScheme &s) const |
| void | giveCompleteMasterDofIDArray (IntArray &dofIDArray) const |
| std::vector< Dof * >::const_iterator | findDofWithDofId (DofIDItem dofID) const |
| void | giveUnknownVector (FloatArray &answer, const IntArray &dofMask, ValueModeType mode, TimeStep *tStep, bool padding=false) |
| void | giveUnknownVector (FloatArray &answer, const IntArray &dofMask, PrimaryField &field, ValueModeType mode, TimeStep *tStep, bool padding=false) |
| void | giveCompleteUnknownVector (FloatArray &answer, ValueModeType mode, TimeStep *tStep) |
| void | giveUnknownVectorOfType (FloatArray &answer, UnknownType ut, ValueModeType mode, TimeStep *tStep) |
| virtual void | givePrescribedUnknownVector (FloatArray &answer, const IntArray &dofMask, ValueModeType mode, TimeStep *tStep) |
| bool | computeM2GTransformation (FloatMatrix &answer, const IntArray &dofIDArry) |
| virtual bool | computeM2LTransformation (FloatMatrix &answer, const IntArray &dofIDArry) |
| IntArray * | giveLoadArray () |
| void | setLoadArray (IntArray &load) |
| double | giveCoordinate (int i) const |
| const FloatArray & | giveCoordinates () const |
| void | setCoordinates (const FloatArray &coords) |
| Set coordinates. | |
| const IntArray * | giveForcedDofIDs () |
| std ::map< int, int > * | giveDofTypeMap () |
| std ::map< int, int > * | giveMasterMap () |
| std ::map< int, int > * | giveBcMap () |
| std ::map< int, int > * | giveIcMap () |
| void | printOutputAt (FILE *file, TimeStep *tStep) override |
| bool | isBoundary () |
| void | setBoundaryFlag (bool isBoundary) |
| virtual bool | hasAnySlaveDofs () |
| virtual bool | giveMasterDofMans (IntArray &masters) |
| void | setNumberOfDofs (int _ndofs) |
| void | appendDof (Dof *dof) |
| void | removeDof (DofIDItem id) |
| bool | hasDofID (DofIDItem id) const |
| int | giveGlobalNumber () const |
| int | giveLabel () const |
| void | setGlobalNumber (int newNumber) |
| dofManagerParallelMode | giveParallelMode () const |
| void | setParallelMode (dofManagerParallelMode _mode) |
| const IntArray * | givePartitionList () |
| void | setPartitionList (const IntArray *_p) |
| void | removePartitionFromList (int _part) |
| Removes given partition from receiver list. | |
| void | mergePartitionList (IntArray &_p) |
| Merges receiver partition list with given lists. | |
| int | givePartitionsConnectivitySize () |
| bool | isLocal () |
| Returns true if receiver is locally maintained. | |
| bool | isShared () |
| Returns true if receiver is shared. | |
| bool | isNull () |
| Returns true if receiver is shared. | |
| Public Member Functions inherited from oofem::FEMComponent | |
| FEMComponent (int n, Domain *d) | |
| virtual | ~FEMComponent ()=default |
| Virtual destructor. | |
| Domain * | giveDomain () const |
| virtual void | setDomain (Domain *d) |
| int | giveNumber () const |
| void | setNumber (int num) |
| virtual Interface * | giveInterface (InterfaceType t) |
| std::string | errorInfo (const char *func) const |
| Returns string for prepending output (used by error reporting macros). | |
Protected Attributes | |
| IntArray | masterMask |
| int | masterDofMngr |
| Number of master DofManager (Node). | |
| Node * | masterNode |
| Pointer to master Node. | |
| Protected Attributes inherited from oofem::Node | |
| std::unique_ptr< FloatMatrix > | localCoordinateSystem |
| Protected Attributes inherited from oofem::DofManager | |
| FloatArray | coordinates |
| Array storing nodal coordinates. | |
| std::vector< Dof * > | dofArray |
| Array of DOFs. | |
| IntArray | loadArray |
| List of applied loads. | |
| bool | isBoundaryFlag |
| bool | hasSlaveDofs |
| Flag indicating whether receiver has slave DOFs. | |
| int | globalNumber |
| dofManagerParallelMode | parallel_mode |
| IntArray | partitions |
| IntArray | dofidmask |
| List of additional dof ids to include. | |
| std ::map< int, int > | dofTypemap |
| Map from DofIDItem to dofType. | |
| std ::map< int, int > | dofMastermap |
| Map from DofIDItem to master node. | |
| std ::map< int, int > | dofBCmap |
| Map from DofIDItem to bc (to be removed). | |
| std ::map< int, int > | dofICmap |
| Map from DofIDItem to ic (to be removed). | |
| IntArray | mBC |
| Protected Attributes inherited from oofem::FEMComponent | |
| int | number |
| Component number. | |
| Domain * | domain |
| Link to domain object, useful for communicating with other FEM components. | |
Static Protected Attributes | |
| static ParamKey | IPK_RigidArmNode_master |
| static ParamKey | IPK_RigidArmNode_mastermask |
| Static Protected Attributes inherited from oofem::Node | |
| static ParamKey | IPK_Node_lcs |
| static ParamKey | IPK_Node_coords |
Private Member Functions | |
| void | allocAuxArrays () |
| void | deallocAuxArrays () |
Additional Inherited Members | |
| Static Public Attributes inherited from oofem::DofManager | |
| static ParamKey | IPK_DofManager_dofidmask |
| static ParamKey | IPK_DofManager_load |
| static ParamKey | IPK_DofManager_bc |
| static ParamKey | IPK_DofManager_ic |
| static ParamKey | IPK_DofManager_mastermask |
| static ParamKey | IPK_DofManager_doftypemask |
| static ParamKey | IPK_DofManager_boundaryflag |
| static ParamKey | IPK_DofManager_globnum |
| static ParamKey | IPK_DofManager_partitions |
| static ParamKey | IPK_DofManager_sharedflag |
| static ParamKey | IPK_DofManager_remoteflag |
| static ParamKey | IPK_DofManager_nullflag |
Class implementing node connected to other node (master) using rigid arm in finite element mesh. The Rigid arm node supports not only slave dofs mapped to master throug rigid arm connection but also some dofs can be primary dofs (specified by masterDofMask attribute) The primary DOFs can have their own BCs, ICs.
The introduction of rigid arm connected nodes allows to avoid very stiff elements used for modeling the rigid-arm connection. The rigid arm node maps its dofs to master dofs using simple transformations (small rotations are assumed). Therefore, the contribution to rigid arm node are localized directly to master related equations. The rigid arm node can not have its own boundary or initial conditions on linked DOFs, they are determined completely from master dof conditions.
Updated by bp: The local coordinate system in slave is supported in current implementation, the coordinate system in master and slave can be different. If no lcs is set, global one is assumed.the global cs applies.
On the other hand, rigid arm node can be loaded independently of master. The transformation for DOFs and load is not orthogonal - the inverse transformation can not be constructed by transposition. Because of time consuming inversion, methods can generally compute both transformations for dofs as well as loads.
Definition at line 72 of file rigidarmnode.h.
| oofem::RigidArmNode::RigidArmNode | ( | int | n, |
| Domain * | aDomain ) |
Constructor. Creates a rigid-arm node with number n, belonging to aDomain.
Definition at line 53 of file rigidarmnode.C.
References oofem::Node::Node().
Referenced by deallocAuxArrays().
|
inlinevirtual |
Destructor.
Definition at line 97 of file rigidarmnode.h.
|
private |
|
overridevirtual |
Allows programmer to test some internal data, before computation begins. For example, one may use this function, to ensure that element has material with required capabilities is assigned to element. This must be done after all mesh components are instanciated.
Reimplemented from oofem::Node.
Definition at line 121 of file rigidarmnode.C.
References oofem::DofManager::giveNumberOfDofs(), masterMask, and OOFEM_ERROR.
| void oofem::RigidArmNode::computeMasterContribution | ( | std::map< DofIDItem, IntArray > & | masterDofID, |
| std::map< DofIDItem, FloatArray > & | masterContribution ) |
Compute vector of master contribution coefficients - SUMA of contributions == 1.0
Definition at line 146 of file rigidarmnode.C.
References oofem::FloatArray::at(), oofem::FloatMatrix::at(), oofem::IntArray::at(), oofem::FloatArray::beDifferenceOf(), oofem::FloatMatrix::beProductOf(), oofem::FloatMatrix::beTProductOf(), oofem::FloatMatrix::beUnitMatrix(), oofem::Node::computeL2GTransformation(), oofem::DofManager::dofidmask, oofem::DofManager::giveCoordinates(), oofem::Dof::giveDofID(), oofem::DofManager::giveDofWithID(), oofem::FloatArray::giveSize(), oofem::Node::hasLocalCS(), oofem::Node::localCoordinateSystem, masterMask, masterNode, OOFEM_ERROR, oofem::FloatArray::resizeWithValues(), and oofem::FloatArray::rotatedWith().
Referenced by postInitialize().
|
private |
References RigidArmNode().
|
inlineoverridevirtual |
Reimplemented from oofem::Node.
Definition at line 109 of file rigidarmnode.h.
|
inlineoverridevirtual |
Reimplemented from oofem::Node.
Definition at line 110 of file rigidarmnode.h.
References _IFT_RigidArmNode_Name.
|
overridevirtual |
Reimplemented from oofem::Node.
Definition at line 58 of file rigidarmnode.C.
References oofem::FEMComponent::giveDomain(), IPK_RigidArmNode_master, IPK_RigidArmNode_mastermask, masterDofMngr, masterMask, oofem::FEMComponent::number, and PM_UPDATE_PARAMETER.
|
inlineoverridevirtual |
Returns true if dof of given type is allowed to be associated to receiver.
Reimplemented from oofem::Node.
Definition at line 111 of file rigidarmnode.h.
|
overridevirtual |
Performs post initialization steps. Called after all components are created and initialized.
Reimplemented from oofem::DofManager.
Definition at line 69 of file rigidarmnode.C.
References computeMasterContribution(), oofem::ComponentInputException::ctDofManager, oofem::DofManager_local, oofem::FEMComponent::domain, oofem::Dof::giveDofID(), oofem::FEMComponent::giveDomain(), oofem::SlaveDof::initialize(), oofem::DofManager::IPK_DofManager_mastermask, IPK_RigidArmNode_master, IPK_RigidArmNode_mastermask, masterDofMngr, masterMask, masterNode, oofem::Node::Node(), oofem::FEMComponent::number, OOFEM_WARNING, oofem::DofManager::parallel_mode, and PM_DOFMAN_ERROR_IFNOTSET.
|
overridevirtual |
Local renumbering support. For some tasks (parallel load balancing, for example) it is necessary to renumber the entities. The various FEM components (such as nodes or elements) typically contain links to other entities in terms of their local numbers, etc. This service allows to update these relations to reflect updated numbering. The renumbering function is passed, which is supposed to return an updated number of specified entity type based on old number.
Reimplemented from oofem::DofManager.
Definition at line 286 of file rigidarmnode.C.
References oofem::ERS_DofManager, masterDofMngr, and oofem::DofManager::updateLocalNumbering().
|
staticprotected |
Definition at line 82 of file rigidarmnode.h.
Referenced by initializeFrom(), and postInitialize().
|
staticprotected |
Definition at line 83 of file rigidarmnode.h.
Referenced by initializeFrom(), and postInitialize().
|
protected |
Number of master DofManager (Node).
Definition at line 78 of file rigidarmnode.h.
Referenced by initializeFrom(), postInitialize(), and updateLocalNumbering().
|
protected |
Definition at line 76 of file rigidarmnode.h.
Referenced by checkConsistency(), computeMasterContribution(), initializeFrom(), and postInitialize().
|
protected |
Pointer to master Node.
Definition at line 80 of file rigidarmnode.h.
Referenced by computeMasterContribution(), and postInitialize().