Description

Class for a generic finite element node in 3D space, with scalar field P.

This can be used for typical Poisson-type problems (e.g., thermal, if the scalar field is temperature T, or electrostatics if the scalar field is electric potential V)

#include <ChNodeFEAxyzP.h>

Inheritance diagram for chrono::fea::ChNodeFEAxyzP:
Collaboration diagram for chrono::fea::ChNodeFEAxyzP:

Public Member Functions

 ChNodeFEAxyzP (ChVector3d initial_pos=VNULL)
 
 ChNodeFEAxyzP (const ChNodeFEAxyzP &other)
 
ChNodeFEAxyzPoperator= (const ChNodeFEAxyzP &other)
 
virtual ChVariablesVariables ()
 
virtual void Relax () override
 Set the rest position as the actual position.
 
virtual void ForceToRest () override
 Reset to no speed and acceleration.
 
virtual void SetFixed (bool fixed) override
 Fix/release this node. More...
 
virtual bool IsFixed () const override
 Return true if the node is fixed (i.e., its state variables are not changed by the solver).
 
const ChVector3dGetPos () const
 Position of the node in absolute coordinates.
 
void SetPos (const ChVector3d &mpos)
 Position of the node in absolute coordinates.
 
void SetFieldVal (double mp)
 Set the scalar field at node.
 
double GetFieldVal () const
 Get the scalar field at node.
 
void SetFieldValDt (double mp)
 Set the scalar field time derivative at node.
 
double GetFieldValDt () const
 Get the scalar field time derivative at node.
 
void SetLoad (double load)
 Set the applied term (the load/source in a Poisson equation).
 
double GetLoad () const
 Get the applied term (the load/source in a Poisson equation).
 
void SetMass (double mm)
 Set mass of the node. More...
 
double GetMass ()
 Get mass of the node. More...
 
virtual unsigned int GetNumCoordsPosLevel () const override
 Get the number of degrees of freedom.
 
virtual void ArchiveOut (ChArchiveOut &archive_out) override
 Method to allow serialization of transient data to archives.
 
virtual void ArchiveIn (ChArchiveIn &archive_in) override
 Method to allow de-serialization of transient data from archives.
 
virtual void NodeIntStateGather (const unsigned int off_x, ChState &x, const unsigned int off_v, ChStateDelta &v, double &T) override
 
virtual void NodeIntStateScatter (const unsigned int off_x, const ChState &x, const unsigned int off_v, const ChStateDelta &v, const double T) override
 
virtual void NodeIntStateGatherAcceleration (const unsigned int off_a, ChStateDelta &a) override
 
virtual void NodeIntStateScatterAcceleration (const unsigned int off_a, const ChStateDelta &a) override
 
virtual void NodeIntLoadResidual_F (const unsigned int off, ChVectorDynamic<> &R, const double c) override
 
virtual void NodeIntLoadResidual_Mv (const unsigned int off, ChVectorDynamic<> &R, const ChVectorDynamic<> &w, const double c) override
 
virtual void NodeIntLoadLumpedMass_Md (const unsigned int off, ChVectorDynamic<> &Md, double &error, const double c) override
 
virtual void NodeIntToDescriptor (const unsigned int off_v, const ChStateDelta &v, const ChVectorDynamic<> &R) override
 
virtual void NodeIntFromDescriptor (const unsigned int off_v, ChStateDelta &v) override
 
virtual void InjectVariables (ChSystemDescriptor &mdescriptor) override
 Register with the given system descriptor any ChVariable objects associated with this item.
 
virtual void VariablesFbReset () override
 Set the 'fb' part (the known term) of the encapsulated ChVariables to zero.
 
virtual void VariablesFbLoadForces (double factor=1) override
 Add the current forces (applied to node) into the encapsulated ChVariables. More...
 
virtual void VariablesQbLoadSpeed () override
 Initialize the 'qb' part of the ChVariables with the current value of speeds.
 
