v0.16.3
Loading...
Searching...
No Matches
AuxiliaryLogarithmicStressOperators.hpp
Go to the documentation of this file.
1/**
2 * @file AuxiliaryLogarithmicStressOperators.hpp
3 * @brief Material and stress-work blocks for the independent D/theta/Td fields.
4 */
5
6#ifndef AUXILIARY_LOGARITHMIC_STRESS_OPERATORS_HPP
7#define AUXILIARY_LOGARITHMIC_STRESS_OPERATORS_HPP
8
10#include <functional>
11
12namespace EshelbianPlasticity {
13
15
16/** Derived values for one trial state, all stored as GaussByCoeffs.
17 * Field interpolation remains in AuxiliaryLogarithmicStressData. These values
18 * are overwritten on every element evaluation, including rejected trials.
19 */
21 using MatrixPtr = boost::shared_ptr<MatrixDouble>;
24
25 MatrixPtr materialDeviator = boost::make_shared<MatrixDouble>(); ///< 5
27 boost::make_shared<MatrixDouble>(); ///< 5, Td-alphaU*dotD
28 MatrixPtr compliance = boost::make_shared<MatrixDouble>(); ///< 5 x 5
29 MatrixPtr energy = boost::make_shared<MatrixDouble>(); ///< 3
30 MatrixPtr volume = boost::make_shared<MatrixDouble>(); ///< 3
31
32 MatrixPtr residualDeviator = boost::make_shared<MatrixDouble>(); ///< 5
33 MatrixPtr residualJacobian = boost::make_shared<MatrixDouble>(); ///< 1
34 MatrixPtr residualStress = boost::make_shared<MatrixDouble>(); ///< 5
35
36 MatrixPtr tangentDeviator = boost::make_shared<MatrixDouble>(); ///< 5 x 5
38 boost::make_shared<MatrixDouble>(); ///< 5 x 1
40 boost::make_shared<MatrixDouble>(); ///< 5 x 5
42 boost::make_shared<MatrixDouble>(); ///< 5 x 5
43 MatrixPtr tangentJacobian = boost::make_shared<MatrixDouble>(); ///< 1 x 1
44 MatrixPtr tangentStress = boost::make_shared<MatrixDouble>(); ///< 5 x 5
45 MatrixPtr deviatorRotation = boost::make_shared<MatrixDouble>(); ///< 5 x 3
46 MatrixPtr jacobianRotation = boost::make_shared<MatrixDouble>(); ///< 1 x 3
48 boost::make_shared<MatrixDouble>(); ///< 3 x 3 x 5, dF_ij/dD_A
50 boost::make_shared<MatrixDouble>(); ///< 3 x 3 x 1, dF_ij/dtheta
51};
52
53/** Evaluate Te:D-f*(Te)+g(J), Te=Td-alphaU*dotD, without another inversion.
54 * This is the mixed stored-energy contribution, not the full stationary
55 * mechanical value, which also contains constraint, load and boundary work.
56 */
60 VectorDouble &mixed_energy);
61
62/// Return parameters already checked by the material's setup validation.
64 std::function<NeoHookeanLogarithmicMaterial::Parameters(EntityHandle)>;
65
66/** Evaluate material diagnostics without assembling any equation blocks.
67 * Current field reconstruction and geometry must precede this producer.
68 */
70 const EshelbianCore &ep,
71 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pipeline,
72 boost::shared_ptr<DataAtIntegrationPts> data,
73 boost::shared_ptr<AuxiliaryLogarithmicStressMaterialData> material_data,
74 AuxiliaryLogarithmicMaterialParameters parameters, bool lhs = false);
75
76/** Assemble material data prepared by
77 * pushAuxiliaryLogarithmicMaterialEvaluation. The lhs group supplies both
78 * partners of each auxiliary/mechanical off-diagonal block; mechanical-only
79 * operators remain in the caller's existing pipeline.
80 */
82 const EshelbianCore &ep,
83 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pipeline,
84 boost::shared_ptr<AuxiliaryLogarithmicStressMaterialData> material_data,
85 bool lhs);
86
87} // namespace EshelbianPlasticity
88
89#endif // AUXILIARY_LOGARITHMIC_STRESS_OPERATORS_HPP
Evaluation of independent logarithmic material fields.
MoFEMErrorCode pushAuxiliaryLogarithmicMaterialEvaluation(const EshelbianCore &ep, boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pipeline, boost::shared_ptr< DataAtIntegrationPts > data, boost::shared_ptr< AuxiliaryLogarithmicStressMaterialData > material_data, AuxiliaryLogarithmicMaterialParameters parameters, bool lhs=false)
std::function< NeoHookeanLogarithmicMaterial::Parameters(EntityHandle)> AuxiliaryLogarithmicMaterialParameters
Return parameters already checked by the material's setup validation.
MoFEMErrorCode evaluateAuxiliaryMixedStoredEnergy(const AuxiliaryLogarithmicStressData &fields, const AuxiliaryLogarithmicStressMaterialData &material, VectorDouble &mixed_energy)
MoFEMErrorCode pushAuxiliaryLogarithmicMaterialOps(const EshelbianCore &ep, boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pipeline, boost::shared_ptr< AuxiliaryLogarithmicStressMaterialData > material_data, bool lhs)