1 #ifndef __cahn_hilliard_residual_h 2 #define __cahn_hilliard_residual_h 4 #include <amandus/integrator.h> 5 #include <deal.II/integrators/advection.h> 6 #include <deal.II/integrators/l2.h> 7 #include <deal.II/integrators/laplace.h> 30 Residual(
double diffusion,
const Function<dim>& advection);
32 virtual void cell(DoFInfo<dim>& dinfo, IntegrationInfo<dim>& info)
const;
41 : diffusion(diffusion)
42 , advection(&advection)
44 this->use_cell =
true;
45 this->use_boundary =
false;
46 this->use_face =
false;
53 Assert(info.values.size() >= 1, ExcDimensionMismatch(info.values.size(), 1));
54 Assert(info.gradients.size() >= 1, ExcDimensionMismatch(info.values.size(), 1));
56 const unsigned int n_qpoints = info.fe_values(1).n_quadrature_points;
57 std::vector<std::vector<double>> direction(dim, std::vector<double>(n_qpoints));
58 this->
advection->vector_values(info.fe_values(1).get_quadrature_points(), direction);
60 const std::vector<std::vector<double>>& point = info.values[0];
61 const std::vector<std::vector<Tensor<1, dim>>>& Dpoint = info.gradients[0];
63 std::vector<double> minus_d_potential(point[1].size());
64 for (
unsigned int q = 0; q < minus_d_potential.size(); ++q)
66 minus_d_potential[q] = (point[1][q] * (1.0 - point[1][q] * point[1][q])) /
diffusion;
69 L2::L2(dinfo.vector(0).block(0), info.fe_values(0), point[0]);
70 L2::L2(dinfo.vector(0).block(0), info.fe_values(0), minus_d_potential);
76 dinfo.vector(0).block(1), info.fe_values(1), Dpoint[1], direction);
virtual void cell(DoFInfo< dim > &dinfo, IntegrationInfo< dim > &info) const
Definition: cahn_hilliard/residual.h:51
Residual(double diffusion, const Function< dim > &advection)
Definition: cahn_hilliard/residual.h:40
Definition: cahn_hilliard/residual.h:27
const Function< dim > *const advection
Definition: cahn_hilliard/residual.h:36
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
Definition: integrator.h:29
const double diffusion
Definition: cahn_hilliard/residual.h:35