v0.15.5
Loading...
Searching...
No Matches
EshelbianTopologicalDerivative.hpp
Go to the documentation of this file.
1/**
2 * @file EshelbianTopologicalDerivative.hpp
3 * @brief
4 * @version 0.1
5 * @date 2026-02-11
6 *
7 * @copyright Copyright (c) 2026
8 *
9 */
10
11#ifndef ESHELBIAN_TOPOLOGICAL_DERIVATIVE_HPP
12#define ESHELBIAN_TOPOLOGICAL_DERIVATIVE_HPP
13
14namespace EshelbianPlasticity {
15
16struct TopologicalData : boost::enable_shared_from_this<TopologicalData> {
17 MatrixDouble jacobianAtPts;
18 MatrixDouble invJacobianAtPtr;
19 VectorDouble detJacobianAtPts;
20 MatrixDouble tangent1AtPts;
21 MatrixDouble tangent2AtPts;
22 MatrixDouble normalAtPts;
23 VectorDouble objAtPts;
24 MatrixDouble objDStrainAtPts;
25 MatrixDouble objDStressAtPts;
27 boost::shared_ptr<MatrixDouble> getJacobianAtPts() {
28 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &jacobianAtPts);
29 }
30 boost::shared_ptr<MatrixDouble> getInvJacobianAtPts() {
31 return boost::shared_ptr<MatrixDouble>(shared_from_this(),
33 }
34 boost::shared_ptr<VectorDouble> getDetJacobianAtPts() {
35 return boost::shared_ptr<VectorDouble>(shared_from_this(),
37 }
38 boost::shared_ptr<MatrixDouble> getTangent1AtPts() {
39 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &tangent1AtPts);
40 }
41 boost::shared_ptr<MatrixDouble> getTangent2AtPts() {
42 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &tangent2AtPts);
43 }
44 boost::shared_ptr<MatrixDouble> getNormalAtPts() {
45 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &normalAtPts);
46 }
47 boost::shared_ptr<VectorDouble> getObjAtPts() {
48 return boost::shared_ptr<VectorDouble>(shared_from_this(), &objAtPts);
49 }
50 boost::shared_ptr<MatrixDouble> getObjDStrainAtPts() {
51 return boost::shared_ptr<MatrixDouble>(shared_from_this(),
53 }
54 boost::shared_ptr<MatrixDouble> getObjDStressAtPts() {
55 return boost::shared_ptr<MatrixDouble>(shared_from_this(),
57 }
58 boost::shared_ptr<MatrixDouble> getObjDDisplacementAtPts() {
59 return boost::shared_ptr<MatrixDouble>(shared_from_this(),
61 }
62};
63
65 TopologicalTAOCtx() = default;
66 virtual ~TopologicalTAOCtx() = default;
67};
68
69boost::shared_ptr<TopologicalTAOCtx> createTopologicalTAOCtx(
70 EshelbianCore *ep,
71 ForcesAndSourcesCore::GaussHookFun set_integration_at_interior,
72 ForcesAndSourcesCore::GaussHookFun set_integration_at_face,
73 SmartPetscObj<TS> time_solver);
74
76 EshelbianCore &ep, boost::shared_ptr<VolumeElementForcesAndSourcesCore> fe,
77 ForcesAndSourcesCore::GaussHookFun interior_integration_hook,
78 ForcesAndSourcesCore::GaussHookFun boundary_integration_hook,
79 const double alpha, const double rho, const double alpha_omega);
80}
81
82#endif // ESHELBIAN_TOPOLOGICAL_DERIVATIVE_HPP
boost::shared_ptr< TopologicalTAOCtx > createTopologicalTAOCtx(EshelbianCore *ep, ForcesAndSourcesCore::GaussHookFun set_integration_at_interior, ForcesAndSourcesCore::GaussHookFun set_integration_at_face, SmartPetscObj< TS > time_solver)
MoFEMErrorCode testTopologicalDerivative(EshelbianCore &ep, boost::shared_ptr< VolumeElementForcesAndSourcesCore > fe, ForcesAndSourcesCore::GaussHookFun interior_integration_hook, ForcesAndSourcesCore::GaussHookFun boundary_integration_hook, const double alpha, const double rho, const double alpha_omega)
boost::shared_ptr< MatrixDouble > getInvJacobianAtPts()
boost::shared_ptr< MatrixDouble > getTangent2AtPts()
boost::shared_ptr< MatrixDouble > getObjDStressAtPts()
boost::shared_ptr< MatrixDouble > getObjDDisplacementAtPts()
boost::shared_ptr< MatrixDouble > getTangent1AtPts()
boost::shared_ptr< VectorDouble > getObjAtPts()
boost::shared_ptr< VectorDouble > getDetJacobianAtPts()
boost::shared_ptr< MatrixDouble > getNormalAtPts()
boost::shared_ptr< MatrixDouble > getJacobianAtPts()
boost::shared_ptr< MatrixDouble > getObjDStrainAtPts()
double rho
Definition plastic.cpp:144