v0.16.3
Loading...
Searching...
No Matches
AuxiliaryLogarithmicStress.hpp
Go to the documentation of this file.
1/**
2 * @file AuxiliaryLogarithmicStress.hpp
3 * @brief Evaluation of independent logarithmic material fields.
4 */
5
6#ifndef AUXILIARY_LOGARITHMIC_STRESS_HPP
7#define AUXILIARY_LOGARITHMIC_STRESS_HPP
8
10
11namespace EshelbianPlasticity {
12
13struct EshelbianCore;
14
15/** One trial state's 5/1/5 coordinates and evaluated symmetric tensors,
16 * all in GaussByCoeffs storage. */
18 using MatrixPtr = boost::shared_ptr<MatrixDouble>;
19 MatrixPtr logDeviator = boost::make_shared<MatrixDouble>();
20 MatrixPtr logDeviatorDot = boost::make_shared<MatrixDouble>();
21 MatrixPtr logJacobian = boost::make_shared<MatrixDouble>();
22 MatrixPtr stress = boost::make_shared<MatrixDouble>();
23 MatrixPtr logDeviatorTensor = boost::make_shared<MatrixDouble>();
24 MatrixPtr stressTensor = boost::make_shared<MatrixDouble>();
25};
26
27/** Evaluate the selected state and reconstruct H=D+theta*I/3.
28 * A null vector reads mesh data; explicit vectors follow the existing field
29 * evaluators' ghost-vector convention. Each state owns separate output data.
30 */
32 const EshelbianCore &ep,
33 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pipeline,
34 boost::shared_ptr<AuxiliaryLogarithmicStressData> values,
35 boost::shared_ptr<MatrixDouble> reconstructed_log_stretch,
36 SmartPetscObj<Vec> state = nullptr);
37
38} // namespace EshelbianPlasticity
39
40#endif // AUXILIARY_LOGARITHMIC_STRESS_HPP
Neo-Hookean material law in orthonormal logarithmic coordinates.
MoFEMErrorCode pushAuxiliaryLogarithmicFields(const EshelbianCore &ep, boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pipeline, boost::shared_ptr< AuxiliaryLogarithmicStressData > values, boost::shared_ptr< MatrixDouble > reconstructed_log_stretch, SmartPetscObj< Vec > state=nullptr)