7 #ifndef __elasticity_residual_h 8 #define __elasticity_residual_h 10 #include <amandus/elasticity/integrators.h> 11 #include <amandus/integrator.h> 12 #include <deal.II/integrators/divergence.h> 13 #include <deal.II/integrators/elasticity.h> 14 #include <deal.II/integrators/grad_div.h> 15 #include <deal.II/integrators/l2.h> 16 #include <deal.II/integrators/laplace.h> 17 #include <elasticity/parameters.h> 92 template <
int dim,
int force_type = 0>
96 Residual(
const Parameters& par,
const dealii::Function<dim>& bdry,
97 const std::set<unsigned int>& dirichlet = std::set<unsigned int>());
99 virtual void cell(DoFInfo<dim>& dinfo, IntegrationInfo<dim>& info)
const;
100 virtual void boundary(DoFInfo<dim>& dinfo, IntegrationInfo<dim>& info)
const;
101 virtual void face(DoFInfo<dim>& dinfo1, DoFInfo<dim>& dinfo2, IntegrationInfo<dim>& info1,
102 IntegrationInfo<dim>& info2)
const;
105 dealii::SmartPointer<const Parameters, class Residual<dim>>
parameters;
106 dealii::SmartPointer<const dealii::Function<dim>,
class Residual<dim>> boundary_values;
112 template <
int dim,
int force_type>
114 const std::set<unsigned int>& dirichlet)
116 , boundary_values(&bdry)
117 , dirichlet_boundaries(dirichlet)
119 this->input_vector_names.push_back(
"Newton iterate");
122 template <
int dim,
int force_type>
126 Assert(info.values.size() >= 1, dealii::ExcDimensionMismatch(info.values.size(), 1));
127 Assert(info.gradients.size() >= 1, dealii::ExcDimensionMismatch(info.values.size(), 1));
134 std::vector<std::vector<double>> force(
135 dim, std::vector<double>(info.fe_values(0).n_quadrature_points, 0.));
136 std::fill(force[dim - 1].begin(), force[dim - 1].end(), 9.80665);
137 dealii::LocalIntegrators::L2::L2(dinfo.vector(0).block(0), info.fe_values(0), force);
143 dinfo.vector(0).block(0),
145 dealii::make_slice(info.gradients[0], 0, dim),
149 dealii::make_slice(info.gradients[0], 0, dim),
156 dealii::make_slice(info.gradients[0], 0, dim),
162 template <
int dim,
int force_type>
166 std::vector<std::vector<double>> null(
167 dim, std::vector<double>(info.fe_values(0).n_quadrature_points, 0.));
169 boundary_values->vector_values(info.fe_values(0).get_quadrature_points(), null);
171 const unsigned int deg = info.fe_values(0).get_fe().tensor_degree();
174 dealii::LocalIntegrators::Elasticity::nitsche_residual(
175 dinfo.vector(0).block(0),
177 dealii::make_slice(info.values[0], 0, dim),
178 dealii::make_slice(info.gradients[0], 0, dim),
180 dealii::LocalIntegrators::Laplace::compute_penalty(dinfo, dinfo, deg, deg),
185 template <
int dim,
int force_type>
188 IntegrationInfo<dim>& info1, IntegrationInfo<dim>& info2)
const 190 const unsigned int deg = info1.fe_values(0).get_fe().tensor_degree();
191 dealii::LocalIntegrators::Elasticity::ip_residual(
192 dinfo1.vector(0).block(0),
193 dinfo2.vector(0).block(0),
196 dealii::make_slice(info1.values[0], 0, dim),
197 dealii::make_slice(info1.gradients[0], 0, dim),
198 dealii::make_slice(info2.values[0], 0, dim),
199 dealii::make_slice(info2.gradients[0], 0, dim),
200 dealii::LocalIntegrators::Laplace::compute_penalty(dinfo1, dinfo2, deg, deg),
Definition: elasticity/residual.h:93
dealii::SmartPointer< const Parameters, class Residual< dim > > parameters
Definition: elasticity/residual.h:105
Definition: elasticity/eigen.h:25
dealii::SmartPointer< const dealii::Function< dim >, class Residual< dim > > boundary_values
Definition: elasticity/residual.h:106
virtual void face(DoFInfo< dim > &dinfo1, DoFInfo< dim > &dinfo2, IntegrationInfo< dim > &info1, IntegrationInfo< dim > &info2) const
Definition: elasticity/residual.h:187
virtual void boundary(DoFInfo< dim > &dinfo, IntegrationInfo< dim > &info) const
Definition: elasticity/residual.h:164
std::set< unsigned int > dirichlet_boundaries
Definition: elasticity/residual.h:107
void cell_residual(dealii::Vector< number > &result, 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: elasticity/integrators.h:23
virtual void cell(DoFInfo< dim > &dinfo, IntegrationInfo< dim > &info) const
Definition: elasticity/residual.h:124
Definition: integrator.h:29