Advanced Multi-Physics (AMP)
On-Line Documentation
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement Class Reference

#include <MechanicsNonlinearUpdatedLagrangianElement.h>

Inheritance diagram for AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement:
Inheritance graph
[legend]

Public Member Functions

void apply () override
 
void assignReferenceXYZ (const std::vector< double > &elementRefXYZ)
 
void computeDeformationGradient (const std::vector< std::vector< libMesh::RealGradient > > &dphi, const std::vector< libMesh::Point > &xyz, unsigned int num_nodes, unsigned int qp, double F[3][3])
 
void computeStressAndStrain (const std::vector< std::vector< double > > &inputVec, std::vector< double > &stressVec, std::vector< double > &strainVec)
 
unsigned int getNumberOfGaussPoints ()
 
void initializeForCurrentElement (const libMesh::Elem *elem, std::shared_ptr< MechanicsMaterialModel > materialModel)
 
void initializeReferenceXYZ (std::vector< double > &elementRefXYZ)
 
void initMaterialModel (const std::vector< double > &initTempVector)
 
 MechanicsNonlinearUpdatedLagrangianElement (std::shared_ptr< const ElementOperationParameters > params)
 Constructor.
 
void preNonlinearElementInit ()
 
void printStressAndStrain (FILE *fp, const std::vector< std::vector< double > > &inputVec)
 
void resetElementInfo ()
 
void setElementVectors (const std::vector< std::vector< double > > &elementInputVectors, const std::vector< std::vector< double > > &elementInputVectors_pre, std::vector< double > &elementOutputVector)
 
void updateMaterialModel (MechanicsNonlinearElement::MaterialUpdateType type, const std::vector< std::vector< double > > &elementInputVectors, const std::vector< std::vector< double > > &elementInputVectors_pre)
 
void zeroOutGaussPointCount ()
 
virtual ~MechanicsNonlinearUpdatedLagrangianElement ()
 Destructor.
 

Protected Member Functions

void apply_Normal ()
 
void apply_Reduced ()
 
void materialModelNonlinearGaussPointOperation (MechanicsNonlinearElement::MaterialUpdateType, const std::vector< std::vector< double > > &, double[3][3], double[3][3])
 
void materialModelPostNonlinearElementOperation (MechanicsNonlinearElement::MaterialUpdateType)
 
void materialModelPostNonlinearGaussPointOperation (MechanicsNonlinearElement::MaterialUpdateType)
 
void materialModelPreNonlinearElementOperation (MechanicsNonlinearElement::MaterialUpdateType)
 
void materialModelPreNonlinearGaussPointOperation (MechanicsNonlinearElement::MaterialUpdateType)
 

Protected Attributes

const std::vector< std::vector< libMesh::RealGradient > > * d_dphi
 
const libMesh::Elem * d_elem
 
std::vector< std::vector< double > > d_elementInputVectors
 
std::vector< std::vector< double > > d_elementInputVectors_pre
 
std::vector< double > * d_elementOutputVector
 
std::vector< double > d_elementRefXYZ
 
std::shared_ptr< libMesh::FEBase > d_fe
 
std::shared_ptr< libMesh::FEType > d_feType
 
int d_gaussPtCnt
 
int d_iDebugPrintInfoLevel
 
const std::vector< libMesh::Real > * d_JxW
 
std::vector< double > d_leftStretchV_n
 
std::vector< double > d_leftStretchV_np1
 
std::shared_ptr< MechanicsMaterialModeld_materialModel
 
bool d_onePointShearIntegration
 
const std::vector< std::vector< libMesh::Real > > * d_phi
 
std::shared_ptr< libMesh::QBase > d_qrule
 
std::vector< double > d_rotationR_n
 
std::vector< double > d_rotationR_np1
 
bool d_useFlanaganTaylorElem
 
bool d_useJaumannRate
 
bool d_useReducedIntegration
 
const std::vector< libMesh::Point > * d_xyz
 

Detailed Description

A class for representing the element level computation performed within a nonlinear updated lagrangian finite element operator for modelling solid mechanics.

Definition at line 20 of file MechanicsNonlinearUpdatedLagrangianElement.h.

Constructor & Destructor Documentation

◆ MechanicsNonlinearUpdatedLagrangianElement()

AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::MechanicsNonlinearUpdatedLagrangianElement ( std::shared_ptr< const ElementOperationParameters params)
inlineexplicit

◆ ~MechanicsNonlinearUpdatedLagrangianElement()

virtual AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::~MechanicsNonlinearUpdatedLagrangianElement ( )
inlinevirtual

