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

#include <MechanicsNonlinearElement.h>

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

Public Types

enum  MaterialUpdateType { RESET , JACOBIAN }
 

Public Member Functions

void apply () override
 
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 initMaterialModel (const std::vector< double > &initTempVector)
 
 MechanicsNonlinearElement (std::shared_ptr< const ElementOperationParameters > params)
 Constructor.
 
void printStressAndStrain (FILE *fp, const std::vector< std::vector< double > > &inputVec)
 
void setElementVectors (const std::vector< std::vector< double > > &elementInputVectors, std::vector< double > &elementOutputVector)
 
void updateMaterialModel (MaterialUpdateType type, const std::vector< std::vector< double > > &elementInputVectors)
 
virtual ~MechanicsNonlinearElement ()
 Destructor.
 

Protected Member Functions

void apply_Normal ()
 
void apply_Reduced ()
 
void materialModelNonlinearGaussPointOperation (MaterialUpdateType, const std::vector< std::vector< double > > &)
 
void materialModelPostNonlinearElementOperation (MaterialUpdateType)
 
void materialModelPostNonlinearGaussPointOperation (MaterialUpdateType)
 
void materialModelPreNonlinearElementOperation (MaterialUpdateType)
 
void materialModelPreNonlinearGaussPointOperation (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< double > * d_elementOutputVector
 
std::shared_ptr< libMesh::FEBase > d_fe
 
std::shared_ptr< libMesh::FEType > d_feType
 
int d_iDebugPrintInfoLevel
 
const std::vector< libMesh::Real > * d_JxW
 
std::shared_ptr< MechanicsMaterialModeld_materialModel
 
const std::vector< std::vector< libMesh::Real > > * d_phi
 
std::shared_ptr< libMesh::QBase > d_qrule
 
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 finite element operator for modelling solid mechanics.

Definition at line 18 of file MechanicsNonlinearElement.h.

Member Enumeration Documentation

◆ MaterialUpdateType

This is primarily for use with the updateMaterialModel() function.

Enumerator
RESET 
JACOBIAN 

Definition at line 24 of file MechanicsNonlinearElement.h.

Constructor & Destructor Documentation

◆ MechanicsNonlinearElement()

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

◆ ~MechanicsNonlinearElement()

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

Destructor.

Definition at line 43 of file MechanicsNonlinearElement.h.

Member Function Documentation

◆ apply()

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

Element residual vector computation.

Implements AMP::Operator::ElementOperation.

Definition at line 61 of file MechanicsNonlinearElement.h.

References apply_Normal(), apply_Reduced(), and AMP::Operator::MechanicsElement::d_useReducedIntegration.

◆ apply_Normal()

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

Element residual vector computation using normal integration scheme.

Referenced by apply().

◆ apply_Reduced()

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

Element residual vector computation using reduced integration scheme.

Referenced by apply().

◆ computeStressAndStrain()

void AMP::Operator::MechanicsNonlinearElement::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.

◆ initMaterialModel()

void AMP::Operator::MechanicsNonlinearElement::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::MechanicsNonlinearElement::materialModelNonlinearGaussPointOperation ( MaterialUpdateType  ,
const std::vector< std::vector< double > > &   
)
protected

◆ materialModelPostNonlinearElementOperation()

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

◆ materialModelPostNonlinearGaussPointOperation()

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

◆ materialModelPreNonlinearElementOperation()

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

◆ materialModelPreNonlinearGaussPointOperation()

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

◆ printStressAndStrain()

void AMP::Operator::MechanicsNonlinearElement::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.

◆ setElementVectors()

void AMP::Operator::MechanicsNonlinearElement::setElementVectors ( const std::vector< std::vector< double > > &  elementInputVectors,
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]elementOutputVectorElement residual vector

Definition at line 51 of file MechanicsNonlinearElement.h.

References d_elementInputVectors, and d_elementOutputVector.

◆ updateMaterialModel()

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

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

Member Data Documentation

◆ d_dphi

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

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

Definition at line 147 of file MechanicsNonlinearElement.h.

Referenced by MechanicsNonlinearElement().

◆ 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::MechanicsNonlinearElement::d_elementInputVectors
protected

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

Definition at line 157 of file MechanicsNonlinearElement.h.

Referenced by setElementVectors().

◆ d_elementOutputVector

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

Element residual vector

Definition at line 161 of file MechanicsNonlinearElement.h.

Referenced by setElementVectors().

◆ 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_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::MechanicsNonlinearElement::d_JxW
protected

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

Definition at line 143 of file MechanicsNonlinearElement.h.

Referenced by MechanicsNonlinearElement().

◆ 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_phi

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

Shape functions at the Gauss points in the current element.

Definition at line 151 of file MechanicsNonlinearElement.h.

Referenced by MechanicsNonlinearElement().

◆ 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_useFlanaganTaylorElem

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

◆ 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(), MechanicsNonlinearElement(), and AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::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(), apply(), and AMP::Operator::MechanicsNonlinearUpdatedLagrangianElement::apply().

◆ d_xyz

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

Locations of the Gauss points in the current element.

Definition at line 155 of file MechanicsNonlinearElement.h.

Referenced by MechanicsNonlinearElement().


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