62 "", 14,
"external_strain", ts,
63 [&
ep,
testing](TS, PetscInt, PetscReal, Vec) {
65 const std::array<double, 3> point{2.5, 0., 0.};
66 auto w_ptr = boost::make_shared<MatrixDouble>();
68 auto data = evaluator->getData<VolumeElementForcesAndSourcesCore>(
70 auto fe =
data->feMethodPtr;
71 fe->getRuleHook = [](int, int, int) {
return -1; };
74 fe->getUserPolynomialBase() =
75 boost::make_shared<CGGUserPolynomialBase>(
nullptr,
true);
76 CHKERR EshelbianPlasticity::AddHOOps<
80 fe->getOpPtrVector().push_back(
new OpCalculateVectorFieldValues<SPACE_DIM>(
84 point.data(), 1e-12, getProblemPtr(
ep.
dmElastic)->getName(),
"EP",
87 const bool found = fe->gaussPts.size2() == 1;
90 double owner_data[2] = {0., 0.};
91 if (found && w_ptr->size1() && w_ptr->size2()) {
92 owner_data[0] = (*w_ptr)(0, 0);
95 CHKERR MPI_Allreduce(MPI_IN_PLACE, owner_data, 2, MPI_DOUBLE, MPI_SUM,
97 if (owner_data[1] == 0.)
99 "Evaluation point (2.5, 0, 0) not found on any rank");
101 "external strain displacement", owner_data[0] / owner_data[1], 0.25,
110 "", 20,
"cook_reaction", ts,
111 [monitor,
testing](TS, PetscInt, PetscReal
t, Vec) {
118 "cook clamp reaction", reaction, -(160.0 / 3.0) *
t, {1e-7, 0.});
130 auto add_reaction_test = [&](
int number,
const std::string &
name,
131 const char *block_or_null,
int component,
132 double expected,
double tolerance) {
133 return testing->addTestCommandLine(
135 [monitor,
testing,
name, block_or_null, component, expected,
140 block = block_or_null;
152 CHKERR add_reaction_test(15,
"reaction_moment",
nullptr, 5, 0.25, 1e-3);
154 CHKERR add_reaction_test(16,
"reaction_force",
nullptr, 0, -25.4149, 1e-4);
155 CHKERR add_reaction_test(19,
"spring_reaction",
"SPRING_BC", 2, 2.016e1,
159 "", 17,
"strain_energy", [monitor,
testing]() {
162 "strain energy", *monitor->getEnergy(), 1.27096, {1e-5, 0.});
172 "load factor at step 7",
ep.
loadFactor, 16.0393, {1e-5, 0.});