OOFEM
2.4
OOFEM.org - Object Oriented Finite Element Solver
|
Class implementing node connected to other node (master) using rigid arm in finite element mesh. More...
#include <rigidarmnode.h>
Public Member Functions | |
RigidArmNode (int n, Domain *aDomain) | |
Constructor. More... | |
virtual | ~RigidArmNode (void) |
Destructor. More... | |
virtual IRResultType | initializeFrom (InputRecord *ir) |
Initializes receiver according to object description stored in input record. More... | |
virtual void | postInitialize () |
Performs post-initialization such like checking if there are any slave dofs etc. More... | |
virtual void | updateLocalNumbering (EntityRenumberingFunctor &f) |
Local renumbering support. More... | |
virtual int | checkConsistency () |
Allows programmer to test some internal data, before computation begins. More... | |
void | computeMasterContribution (std::map< DofIDItem, IntArray > &masterDofID, std::map< DofIDItem, FloatArray > &masterContribution) |
Compute vector of master contribution coefficients - SUMA of contributions == 1.0. More... | |
virtual const char * | giveClassName () const |
virtual const char * | giveInputRecordName () const |
virtual bool | isDofTypeCompatible (dofType type) const |
Returns true if dof of given type is allowed to be associated to receiver. More... | |
Public Member Functions inherited from oofem::Node | |
Node (int n, Domain *aDomain) | |
Constructor. More... | |
virtual | ~Node () |
Destructor. More... | |
virtual bool | hasCoordinates () |
virtual double | giveCoordinate (int i) |
virtual FloatArray * | giveCoordinates () |
const FloatArray & | giveNodeCoordinates () const |
As giveCoordinates, but non-virtual and therefore faster (because it can be inlined). More... | |
void | setCoordinates (FloatArray coords) |
Sets node coordinates to given array. More... | |
virtual double | giveUpdatedCoordinate (int ic, TimeStep *tStep, double scale=1.) |
Returns updated ic-th coordinate of receiver. More... | |
virtual void | giveUpdatedCoordinates (FloatArray &answer, TimeStep *tStep, double scale=1.) |
Returns updated coordinate of receiver. More... | |
bool | hasLocalCS () |
Returns nonzero if node has prescribed local coordinate system. More... | |
FloatMatrix * | giveLocalCoordinateTriplet () |
Returns pointer to local coordinate triplet in node. More... | |
bool | hasSameLCS (Node *remote) |
Returns true, if the local coordinate systems of receiver and given node are the same. More... | |
virtual bool | computeL2GTransformation (FloatMatrix &answer, const IntArray &dofIDArry) |
Computes transformation matrix from global c.s. More... | |
virtual bool | requiresTransformation () |
Indicates, whether dofManager requires the transformation. More... | |
virtual void | computeLoadVector (FloatArray &answer, Load *load, CharType type, TimeStep *tStep, ValueModeType mode) |
Computes the load vector for given load. More... | |
virtual void | updateYourself (TimeStep *tStep) |
Updates receiver at end of time step (i.e. More... | |
virtual void | giveInputRecord (DynamicInputRecord &input) |
Setups the input record string of receiver. More... | |
virtual void | printYourself () |
Prints receiver state on stdout. Useful for debugging. More... | |
virtual int | giveQcNodeType () |
virtual contextIOResultType | saveContext (DataStream &stream, ContextMode mode, void *obj=NULL) |
Stores receiver state to output stream. More... | |
virtual contextIOResultType | restoreContext (DataStream &stream, ContextMode mode, void *obj=NULL) |
Restores the receiver state previously written in stream. More... | |
virtual void | drawYourself (oofegGraphicContext &gc, TimeStep *tStep) |
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) | |
Constructor. More... | |
virtual | ~DofManager () |
Destructor. More... | |
virtual void | printOutputAt (FILE *file, TimeStep *tStep) |
Prints output of receiver to stream, for given time step. More... | |
bool | isBoundary () |
void | setBoundaryFlag (bool isBoundary) |
Sets the boundary flag. More... | |
virtual bool | hasAnySlaveDofs () |
virtual bool | giveMasterDofMans (IntArray &masters) |
Returns true if the receiver is linked (its slave DOFs depend on master values) to some other dof managers. More... | |
void | appendDof (Dof *dof) |
Adds the given Dof into the receiver. More... | |
void | removeDof (DofIDItem id) |
Removes Dof with given id from dofArray. More... | |
bool | hasDofID (DofIDItem id) const |
Checks if receiver contains dof with given ID. More... | |
int | giveGlobalNumber () const |
int | giveLabel () const |
void | setGlobalNumber (int newNumber) |
Sets receiver global number. More... | |
dofManagerParallelMode | giveParallelMode () const |
Return dofManagerParallelMode of receiver. More... | |
void | setParallelMode (dofManagerParallelMode _mode) |
Sets parallel mode of receiver. More... | |
const IntArray * | givePartitionList () |
Returns partition list of receiver. More... | |
void | setPartitionList (const IntArray *_p) |
Sets receiver's partition list. More... | |
void | removePartitionFromList (int _part) |
Removes given partition from receiver list. More... | |
void | mergePartitionList (IntArray &_p) |
Merges receiver partition list with given lists. More... | |
int | givePartitionsConnectivitySize () |
Returns number of partitions sharing given receiver (=number of shared partitions + local one). More... | |
bool | isLocal () |
Returns true if receiver is locally maintained. More... | |
bool | isShared () |
Returns true if receiver is shared. More... | |
bool | isNull () |
Returns true if receiver is shared. More... | |
Dof * | giveDofWithID (int dofID) const |
Returns DOF with given dofID; issues error if not present. More... | |
int | giveNumberOfDofs () const |
void | askNewEquationNumbers (TimeStep *tStep) |
Renumbers all contained DOFs. More... | |
int | giveNumberOfPrimaryMasterDofs (const IntArray &dofIDArray) const |
Returns the number of primary dofs on which receiver dofs (given in dofArray) depend on. More... | |
void | giveLocationArray (const IntArray &dofIDArry, IntArray &locationArray, const UnknownNumberingScheme &s) const |
Returns location array (array containing for each requested dof related equation number) for given numbering scheme. More... | |
void | giveMasterDofIDArray (const IntArray &dofIDArry, IntArray &masterDofIDs) const |
Returns master dof ID array of receiver. More... | |
void | giveCompleteLocationArray (IntArray &locationArray, const UnknownNumberingScheme &s) const |
Returns full location array of receiver containing equation numbers of all dofs of receiver. More... | |
void | giveCompleteMasterDofIDArray (IntArray &dofIDArray) const |
Returns the full dof ID array of receiver. More... | |
std::vector< Dof * >::const_iterator | findDofWithDofId (DofIDItem dofID) const |
Finds index of DOF with required physical meaning of receiver. More... | |
void | giveUnknownVector (FloatArray &answer, const IntArray &dofMask, ValueModeType mode, TimeStep *tStep, bool padding=false) |
Assembles the vector of unknowns in global c.s for given dofs of receiver. More... | |
void | giveUnknownVector (FloatArray &answer, const IntArray &dofMask, PrimaryField &field, ValueModeType mode, TimeStep *tStep, bool padding=false) |
Assembles the vector of unknowns of given filed in global c.s for given dofs of receiver. More... | |
void | giveCompleteUnknownVector (FloatArray &answer, ValueModeType mode, TimeStep *tStep) |
Assembles the complete unknown vector in node. More... | |
void | giveUnknownVectorOfType (FloatArray &answer, UnknownType ut, ValueModeType mode, TimeStep *tStep) |
Constructs the requested vector by assembling e.g. More... | |
void | givePrescribedUnknownVector (FloatArray &answer, const IntArray &dofMask, ValueModeType mode, TimeStep *tStep) |
Assembles the vector of prescribed unknowns in nodal c.s for given dofs of receiver. More... | |
bool | computeM2GTransformation (FloatMatrix &answer, const IntArray &dofIDArry) |
Computes receiver transformation matrix from global CS to dofManager specific coordinate system; . More... | |
virtual bool | computeM2LTransformation (FloatMatrix &answer, const IntArray &dofIDArry) |
Computes transformation matrix from local DOFs to master DOFs; . More... | |
IntArray * | giveLoadArray () |
Returns the array containing applied loadings of the receiver. More... | |
void | setLoadArray (IntArray &load) |
Sets the array of applied loadings of the receiver. More... | |
const IntArray * | giveForcedDofIDs () |
Returns list of specific dofs that should be included in node. More... | |
std::map< int, int > * | giveDofTypeMap () |
Returns map from DofIDItem to dofType. More... | |
std::map< int, int > * | giveMasterMap () |
Returns map from DofIDItem to dofType. More... | |
std::map< int, int > * | giveBcMap () |
Returns map from DofIDItem to dofType. More... | |
std::map< int, int > * | giveIcMap () |
Returns map from DofIDItem to initial condition. More... | |
void | setNumberOfDofs (int _ndofs) |
Sets number of dofs of the receiver; Deallocates existing DOFs; Resizes the dofArray accordingly. More... | |
Public Member Functions inherited from oofem::FEMComponent | |
FEMComponent (int n, Domain *d) | |
Regular constructor, creates component with given number and belonging to given domain. More... | |
virtual | ~FEMComponent () |
Virtual destructor. More... | |
Domain * | giveDomain () const |
virtual void | setDomain (Domain *d) |
Sets associated Domain. More... | |
int | giveNumber () const |
void | setNumber (int num) |
Sets number of receiver. More... | |
virtual Interface * | giveInterface (InterfaceType t) |
Interface requesting service. More... | |
std::string | errorInfo (const char *func) const |
Returns string for prepending output (used by error reporting macros). More... | |
Protected Attributes | |
IntArray | masterMask |
int | masterDofMngr |
Number of master DofManager (Node) More... | |
Node * | masterNode |
Pointer to master Node. More... | |
Protected Attributes inherited from oofem::Node | |
FloatArray | coordinates |
Array storing nodal coordinates. More... | |
FloatMatrix * | localCoordinateSystem |
Triplet defining the local coordinate system in node. More... | |
Protected Attributes inherited from oofem::DofManager | |
std::vector< Dof * > | dofArray |
Array of DOFs. More... | |
IntArray | loadArray |
List of applied loads. More... | |
bool | isBoundaryFlag |
Indicates if dofManager is boundary (true boundary or on boundary between regions) or interior. More... | |
bool | hasSlaveDofs |
Flag indicating whether receiver has slave DOFs. More... | |
int | globalNumber |
In parallel mode, globalNumber contains globally unique DoFManager number. More... | |
dofManagerParallelMode | parallel_mode |
IntArray | partitions |
List of partition sharing the shared dof manager or remote partition containing remote dofmanager counterpart. More... | |
IntArray * | dofidmask |
List of additional dof ids to include. More... | |
std::map< int, int > * | dofTypemap |
Map from DofIDItem to dofType. More... | |
std::map< int, int > * | dofMastermap |
Map from DofIDItem to master node. More... | |
std::map< int, int > * | dofBCmap |
Map from DofIDItem to bc (to be removed). More... | |
std::map< int, int > * | dofICmap |
Map from DofIDItem to ic (to be removed). More... | |
IntArray | mBC |
Protected Attributes inherited from oofem::FEMComponent | |
int | number |
Component number. More... | |
Domain * | domain |
Link to domain object, useful for communicating with other FEM components. More... | |
Private Member Functions | |
void | allocAuxArrays () |
void | deallocAuxArrays () |
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 47 of file rigidarmnode.C.
|
inlinevirtual |
Destructor.
Definition at line 94 of file rigidarmnode.h.
|
private |
|
virtual |
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 117 of file rigidarmnode.C.
References oofem::IntArray::at(), oofem::Node::checkConsistency(), oofem::DofManager::dofArray, 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 142 of file rigidarmnode.C.
References oofem::IntArray::at(), oofem::FloatArray::at(), oofem::FloatMatrix::at(), oofem::FloatArray::beDifferenceOf(), oofem::FloatMatrix::beProductOf(), oofem::FloatMatrix::beTProductOf(), oofem::FloatMatrix::beUnitMatrix(), oofem::Node::computeL2GTransformation(), oofem::DofManager::dofidmask, oofem::IntArray::findFirstIndexOf(), oofem::Node::giveCoordinates(), oofem::Dof::giveDofID(), oofem::DofManager::giveDofWithID(), oofem::DofManager::giveNumberOfDofs(), oofem::IntArray::giveSize(), oofem::Node::hasLocalCS(), oofem::Node::localCoordinateSystem, masterMask, masterNode, OOFEM_ERROR, oofem::IntArray::resize(), and oofem::FloatArray::rotatedWith().
Referenced by postInitialize().
|
private |
|
inlinevirtual |
Reimplemented from oofem::Node.
Definition at line 106 of file rigidarmnode.h.
|
inlinevirtual |
Reimplemented from oofem::Node.
Definition at line 107 of file rigidarmnode.h.
References _IFT_RigidArmNode_Name.
|
virtual |
Initializes receiver according to object description stored in input record.
This function is called immediately after creating object using constructor. Input record can be imagined as data record in component database belonging to receiver. Receiver may use value-name extracting functions to extract particular field from record.
ir | Input record to initialize from. |
Reimplemented from oofem::Node.
Definition at line 52 of file rigidarmnode.C.
References _IFT_DofManager_mastermask, _IFT_RigidArmNode_master, oofem::DofManager::dofidmask, oofem::IntArray::giveSize(), oofem::Node::initializeFrom(), IR_GIVE_FIELD, oofem::IRRT_BAD_FORMAT, oofem::IRRT_OK, masterDofMngr, masterMask, and OOFEM_WARNING.
|
inlinevirtual |
Returns true if dof of given type is allowed to be associated to receiver.
Reimplemented from oofem::Node.
Definition at line 108 of file rigidarmnode.h.
|
virtual |
Performs post-initialization such like checking if there are any slave dofs etc.
Reimplemented from oofem::DofManager.
Definition at line 73 of file rigidarmnode.C.
References computeMasterContribution(), oofem::DofManager_local, oofem::FEMComponent::domain, oofem::Dof::giveDofID(), oofem::Domain::giveDofManager(), oofem::FEMComponent::giveNumber(), oofem::DofManager::giveNumberOfDofs(), oofem::SlaveDof::initialize(), masterDofMngr, masterNode, OOFEM_WARNING, oofem::DofManager::parallel_mode, and oofem::DofManager::postInitialize().
|
virtual |
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 274 of file rigidarmnode.C.
References oofem::ERS_DofManager, masterDofMngr, and oofem::DofManager::updateLocalNumbering().
|
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(), and initializeFrom().
|
protected |
Pointer to master Node.
Definition at line 80 of file rigidarmnode.h.
Referenced by computeMasterContribution(), and postInitialize().