#include <MoFEM.hpp>
#include <MethodForForceScaling.hpp>
#include <DirichletBC.hpp>
Go to the source code of this file.
◆ FTensor1
◆ get_displacement()
Definition at line 115 of file DirichletBC.cpp.
122 FTensor1 t_coords(coords[0], coords[1], coords[2]);
123 const double a = std::sqrt(t_normal(
i) * t_normal(
i));
124 t_omega(
i) = t_normal(
i) * (theta /
a);
127 t_delta(
i) = t_centr(
i) - t_coords(
i);
128 t_disp(
i) = t_delta(
i) - t_R(
i,
j) * t_delta(
j);
◆ get_rotation_from_vector()
auto get_rotation_from_vector |
( |
FTensor1 & |
t_omega | ) |
|
|
inline |
Definition at line 92 of file DirichletBC.cpp.
100 const double angle = std::sqrt(t_omega(
i) * t_omega(
i));
101 if (std::abs(angle) < 1e-18)
105 t_Omega(
i,
j) = FTensor::levi_civita<double>(
i,
j,
k) * t_omega(
k);
106 const double a = sin(angle) / angle;
107 const double ss_2 = sin(angle / 2.);
108 const double b = 2. * ss_2 * ss_2 / (angle * angle);
109 t_R(
i,
j) +=
a * t_Omega(
i,
j);
110 t_R(
i,
j) += b * t_Omega(
i,
k) * t_Omega(
k,
j);
◆ set_numered_dofs_on_ents()
Definition at line 11 of file DirichletBC.cpp.
20 for (
auto eit = ents.pair_begin(); eit != ents.pair_end(); ++eit) {
22 auto lo_dit = dofs_by_uid.lower_bound(
23 DofEntity::getLoFieldEntityUId(bit_number, eit->first));
24 auto hi_dit = dofs_by_uid.upper_bound(
25 DofEntity::getHiFieldEntityUId(bit_number, eit->second));
27 for (; lo_dit != hi_dit; ++lo_dit) {
29 if (dof->getHasLocalIndex())