Destructor.

Definition at line 42 of file MechanicsNonlinearUpdatedLagrangianElement.h.

Member Function Documentation

◆ apply()

void AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::apply ( )
inlineoverridevirtual

◆ apply_Normal()

void AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::apply_Normal ( )
protected

Element residual vector computation using normal integration scheme.

Referenced by apply().

◆ apply_Reduced()

void AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::apply_Reduced ( )
protected

Element residual vector computation using reduced integration scheme.

Referenced by apply().

◆ assignReferenceXYZ()

void AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::assignReferenceXYZ ( const std::vector< double > &  elementRefXYZ)
inline

Assign the reference x, y and z coordinates for the current element.

Definition at line 146 of file MechanicsNonlinearUpdatedLagrangianElement.h.

References d_elementRefXYZ.

◆ computeDeformationGradient()

void AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::computeDeformationGradient ( const std::vector< std::vector< libMesh::RealGradient > > &  dphi,
const std::vector< libMesh::Point > &  xyz,
unsigned int  num_nodes,
unsigned int  qp,
double  F[3][3] 
)

Computes the deformation gradient at n-th, (n+1)-th and (n+1/2)-th time step.

◆ computeStressAndStrain()

void AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::computeStressAndStrain ( const std::vector< std::vector< double > > &  inputVec,
std::vector< double > &  stressVec,
std::vector< double > &  strainVec 
)

Computes the stress and strain values at the Gauss points within the current element The 6 components of stress and strain at each Gauss point are arranged in the order: xx, yy, zz, yz, xz and xy.

Parameters
[in]inputVecInput vector (Displacement, Temperature, Burnup etc) at the nodes of the current element.
[out]stressVecStresses at the Gauss points of the current element.
[out]strainVecStrains at the Gauss points of the current element.

◆ getNumberOfGaussPoints()

unsigned int AMP::Operator::MechanicsElement::getNumberOfGaussPoints ( )
inlineinherited
Returns
Number of gauss quadrature points per element

Definition at line 72 of file MechanicsElement.h.

References AMP::Operator::MechanicsElement::d_qrule.

◆ initializeForCurrentElement()

void AMP::Operator::MechanicsElement::initializeForCurrentElement ( const libMesh::Elem *  elem,
std::shared_ptr< MechanicsMaterialModel materialModel 
)
inlineinherited

This function is used by the Linear and Nonlinear mechanics FEOperators to pass the current element and material model to this class during the finite element assembly operation.

Parameters
[in]elemPointer to the current element within a finite element assembly.
[in]materialModelShared pointer to the mechanics material model used in the current element.

Definition at line 62 of file MechanicsElement.h.

References AMP::Operator::MechanicsElement::d_elem, and AMP::Operator::MechanicsElement::d_materialModel.

◆ initializeReferenceXYZ()

void AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::initializeReferenceXYZ ( std::vector< double > &  elementRefXYZ)

Initializes the reference x, y and z coordinates.

◆ initMaterialModel()

void AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::initMaterialModel ( const std::vector< double > &  initTempVector)

This function is used to initialize the material model at all Gauss points within the current element. Some material models require the reference values for some fields such as temperature and so these values are also passed to the material model through this function. Currently, the only field required by the mechanics material models during initialization is the reference temperature.

Parameters
[in]initTempVectorReference temperature at the nodes of the current element. This can be empty if the material model does not require a reference temperature.

◆ materialModelNonlinearGaussPointOperation()

void AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::materialModelNonlinearGaussPointOperation ( MechanicsNonlinearElement::MaterialUpdateType  ,
const std::vector< std::vector< double > > &  ,
double  [3][3],
double  [3][3] 
)
protected

◆ materialModelPostNonlinearElementOperation()

void AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::materialModelPostNonlinearElementOperation ( MechanicsNonlinearElement::MaterialUpdateType  )
protected

◆ materialModelPostNonlinearGaussPointOperation()

void AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::materialModelPostNonlinearGaussPointOperation ( MechanicsNonlinearElement::MaterialUpdateType  )
protected

◆ materialModelPreNonlinearElementOperation()

void AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::materialModelPreNonlinearElementOperation ( MechanicsNonlinearElement::MaterialUpdateType  )
protected

◆ materialModelPreNonlinearGaussPointOperation()

void AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::materialModelPreNonlinearGaussPointOperation ( MechanicsNonlinearElement::MaterialUpdateType  )
protected

◆ preNonlinearElementInit()

void AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::preNonlinearElementInit ( )

◆ printStressAndStrain()

void AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::printStressAndStrain ( FILE *  fp,
const std::vector< std::vector< double > > &  inputVec 
)

Writes the stess and strain values at the Gauss points within the current element to the file The 6 components of stress and strain at each Gauss point are arranged in the order: xx, yy, zz, yz, xz and xy.

Parameters
[in]fpFile pointer
[in]inputVecInput vector (Displacement, Temperature, Burnup etc) at the nodes of the current element.

◆ resetElementInfo()

void AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::resetElementInfo ( )
inline

◆ setElementVectors()

void AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::setElementVectors ( const std::vector< std::vector< double > > &  elementInputVectors,
const std::vector< std::vector< double > > &  elementInputVectors_pre,
std::vector< double > &  elementOutputVector 
)
inline

This function is used by MechanicsNonlinearFEOperator to pass the address of the element Input and Output vector to this class.

Parameters
[in]elementInputVectorsElement input vector
[in]elementInputVectors_preElement input vector for previous time
[in]elementOutputVectorElement residual vector

Definition at line 51 of file MechanicsNonlinearUpdatedLagrangianElement.h.

References d_elementInputVectors, d_elementInputVectors_pre, and d_elementOutputVector.

◆ updateMaterialModel()

void AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::updateMaterialModel ( MechanicsNonlinearElement::MaterialUpdateType  type,
const std::vector< std::vector< double > > &  elementInputVectors,
const std::vector< std::vector< double > > &  elementInputVectors_pre 
)

This function is used to update the equilibrium values of stress, strain, temperature, burnup etc that are stored in the material model class. This is typically required at the end of each loading step. This function is typically called from within the MechanicsNonlinearFEOperator's reset function, which is evaluated at the end of each loading step. This function also gets called from within the MechanicsNonlinearFEOperator's getJacobianParameters function if the jacobian is evaluated at a state (displacement, temperature etc) different from that of the last call to MechanicsNonlinearFEOperator's apply function.

Parameters
[in]typeUpdate type
[in]elementInputVectorsField (Displacement, Temperature, Burnup etc) values at the nodes of the current element.
[in]elementInputVectors_preField (Displacement, Temperature, Burnup etc) values at the nodes of the current element at the previous time-step.

◆ zeroOutGaussPointCount()

void AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::zeroOutGaussPointCount ( )
inline

Definition at line 153 of file MechanicsNonlinearUpdatedLagrangianElement.h.

References d_gaussPtCnt.

Member Data Documentation

◆ d_dphi

const std::vector<std::vector<libMesh::RealGradient> >* AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::d_dphi
protected

Spatial Derivatives of the shape functions at the Gauss points in the current element.

Definition at line 194 of file MechanicsNonlinearUpdatedLagrangianElement.h.

Referenced by MechanicsNonlinearUpdatedLagrangianElement().

◆ d_elem

const libMesh::Elem* AMP::Operator::MechanicsElement::d_elem
protectedinherited

Pointer to the current element within the finite element assembly.

Definition at line 90 of file MechanicsElement.h.

Referenced by AMP::Operator::MechanicsElement::initializeForCurrentElement().

◆ d_elementInputVectors

std::vector<std::vector<double> > AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::d_elementInputVectors
protected

Element input vectors (Displacement, temperature, burnup etc).

Definition at line 204 of file MechanicsNonlinearUpdatedLagrangianElement.h.

Referenced by setElementVectors().

◆ d_elementInputVectors_pre

std::vector<std::vector<double> > AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::d_elementInputVectors_pre
protected

Element input vectors at the previous time step (Displacement, temperature, burnup etc).

Definition at line 209 of file MechanicsNonlinearUpdatedLagrangianElement.h.

Referenced by setElementVectors().

◆ d_elementOutputVector

std::vector<double>* AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::d_elementOutputVector
protected

Element residual vector

Definition at line 212 of file MechanicsNonlinearUpdatedLagrangianElement.h.

Referenced by setElementVectors().

◆ d_elementRefXYZ

std::vector<double> AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::d_elementRefXYZ
protected

Definition at line 216 of file MechanicsNonlinearUpdatedLagrangianElement.h.

Referenced by assignReferenceXYZ().

◆ d_fe

std::shared_ptr<libMesh::FEBase> AMP::Operator::MechanicsElement::d_fe
protectedinherited

◆ d_feType

std::shared_ptr<libMesh::FEType> AMP::Operator::MechanicsElement::d_feType
protectedinherited

Type of polynomial used for the finite element shape functions. This includes both the polynomial order: First order/Second order etc. and polynomial family: Lagrange/Hierarchic/Hermite etc.