virtual void VariablesQbSetSpeed (double step=0) override
 Fetch the item speed (ex. More...
 
virtual void VariablesFbIncrementMq () override
 Add M*q (masses multiplied current 'qb') to Fb, ex. More...
 
virtual void VariablesQbIncrementPosition (double step) override
 Increment node positions by the 'qb' part of the ChVariables, multiplied by a 'step' factor. More...
 
- Public Member Functions inherited from chrono::fea::ChNodeFEAbase
virtual void SetIndex (unsigned int mindex)
 Sets the global index of the node.
 
virtual unsigned int GetIndex ()
 Gets the global index of the node.
 
virtual void SetupInitial (ChSystem *system)
 Initial setup.
 
- Public Member Functions inherited from chrono::ChNodeBase
 ChNodeBase (const ChNodeBase &other)
 
ChNodeBaseoperator= (const ChNodeBase &other)
 
virtual unsigned int GetNumCoordsVelLevel () const
 Get the number of degrees of freedom, derivative. More...
 
virtual unsigned int GetNumCoordsPosLevelActive () const
 Get the actual number of active degrees of freedom. More...
 
virtual unsigned int GetNumCoordsVelLevelActive () const
 Get the actual number of active degrees of freedom, derivative. More...
 
virtual bool IsAllCoordsActive () const
 Return true if all node DOFs are active (no node variable is fixed).
 
unsigned int NodeGetOffsetPosLevel ()
 Get offset in the state vector (position part).
 
unsigned int NodeGetOffsetVelLevel ()
 Get offset in the state vector (speed part).
 
void NodeSetOffsetPosLevel (const unsigned int moff)
 Set offset in the state vector (position part).
 
void NodeSetOffsetVelLevel (const unsigned int moff)
 Set offset in the state vector (speed part).
 
virtual void NodeIntStateIncrement (const unsigned int off_x, ChState &x_new, const ChState &x, const unsigned int off_v, const ChStateDelta &Dv)
 
virtual void NodeIntStateGetIncrement (const unsigned int off_x, const ChState &x_new, const ChState &x, const unsigned int off_v, ChStateDelta &Dv)
 

Protected Attributes

ChVariablesGeneric variables
 
double P
 solver proxy: variable with scalar field P More...
 
double P_dt
 field derivative, if needed
 
double F
 applied term
 
ChVector3d pos
 
- Protected Attributes inherited from chrono::fea::ChNodeFEAbase
unsigned int g_index
 global node index
 
- Protected Attributes inherited from chrono::ChNodeBase
unsigned int offset_x
 offset in vector of state (position part)
 
unsigned int offset_w
 offset in vector of state (speed part)
 

Additional Inherited Members

- Public Attributes inherited from chrono::fea::ChNodeFEAbase
double m_TotalMass
 Nodal mass obtained from element mass matrix.
 

Member Function Documentation

◆ GetMass()

double chrono::fea::ChNodeFEAxyzP::GetMass ( )
inline

Get mass of the node.

Meaning of 'mass' changes depending on the problem type. Not meaningful except for transients.

◆ SetFixed()

void chrono::fea::ChNodeFEAxyzP::SetFixed ( bool  fixed)
overridevirtual

Fix/release this node.

If fixed, its state variables are not changed by the solver.

Implements chrono::fea::ChNodeFEAbase.

◆ SetMass()

void chrono::fea::ChNodeFEAxyzP::SetMass ( double  mm)
inline

Set mass of the node.

Meaning of 'mass' changes depending on the problem type. Not meaningful except for transients.

◆ VariablesFbIncrementMq()

void chrono::fea::ChNodeFEAxyzP::VariablesFbIncrementMq ( )
overridevirtual

Add M*q (masses multiplied current 'qb') to Fb, ex.

if qb is initialized with v_old using VariablesQbLoadSpeed, this method can be used in timestepping schemes that do: M*v_new = M*v_old + forces*dt

Reimplemented from chrono::ChNodeBase.

◆ VariablesFbLoadForces()

void chrono::fea::ChNodeFEAxyzP::VariablesFbLoadForces ( double  factor = 1)
overridevirtual

Add the current forces (applied to node) into the encapsulated ChVariables.

Include in the 'fb' part: qf+=forces*factor

Reimplemented from chrono::ChNodeBase.

◆ VariablesQbIncrementPosition()

void chrono::fea::ChNodeFEAxyzP::VariablesQbIncrementPosition ( double  step)
overridevirtual

Increment node positions by the 'qb' part of the ChVariables, multiplied by a 'step' factor.

pos+=qb*step If qb is a speed, this behaves like a single step of 1-st order numerical integration (Euler integration).

Reimplemented from chrono::ChNodeBase.

◆ VariablesQbSetSpeed()

void chrono::fea::ChNodeFEAxyzP::VariablesQbSetSpeed ( double  step = 0)
overridevirtual

Fetch the item speed (ex.

linear velocity, in xyz nodes) from the 'qb' part of the ChVariables and sets it as the current item speed. If 'step' is not 0, also should compute the approximate acceleration of the item using backward differences, that is accel=(new_speed-old_speed)/step. Mostly used after the solver provided the solution in ChVariables.

Reimplemented from chrono::ChNodeBase.

Member Data Documentation

◆ P

double chrono::fea::ChNodeFEAxyzP::P
protected

solver proxy: variable with scalar field P

field


The documentation for this class was generated from the following files:
  • /builds/uwsbel/chrono/src/chrono/fea/ChNodeFEAxyzP.h
  • /builds/uwsbel/chrono/src/chrono/fea/ChNodeFEAxyzP.cpp