2#ifndef included_AMP_MechanicsNonlinearFEOperator
3#define included_AMP_MechanicsNonlinearFEOperator
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"
71 void reset( std::shared_ptr<const OperatorParameters> )
override;
116 const std::string &
fname );
125 std::shared_ptr<OperatorParameters>
144 std::shared_ptr<AMP::LinearAlgebra::Vector> r )
override;
168 std::shared_ptr<AMP::LinearAlgebra::Variable>
var );
172 std::shared_ptr<AMP::LinearAlgebra::Variable>
var );
181 std::vector<std::vector<double>> &,
182 std::vector<std::vector<double>> & );
197 std::shared_ptr<MechanicsNonlinearUpdatedLagrangianElement>
200 std::shared_ptr<ElementOperation>
205 std::vector<AMP::LinearAlgebra::Vector::const_shared_ptr>
d_inVec;
207 std::vector<AMP::LinearAlgebra::Vector::shared_ptr>
std::shared_ptr< Vector > shared_ptr
Shorthand for shared pointer to Vector.
std::shared_ptr< const Vector > const_shared_ptr
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)
std::vector< bool > d_isFrozen
AMP::LinearAlgebra::Vector::shared_ptr d_outVec
std::shared_ptr< AMP::LinearAlgebra::MultiVariable > d_inpVariables
void postAssembly() override
void reset(std::shared_ptr< const OperatorParameters >) override
MechanicsNonlinearFEOperator(std::shared_ptr< const OperatorParameters > params)
std::shared_ptr< ElementOperation > d_mechLULElem
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< double > d_elementOutputVector
AMP::Mesh::MeshElementVectorPtr d_currNodes
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 &)
bool d_useUpdatedLagrangian
virtual ~MechanicsNonlinearFEOperator()
bool d_resetReusesRadialReturn
std::shared_ptr< ElementOperation > d_mechLinElem
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
bool d_jacobianReusesRadialReturn
std::vector< bool > d_isActive
MechanicsNonlinearFEOperator(std::shared_ptr< const MechanicsNonlinearFEOperatorParameters >, bool)
std::shared_ptr< AMP::LinearAlgebra::Variable > d_outVariable
std::shared_ptr< MechanicsNonlinearUpdatedLagrangianElement > d_mechNULElem
std::vector< std::vector< size_t > > d_dofIndices
void postElementOperation() override
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
const unsigned int TOTAL_NUMBER_OF_VARIABLES