Definition at line 78 of file MechanicsElement.h.

◆ d_gaussPtCnt

int AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::d_gaussPtCnt
protected

◆ d_iDebugPrintInfoLevel

int AMP::Operator::MechanicsElement::d_iDebugPrintInfoLevel
protectedinherited

< Inside Green-Naghdi stress-rate whether to use Flanagan Taylor stress-srate or not.

Definition at line 105 of file MechanicsElement.h.

◆ d_JxW

const std::vector<libMesh::Real>* AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::d_JxW
protected

Product of the determinant of Jacobian and the quadrature weight at the Gauss points in the current element.

Definition at line 190 of file MechanicsNonlinearUpdatedLagrangianElement.h.

Referenced by MechanicsNonlinearUpdatedLagrangianElement().

◆ d_leftStretchV_n

std::vector<double> AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::d_leftStretchV_n
protected

Definition at line 218 of file MechanicsNonlinearUpdatedLagrangianElement.h.

Referenced by resetElementInfo().

◆ d_leftStretchV_np1

std::vector<double> AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::d_leftStretchV_np1
protected

Definition at line 220 of file MechanicsNonlinearUpdatedLagrangianElement.h.

Referenced by resetElementInfo().

◆ d_materialModel

std::shared_ptr<MechanicsMaterialModel> AMP::Operator::MechanicsElement::d_materialModel
protectedinherited

Shared pointer to the mechanics material model used in the current element.

Definition at line 93 of file MechanicsElement.h.

Referenced by AMP::Operator::MechanicsElement::initializeForCurrentElement().

◆ d_onePointShearIntegration

bool AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::d_onePointShearIntegration
protected

◆ d_phi

const std::vector<std::vector<libMesh::Real> >* AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::d_phi
protected

Shape functions at the Gauss points in the current element.

Definition at line 198 of file MechanicsNonlinearUpdatedLagrangianElement.h.

Referenced by MechanicsNonlinearUpdatedLagrangianElement().

◆ d_qrule

std::shared_ptr<libMesh::QBase> AMP::Operator::MechanicsElement::d_qrule
protectedinherited

Quadtrature rule used for numerical integration.

Definition at line 87 of file MechanicsElement.h.

Referenced by AMP::Operator::MechanicsElement::getNumberOfGaussPoints().

◆ d_rotationR_n

std::vector<double> AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::d_rotationR_n
protected

Definition at line 222 of file MechanicsNonlinearUpdatedLagrangianElement.h.

Referenced by resetElementInfo().

◆ d_rotationR_np1

std::vector<double> AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::d_rotationR_np1
protected

Definition at line 224 of file MechanicsNonlinearUpdatedLagrangianElement.h.

Referenced by resetElementInfo().

◆ d_useFlanaganTaylorElem

bool AMP::Operator::MechanicsElement::d_useFlanaganTaylorElem
protectedinherited

Definition at line 101 of file MechanicsElement.h.

Referenced by resetElementInfo().

◆ d_useJaumannRate

bool AMP::Operator::MechanicsElement::d_useJaumannRate
protectedinherited

A flag that checks whether to use Jaumann Rate in Updated Lagrangian formulation or not.

Definition at line 97 of file MechanicsElement.h.

Referenced by AMP::Operator::MechanicsLinearElement::MechanicsLinearElement(), AMP::Operator::MechanicsNonlinearElement::MechanicsNonlinearElement(), and resetElementInfo().

◆ d_useReducedIntegration

bool AMP::Operator::MechanicsElement::d_useReducedIntegration
protectedinherited

A flag that is true if reduced integration scheme is used and false otherwise.

Definition at line 75 of file MechanicsElement.h.

Referenced by AMP::Operator::MechanicsLinearElement::apply(), AMP::Operator::MechanicsLinearUpdatedLagrangianElement::apply(), AMP::Operator::MechanicsNonlinearElement::apply(), and apply().

◆ d_xyz

const std::vector<libMesh::Point>* AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::d_xyz
protected

Locations of the Gauss points in the current element.

Definition at line 202 of file MechanicsNonlinearUpdatedLagrangianElement.h.

Referenced by MechanicsNonlinearUpdatedLagrangianElement().


The documentation for this class was generated from the following file:



Advanced Multi-Physics (AMP)
Oak Ridge National Laboratory
Idaho National Laboratory
Los Alamos National Laboratory
This page automatically produced from the
source code by doxygen
Last updated: Tue Mar 10 2026 13:06:44.
Comments on this page