Hexahedronal solid element with 8 nodes and a central curvature node.
While technically not an ANCF element, the name is justified because the implementation can use the same ANCF machinery.
|
virtual unsigned int | GetNumNodes () override |
| Get number of nodes of this element.
|
|
virtual unsigned int | GetNumCoordsPosLevel () override |
| Get the number of coordinates in the field used by the referenced nodes.
|
|
virtual unsigned int | GetNumCoordsPosLevelActive () override |
| Get the number of active coordinates in the field used by the referenced nodes.
|
|
virtual unsigned int | GetNodeNumCoordsPosLevel (unsigned int n) override |
| Get the number of coordinates from the n-th node used by this element.
|
|
virtual unsigned int | GetNodeNumCoordsPosLevelActive (unsigned int n) override |
| Get the number of active coordinates from the n-th node used by this element.
|
|
virtual std::shared_ptr< ChNodeFEAbase > | GetNode (unsigned int n) override |
| Access the n-th node of this element.
|
|
virtual std::shared_ptr< ChNodeFEAxyz > | GetHexahedronNode (unsigned int n) override |
| Return the specified hexahedron node (0 <= n <= 7).
|
|
void | SetNodes (std::shared_ptr< ChNodeFEAxyz > node1, std::shared_ptr< ChNodeFEAxyz > node2, std::shared_ptr< ChNodeFEAxyz > node3, std::shared_ptr< ChNodeFEAxyz > node4, std::shared_ptr< ChNodeFEAxyz > node5, std::shared_ptr< ChNodeFEAxyz > node6, std::shared_ptr< ChNodeFEAxyz > node7, std::shared_ptr< ChNodeFEAxyz > node8, std::shared_ptr< ChNodeFEAcurv > nodeC) |
| Specify the nodes of this element.
|
|
std::shared_ptr< ChNodeFEAxyz > | GetNode1 () const |
| Get access to individual nodes of this element.
|
|
std::shared_ptr< ChNodeFEAxyz > | GetNode2 () const |
|
std::shared_ptr< ChNodeFEAxyz > | GetNode3 () const |
|
std::shared_ptr< ChNodeFEAxyz > | GetNode4 () const |
|
std::shared_ptr< ChNodeFEAxyz > | GetNode5 () const |
|
std::shared_ptr< ChNodeFEAxyz > | GetNode6 () const |
|
std::shared_ptr< ChNodeFEAxyz > | GetNode7 () const |
|
std::shared_ptr< ChNodeFEAxyz > | GetNode8 () const |
|
std::shared_ptr< ChNodeFEAcurv > | GetCentralNode () const |
|
void | SetDimensions (const ChVector3d &dims) |
| DP_Cap parameter.
|
|
const ChVector3d & | GetDimensions () const |
| Get the element dimensions (x, y, z directions).
|
|
void | SetMaterial (std::shared_ptr< ChContinuumElastic > material) |
| Set the continuum material for this element.
|
|
std::shared_ptr< ChContinuumElastic > | GetMaterial () const |
| Get a handle to the continuum material used by this element.
|
|
void | SetAlphaDamp (double a) |
| Set the structural damping.
|
|
void | SetStrainFormulation (StrainFormulation model) |
| Set the strain formulation.
|
|
void | SetPlasticityFormulation (PlasticityFormulation model) |
| Set the plasticity formulation.
|
|
void | SetDPIterationNo (int ItNo) |
| Set the DP iteration number.
|
|
void | SetDPVector1 (ChMatrixDynamic< double > vec) |
| Set the hardening parameter look-up table.
|
|
void | SetDPVector2 (ChMatrixDynamic< double > vec) |
|
void | SetDPVectorSize (int a) |
|
void | SetDPCapBeta (double a) |
| Set DP_Cap parameter.
|
|
int | GetDPIterationNo () const |
| Get the DP iteration number.
|
|
void | SetDPYieldTol (double yieldf_tol) |
| Set the DP yield function tolerance.
|
|
double | GetDPYieldTol () const |
| Get the DP yield function tolerance.
|
|
void | SetPlasticity (bool val) |
| Set plasticity.
|
|
void | SetDruckerPrager (bool val) |
| Set Drucker-Prager plasticity.
|
|
void | SetYieldStress (double a) |
| Set yield stress for yield function.
|
|
void | SetHardeningSlope (double a) |
| Set linear isotropic modulus.
|
|
void | SetFriction (double friction) |
| Set internal friction angle.
|
|
void | SetDilatancy (double dilatancy) |
| Set dilatancy angle.
|
|
void | SetDPType (int a) |
| Set Drucker-Prager hardening type.
|
|
void | SetCCPInitial (ChMatrixNM< double, 9, 8 > mat) |
| Set initial strain tensor per integration point of the 9-node element.
|
|
void | ShapeFunctions (ShapeVector &N, double x, double y, double z) |
| Calculate shape functions and their derivatives.
|
|
void | ShapeFunctionsDerivativeX (ShapeVector &Nx, double x, double y, double z) |
| Calculate shape function derivative w.r.t. X.
|
|
void | ShapeFunctionsDerivativeY (ShapeVector &Ny, double x, double y, double z) |
| Calculate shape function derivative w.r.t. Y.
|
|
void | ShapeFunctionsDerivativeZ (ShapeVector &Nz, double x, double y, double z) |
| Calculate shape function derivative w.r.t. Z.
|
|
virtual unsigned int | GetNumFieldCoords () override |
| Number of coordinates in the interpolated field: here the {x,y,z} displacement.
|
|
virtual unsigned int | GetNumSubBlocks () override |
| Get the number of DOFs sub-blocks.
|
|
virtual unsigned int | GetSubBlockOffset (unsigned int nblock) override |
| Get the offset of the specified sub-block of DOFs in global vector.
|
|
virtual unsigned int | GetSubBlockSize (unsigned int nblock) override |
| Get the size of the specified sub-block of DOFs in global vector.
|
|
virtual bool | IsSubBlockActive (unsigned int nblock) const override |
| Check if the specified sub-block of DOFs is active.
|
|
virtual unsigned int | GetLoadableNumCoordsPosLevel () override |
| Get the number of DOFs affected by this element (position part).
|
|
virtual unsigned int | GetLoadableNumCoordsVelLevel () override |
| Get the number of DOFs affected by this element (speed part).
|
|
virtual void | LoadableGetStateBlockPosLevel (int block_offset, ChState &mD) override |
| Get all the DOFs packed in a single vector (position part).
|
|
virtual void | LoadableGetStateBlockVelLevel (int block_offset, ChStateDelta &mD) override |
| Get all the DOFs packed in a single vector (speed part).
|
|
virtual void | LoadableStateIncrement (const unsigned int off_x, ChState &x_new, const ChState &x, const unsigned int off_v, const ChStateDelta &Dv) override |
| Increment all DOFs using a delta.
|
|
virtual void | LoadableGetVariables (std::vector< ChVariables * > &mvars) override |
| Get the pointers to the contained ChLcpVariables, appending to the mvars vector.
|
|
virtual void | ComputeNF (const double U, const double V, const double W, ChVectorDynamic<> &Qi, double &detJ, const ChVectorDynamic<> &F, ChVectorDynamic<> *state_x, ChVectorDynamic<> *state_w) override |
| Evaluate N'*F, where N is some type of shape function evaluated at (U,V,W).
|
|
virtual double | GetDensity () override |
| Return the material density.
|
|
ChKRMBlock & | Kstiffness () |
| Access the proxy to stiffness, for sparse solver.
|
|
virtual void | EleIntLoadResidual_F (ChVectorDynamic<> &R, const double c) override |
| Add the internal forces (pasted at global nodes offsets) into a global vector R, multiplied by a scaling factor c, as R += forces * c This default implementation is SLIGHTLY INEFFICIENT.
|
|
virtual void | EleIntLoadResidual_Mv (ChVectorDynamic<> &R, const ChVectorDynamic<> &w, const double c) override |
| Add the product of element mass M by a vector w (pasted at global nodes offsets) into a global vector R, multiplied by a scaling factor c, as R += M * w * c This default implementation is VERY INEFFICIENT.
|
|
virtual void | EleIntLoadLumpedMass_Md (ChVectorDynamic<> &Md, double &error, const double c) override |
| Adds the lumped mass to a Md vector, representing a mass diagonal matrix.
|
|
virtual void | EleIntLoadResidual_F_gravity (ChVectorDynamic<> &R, const ChVector3d &G_acc, const double c) override |
| Add the contribution of gravity loads, multiplied by a scaling factor c, as: R += M * g * c This default implementation is VERY INEFFICIENT.
|
|
virtual void | ComputeGravityForces (ChVectorDynamic<> &Fg, const ChVector3d &G_acc) override |
| Compute the gravitational forces.
|
|
virtual void | InjectKRMMatrices (ChSystemDescriptor &descriptor) override |
| Register with the given system descriptor any ChKRMBlock objects associated with this item.
|
|
virtual void | LoadKRMMatrices (double Kfactor, double Rfactor, double Mfactor) override |
| Compute and load current stiffnes (K), damping (R), and mass (M) matrices in encapsulated ChKRMBlock objects.
|
|
virtual void | VariablesFbLoadInternalForces (double factor=1.) override |
| Add the internal forces, expressed as nodal forces, into the encapsulated ChVariables.
|
|
virtual void | VariablesFbIncrementMq () override |
| Add M*q (internal masses multiplied current 'qb').
|
|
virtual void | GetStateBlock (ChVectorDynamic<> &mD)=0 |
| Fill the D vector with the current field values at the nodes of the element, with proper ordering.
|
|
virtual void | ComputeNodalMass () |
| Compute element's nodal masses.
|
|
virtual void | ComputeInternalForces (ChVectorDynamic<> &Fi)=0 |
| Compute the internal forces.
|
|
virtual void | EleDoIntegration () |
| This is optionally implemented if there is some internal state that requires integration.
|
|
virtual void | ComputeNF (const double U, const double V, const double W, ChVectorDynamic<> &Qi, double &detJ, const ChVectorDynamic<> &F, ChVectorDynamic<> *state_x, ChVectorDynamic<> *state_w)=0 |
| Evaluate N'*F , where N is some type of shape function evaluated at U,V,W coordinates of the volume, each ranging in [-1..+1], except if IsTetrahedronIntegrationNeeded() true or IsTrianglePrismIntegrationNeeded() true.
|
|
virtual bool | IsTetrahedronIntegrationNeeded () |
| If true, use quadrature over u,v,w in [0..1] range as tetrahedron volumetric coords (with z=1-u-v-w) otherwise use default quadrature over u,v,w in [-1..+1] as box isoparametric coords.
|
|
virtual bool | IsTrianglePrismIntegrationNeeded () |
| If true, use quadrature over u,v in [0..1] range as triangle natural coords (with z=1-u-v), and use linear quadrature over w in [-1..+1], otherwise use default quadrature over u,v,w in [-1..+1] as box isoparametric coords.
|
|