Advanced Multi-Physics (AMP)
On-Line Documentation
MechanicsNonlinearFEOperator.h
Go to the documentation of this file.
1
2#ifndef included_AMP_MechanicsNonlinearFEOperator
3#define included_AMP_MechanicsNonlinearFEOperator
4
5/* AMP files */
6#include "AMP/discretization/DOF_Manager.h"
7#include "AMP/mesh/MeshElement.h"
8#include "AMP/operators/libmesh/NonlinearFEOperator.h"
9#include "AMP/operators/mechanics/MechanicsConstants.h"
10#include "AMP/operators/mechanics/MechanicsNonlinearElement.h"
11#include "AMP/operators/mechanics/MechanicsNonlinearFEOperatorParameters.h"
12#include "AMP/operators/mechanics/MechanicsNonlinearUpdatedLagrangianElement.h"
13#include "AMP/vectors/MultiVariable.h"
14#include "AMP/vectors/Variable.h"
15
16#include <vector>
17
18namespace AMP::Operator {
19
28{
29public:
61 explicit MechanicsNonlinearFEOperator( std::shared_ptr<const OperatorParameters> params );
62
67
71 void reset( std::shared_ptr<const OperatorParameters> ) override;
72
79
89
95 std::shared_ptr<AMP::LinearAlgebra::Variable> getInputVariable() const override
96 {
97 return d_inpVariables;
98 }
99
103 std::shared_ptr<AMP::LinearAlgebra::Variable> getOutputVariable() const override
104 {
105 return d_outVariable;
106 }
107
116 const std::string &fname );
117
118 std::shared_ptr<MechanicsMaterialModel> getMaterialModel() { return d_materialModel; }
119
120protected:
125 std::shared_ptr<OperatorParameters>
127
133 void init();
134
144 std::shared_ptr<AMP::LinearAlgebra::Vector> r ) override;
145
151 void postAssembly() override;
152
159
164 void postElementOperation() override;
165
168 std::shared_ptr<AMP::LinearAlgebra::Variable> var );
169
172 std::shared_ptr<AMP::LinearAlgebra::Variable> var );
173
175 const AMP::Mesh::MeshElement & );
176
178 const AMP::Mesh::MeshElement & );
179
181 std::vector<std::vector<double>> &,
182 std::vector<std::vector<double>> & );
183
184 void getDofIndicesForCurrentElement( int varId, std::vector<std::vector<size_t>> &dofIds );
185
186 MechanicsNonlinearFEOperator( std::shared_ptr<const MechanicsNonlinearFEOperatorParameters>,
187 bool );
188
189
190protected:
191 std::vector<double> d_elementOutputVector;
193 std::shared_ptr<MechanicsNonlinearElement> d_mechNonlinElem;
195 std::shared_ptr<ElementOperation> d_mechLinElem;
197 std::shared_ptr<MechanicsNonlinearUpdatedLagrangianElement>
200 std::shared_ptr<ElementOperation>
203 std::shared_ptr<MechanicsMaterialModel> d_materialModel;
205 std::vector<AMP::LinearAlgebra::Vector::const_shared_ptr> d_inVec;
207 std::vector<AMP::LinearAlgebra::Vector::shared_ptr>
228 std::vector<bool> d_isActive;
230 std::vector<bool> d_isFrozen;
237 std::shared_ptr<AMP::LinearAlgebra::MultiVariable> d_inpVariables;
239 std::shared_ptr<AMP::LinearAlgebra::Variable> d_outVariable;
241 std::shared_ptr<AMP::Discretization::DOFManager> d_dofMap[Mechanics::TOTAL_NUMBER_OF_VARIABLES];
242
244
245 std::vector<std::vector<size_t>> d_dofIndices;
246};
247
248} // namespace AMP::Operator
249
250#endif
std::shared_ptr< Vector > shared_ptr
Shorthand for shared pointer to Vector.
Definition Vector.h:60
std::shared_ptr< const Vector > const_shared_ptr
Definition Vector.h:65
A pointer class to wrap a MeshElementVector.
std::shared_ptr< AMP::Discretization::DOFManager > d_dofMap[Mechanics::TOTAL_NUMBER_OF_VARIABLES]
AMP::LinearAlgebra::Vector::shared_ptr mySubsetVector(AMP::LinearAlgebra::Vector::shared_ptr vec, std::shared_ptr< AMP::LinearAlgebra::Variable > var)
AMP::LinearAlgebra::Vector::shared_ptr d_outVec
std::shared_ptr< AMP::LinearAlgebra::MultiVariable > d_inpVariables
void reset(std::shared_ptr< const OperatorParameters >) override
MechanicsNonlinearFEOperator(std::shared_ptr< const OperatorParameters > params)
void preElementOperation(const AMP::Mesh::MeshElement &) override
std::shared_ptr< MechanicsMaterialModel > d_materialModel
void setVector(unsigned int id, AMP::LinearAlgebra::Vector::const_shared_ptr frozenVec)
std::shared_ptr< AMP::LinearAlgebra::Variable > getInputVariable() const override
AMP::LinearAlgebra::Vector::const_shared_ptr mySubsetVector(AMP::LinearAlgebra::Vector::const_shared_ptr vec, std::shared_ptr< AMP::LinearAlgebra::Variable > var)
void getDofIndicesForCurrentElement(int varId, std::vector< std::vector< size_t > > &dofIds)
std::vector< AMP::LinearAlgebra::Vector::shared_ptr > d_inVec_pre
std::vector< AMP::LinearAlgebra::Vector::const_shared_ptr > d_inVec
void printStressAndStrain(AMP::LinearAlgebra::Vector::const_shared_ptr u, const std::string &fname)
void updateMaterialForUpdatedLagrangianElement(MechanicsNonlinearElement::MaterialUpdateType, const AMP::Mesh::MeshElement &)
std::shared_ptr< AMP::LinearAlgebra::Variable > getOutputVariable() const override
AMP::LinearAlgebra::Vector::shared_ptr d_refXYZ
std::shared_ptr< OperatorParameters > getJacobianParameters(AMP::LinearAlgebra::Vector::const_shared_ptr) override
void preAssembly(AMP::LinearAlgebra::Vector::const_shared_ptr u, std::shared_ptr< AMP::LinearAlgebra::Vector > r) override
MechanicsNonlinearFEOperator(std::shared_ptr< const MechanicsNonlinearFEOperatorParameters >, bool)
std::shared_ptr< AMP::LinearAlgebra::Variable > d_outVariable
std::shared_ptr< MechanicsNonlinearUpdatedLagrangianElement > d_mechNULElem
void updateMaterialForElement(MechanicsNonlinearElement::MaterialUpdateType, const AMP::Mesh::MeshElement &)
AMP::LinearAlgebra::Vector::const_shared_ptr d_referenceTemperature
std::shared_ptr< MechanicsMaterialModel > getMaterialModel()
void setReferenceTemperature(AMP::LinearAlgebra::Vector::const_shared_ptr refTemp)
void updateMaterialForElementCommonFunction(const AMP::Mesh::MeshElement &, std::vector< std::vector< double > > &, std::vector< std::vector< double > > &)
std::shared_ptr< MechanicsNonlinearElement > d_mechNonlinElem
std::shared_ptr< AMP::Operator::Operator > shared_ptr
Definition Operator.h:29
const unsigned int TOTAL_NUMBER_OF_VARIABLES



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:41.
Comments on this page