3 namespace StVenantKirchhoff
24 dealii::FullMatrix<double>& M,
const dealii::FEValuesBase<dim>& fe,
25 const dealii::VectorSlice<
const std::vector<std::vector<dealii::Tensor<1, dim>>>>& input,
26 double lambda = 0.,
double mu = 1.)
28 const unsigned int nq = fe.n_quadrature_points;
29 const unsigned int n_dofs = fe.dofs_per_cell;
31 for (
unsigned int k = 0; k < nq; ++k)
33 const double dx = fe.JxW(k);
35 dealii::Tensor<2, dim> F;
37 dealii::Tensor<2, dim> E;
38 for (
unsigned int d1 = 0; d1 < dim; ++d1)
41 for (
unsigned int d2 = 0; d2 < dim; ++d2)
43 F[d1][d2] += input[d1][k][d2];
44 E[d1][d2] = .5 * (input[d1][k][d2] + input[d2][k][d1]);
45 for (
unsigned int dd = 0; dd < dim; ++dd)
46 E[d1][d2] += .5 * (input[dd][k][d1] * input[dd][k][d2]);
51 for (
unsigned int dd = 0; dd < dim; ++dd)
53 for (
unsigned int dd = 0; dd < dim; ++dd)
54 E[dd][dd] += lambda / (2. * mu) * trace;
56 for (
unsigned int i = 0; i < n_dofs; ++i)
59 dealii::Tensor<2, dim> F_i;
61 dealii::Tensor<2, dim> E_i;
62 for (
unsigned int d1 = 0; d1 < dim; ++d1)
65 for (
unsigned int d2 = 0; d2 < dim; ++d2)
67 F_i[d1][d2] += fe.shape_grad_component(i, k, d1)[d2];
69 .5 * (fe.shape_grad_component(i, k, d1)[d2] + fe.shape_grad_component(i, k, d2)[d1]);
72 for (
unsigned int dd = 0; dd < dim; ++dd)
74 Ed1d2 += .5 * (input[dd][k][d1] * fe.shape_grad_component(i, k, dd)[d2]);
82 for (
unsigned int dd = 0; dd < dim; ++dd)
84 for (
unsigned int dd = 0; dd < dim; ++dd)
85 E_i[dd][dd] += lambda / (2. * mu) * trace;
89 dealii::Tensor<2, dim> L_i;
92 for (
unsigned int d1 = 0; d1 < dim; ++d1)
93 for (
unsigned int d2 = 0; d2 < dim; ++d2)
96 for (
unsigned int dd = 0; dd < dim; ++dd)
98 L_i[d1][d2] += F_i[d1][dd] * E[dd][d2];
99 temp += F[d1][dd] * E_i[dd][d2];
105 for (
unsigned int j = 0; j < n_dofs; ++j)
108 for (
unsigned int d1 = 0; d1 < dim; ++d1)
109 for (
unsigned int d2 = 0; d2 < dim; ++d2)
110 temp += fe.shape_grad_component(j, k, d1)[d2] * L_i[d1][d2];
112 M(i, j) += 2. * mu * dx * temp;
void cell_matrix(dealii::FullMatrix< double > &M, const dealii::FEValuesBase< dim > &fe, const dealii::VectorSlice< const std::vector< std::vector< dealii::Tensor< 1, dim >>>> &input, double lambda=0., double mu=1.)
Definition: matrix_integrators.h:23
Definition: elasticity/eigen.h:25