46
52
53 using OpPPMap = OpPostProcMapInMoab<SPACE_DIM, SPACE_DIM>;
54
55 auto get_post_proc_domain_fe = [&]() {
56 auto post_proc_fe =
57 boost::make_shared<PostProcEleDomain>(*m_field_ptr,
postProcMesh);
58 auto &pip = post_proc_fe->getOpPtrVector();
59
60 auto common_data_ptr = boost::make_shared<ContactOps::CommonData>();
61 auto henky_common_data_ptr = boost::make_shared<HenckyOps::CommonData>();
62 henky_common_data_ptr->matGradPtr = common_data_ptr->mGradPtr();
63 henky_common_data_ptr->matDPtr = common_data_ptr->mDPtr();
64
65 auto push_domain_ops = [&](auto &pip) {
68 "Apply base transform");
71 common_data_ptr->mDPtr(), Sev::inform),
72 "Set block data");
74 "U", common_data_ptr->mGradPtr()));
75 pip.push_back(
76 new OpCalculateEigenVals<SPACE_DIM>("U", henky_common_data_ptr));
77 pip.push_back(
78 new OpCalculateLogC<SPACE_DIM>("U", henky_common_data_ptr));
79 pip.push_back(
80 new OpCalculateLogC_dC<SPACE_DIM>("U", henky_common_data_ptr));
81 pip.push_back(
82 new OpCalculateHenckyStress<SPACE_DIM>("U", henky_common_data_ptr));
83 pip.push_back(
84 new OpCalculatePiolaStress<SPACE_DIM>("U", henky_common_data_ptr));
85 pip.push_back(new OpCalculateHVecTensorField<SPACE_DIM, SPACE_DIM>(
86 "SIGMA", common_data_ptr->contactStressPtr()));
87 };
88
89
93 "Apply transform");
94
95 auto op_loop_side =
96 new OpLoopSide<SideEle>(*m_field_ptr,
"dFE",
SPACE_DIM);
97
98 push_domain_ops(op_loop_side->getOpPtrVector());
99 pip.push_back(op_loop_side);
100
101 pip.push_back(new OpCalculateHVecTensorTrace<SPACE_DIM, BoundaryEleOp>(
102 "SIGMA", common_data_ptr->contactTractionPtr()));
103 } else {
104 push_domain_ops(pip);
105 }
106
107 auto u_ptr = boost::make_shared<MatrixDouble>();
108 pip.push_back(new OpCalculateVectorFieldValues<SPACE_DIM>("U", u_ptr));
109
110 post_proc_fe->getOpPtrVector().push_back(
111
113
114 post_proc_fe->getPostProcMesh(), post_proc_fe->getMapGaussPts(),
115
116 {},
117
118 {{"U", u_ptr},
119
120
121
122 {"t", (SPACE_DIM == 3) ? common_data_ptr->contactTractionPtr()
123 : nullptr}},
124
125 {
126
127 {"SIGMA", common_data_ptr->contactStressPtr()},
128
129 {"G", common_data_ptr->mGradPtr()},
130
131 {"P2", henky_common_data_ptr->getMatFirstPiolaStress()}
132
133 },
134
135 {}
136
137 )
138
139 );
140
141 return post_proc_fe;
142 };
143
144 auto get_post_proc_bdy_fe = [&]() {
145 auto post_proc_fe =
146 boost::make_shared<PostProcEleBdy>(*m_field_ptr,
postProcMesh);
147 auto &pip = post_proc_fe->getOpPtrVector();
148
149 auto common_data_ptr = boost::make_shared<ContactOps::CommonData>();
150
153 "Apply transform");
154 pip.push_back(new OpCalculateVectorFieldValues<SPACE_DIM>(
155 "U", common_data_ptr->contactDispPtr()));
156 pip.push_back(new OpCalculateHVecTensorTrace<SPACE_DIM, BoundaryEleOp>(
157 "SIGMA", common_data_ptr->contactTractionPtr()));
158
159 pip.push_back(
160
162
163 post_proc_fe->getPostProcMesh(), post_proc_fe->getMapGaussPts(),
164
165 {},
166
167 {{"U", common_data_ptr->contactDispPtr()},
168 {"t", common_data_ptr->contactTractionPtr()}},
169
170 {},
171
172 {}
173
174 )
175
176 );
177
178 return post_proc_fe;
179 };
180
181 auto get_integrate_traction = [&]() {
182 auto integrate_traction = boost::make_shared<BoundaryEle>(*m_field_ptr);
183 auto common_data_ptr = boost::make_shared<ContactOps::CommonData>();
185 (AddHOOps<SPACE_DIM - 1, SPACE_DIM, SPACE_DIM>::add(
186 integrate_traction->getOpPtrVector(), {HDIV} )),
187 "Apply transfrom");
188 integrate_traction->getOpPtrVector().push_back(
189 new OpCalculateHVecTensorTrace<SPACE_DIM, BoundaryEleOp>(
190 "SIGMA", common_data_ptr->contactTractionPtr()));
191 integrate_traction->getOpPtrVector().push_back(
195 };
196 return integrate_traction;
197 };
198
203 }
#define CHK_THROW_MESSAGE(err, msg)
Check and throw MoFEM exception.
@ HDIV
field with continuous normal traction
#define CHKERR
Inline error check.
PetscErrorCode DMoFEMGetInterfacePtr(DM dm, MoFEM::Interface **m_field_ptr)
Get pointer to MoFEM::Interface.
auto createSmartVectorMPI(MPI_Comm comm, PetscInt n, PetscInt N)
Create MPI Vector.
OpPostProcMapInMoab< SPACE_DIM, SPACE_DIM > OpPPMap
static constexpr int approx_order
virtual MPI_Comm & get_comm() const =0
virtual int get_comm_rank() const =0
Deprecated interface functions.
Post post-proc data at points from hash maps.