16 #ifndef dealii_integrators_divergence_h 17 #define dealii_integrators_divergence_h 20 #include <deal.II/base/config.h> 22 #include <deal.II/base/exceptions.h> 23 #include <deal.II/base/quadrature.h> 25 #include <deal.II/fe/fe_values.h> 26 #include <deal.II/fe/mapping.h> 28 #include <deal.II/integrators/grad_div.h> 30 #include <deal.II/lac/full_matrix.h> 32 #include <deal.II/meshworker/dof_info.h> 34 DEAL_II_NAMESPACE_OPEN
73 const double dx = fe.
JxW(k) * factor;
74 for (
unsigned int i = 0; i < t_dofs; ++i)
77 for (
unsigned int d = 0; d < dim; ++d)
78 for (
unsigned int j = 0; j < n_dofs; ++j)
81 M(i, j) += dx * du * vv;
99 template <
int dim,
typename number>
105 const double factor = 1.)
115 const double dx = factor * fetest.
JxW(k);
117 for (
unsigned int i = 0; i < t_dofs; ++i)
118 for (
unsigned int d = 0; d < dim; ++d)
119 result(i) += dx * input[d][k][d] * fetest.
shape_value(i, k);
136 template <
int dim,
typename number>
141 const VectorSlice<
const std::vector<std::vector<double>>> &input,
142 const double factor = 1.)
152 const double dx = factor * fetest.
JxW(k);
154 for (
unsigned int i = 0; i < t_dofs; ++i)
155 for (
unsigned int d = 0; d < dim; ++d)
156 result(i) -= dx * input[d][k] * fetest.
shape_grad(i, k)[d];
188 const double dx = fe.
JxW(k) * factor;
189 for (
unsigned int d = 0; d < dim; ++d)
190 for (
unsigned int i = 0; i < t_dofs; ++i)
193 for (
unsigned int j = 0; j < n_dofs; ++j)
196 M(i, j) += dx * vv * Du[d];
214 template <
int dim,
typename number>
219 const double factor = 1.)
229 const double dx = factor * fetest.
JxW(k);
231 for (
unsigned int i = 0; i < t_dofs; ++i)
232 for (
unsigned int d = 0; d < dim; ++d)
250 template <
int dim,
typename number>
254 const std::vector<double> &input,
255 const double factor = 1.)
265 const double dx = factor * fetest.
JxW(k);
267 for (
unsigned int i = 0; i < t_dofs; ++i)
268 for (
unsigned int d = 0; d < dim; ++d)
300 for (
unsigned int i = 0; i < t_dofs; ++i)
301 for (
unsigned int j = 0; j < n_dofs; ++j)
302 for (
unsigned int d = 0; d < dim; ++d)
318 template <
int dim,
typename number>
324 const VectorSlice<
const std::vector<std::vector<double>>> &data,
338 for (
unsigned int i = 0; i < t_dofs; ++i)
339 for (
unsigned int d = 0; d < dim; ++d)
340 result(i) += ndx[d] * fetest.
shape_value(i, k) * data[d][k];
354 template <
int dim,
typename number>
358 const std::vector<double> &data,
372 for (
unsigned int i = 0; i < t_dofs; ++i)
373 for (
unsigned int d = 0; d < dim; ++d)
421 const double dx = factor * fe1.
JxW(k);
422 for (
unsigned int i = 0; i < t_dofs; ++i)
423 for (
unsigned int j = 0; j < n_dofs; ++j)
424 for (
unsigned int d = 0; d < dim; ++d)
433 M11(i, j) += .5 * dx * un1 * v1;
434 M12(i, j) += .5 * dx * un2 * v1;
435 M21(i, j) += .5 * dx * un1 * v2;
436 M22(i, j) += .5 * dx * un2 * v2;
445 DEAL_II_DEPRECATED
void 448 const double factor = 1.);
462 template <
int dim,
typename number>
463 DEAL_II_DEPRECATED
void 468 const double factor = 1.);
470 template <
int dim,
typename number>
518 const double dx = factor * fe1.
JxW(k);
519 for (
unsigned int i = 0; i < n_dofs; ++i)
520 for (
unsigned int j = 0; j < n_dofs; ++j)
521 for (
unsigned int d = 0; d < dim; ++d)
532 M11(i, j) += dx * un1 * vn1;
533 M12(i, j) += dx * un2 * vn1;
534 M21(i, j) += dx * un1 * vn2;
535 M22(i, j) += dx * un2 * vn2;
562 double div = Du[0][k][0];
563 for (
unsigned int d = 1; d < dim; ++d)
565 result += div * div * fe.
JxW(k);
574 DEAL_II_NAMESPACE_CLOSE
double shape_value_component(const unsigned int function_no, const unsigned int point_no, const unsigned int component) const
const Tensor< 1, spacedim > & shape_grad(const unsigned int function_no, const unsigned int quadrature_point) const
#define AssertDimension(dim1, dim2)
void u_dot_n_residual(Vector< number > &result, const FEValuesBase< dim > &fe, const FEValuesBase< dim > &fetest, const VectorSlice< const std::vector< std::vector< double >>> &data, double factor=1.)
const unsigned int dofs_per_cell
void grad_div_residual(Vector< number > &result, const FEValuesBase< dim > &fetest, const VectorSlice< const std::vector< std::vector< Tensor< 1, dim >>>> &input, const double factor=1.)
const Tensor< 1, spacedim > & normal_vector(const unsigned int i) const
void cell_matrix(FullMatrix< double > &M, const FEValuesBase< dim > &fe, double factor=1.)
#define AssertVectorVectorDimension(vec, dim1, dim2)
Library of integrals over cells and faces.
void cell_residual(Vector< number > &result, const FEValuesBase< dim > &fetest, const VectorSlice< const std::vector< std::vector< Tensor< 1, dim >>>> &input, const double factor=1.)
void cell_matrix(FullMatrix< double > &M, const FEValuesBase< dim > &fe, const FEValuesBase< dim > &fetest, double factor=1.)
void gradient_residual(Vector< number > &result, const FEValuesBase< dim > &fetest, const std::vector< Tensor< 1, dim >> &input, const double factor=1.)
#define Assert(cond, exc)
static::ExceptionBase & ExcDimensionMismatch(std::size_t arg1, std::size_t arg2)
const FiniteElement< dim, spacedim > & get_fe() const
void gradient_matrix(FullMatrix< double > &M, const FEValuesBase< dim > &fe, const FEValuesBase< dim > &fetest, double factor=1.)
void u_dot_n_matrix(FullMatrix< double > &M, const FEValuesBase< dim > &fe, const FEValuesBase< dim > &fetest, double factor=1.)
void u_dot_n_jump_matrix(FullMatrix< double > &M11, FullMatrix< double > &M12, FullMatrix< double > &M21, FullMatrix< double > &M22, const FEValuesBase< dim > &fe1, const FEValuesBase< dim > &fe2, double factor=1.)
const unsigned int n_quadrature_points
void u_times_n_residual(Vector< number > &result, const FEValuesBase< dim > &fetest, const std::vector< double > &data, double factor=1.)
const double & shape_value(const unsigned int function_no, const unsigned int point_no) const
void grad_div_matrix(FullMatrix< double > &M, const FEValuesBase< dim > &fe, const double factor=1.)
void cell_residual(Vector< number > &result, const FEValuesBase< dim > &fetest, const VectorSlice< const std::vector< std::vector< Tensor< 1, dim >>>> &input, const double factor=1.)
double norm(const FEValuesBase< dim > &fe, const VectorSlice< const std::vector< std::vector< Tensor< 1, dim >>>> &Du)
Tensor< 1, spacedim > shape_grad_component(const unsigned int function_no, const unsigned int point_no, const unsigned int component) const
double JxW(const unsigned int quadrature_point) const