Amandus: Simulations based on multilevel Schwarz methods
rhs_one.h
Go to the documentation of this file.
1 /**********************************************************************
2  * Copyright (C) 2011 - 2014 by the authors
3  * Distributed under the MIT License
4  *
5  * See the files AUTHORS and LICENSE in the project root directory
6  **********************************************************************/
7 #ifndef __rhs_one_h
8 #define __rhs_one_h
9 
10 #include <deal.II/meshworker/integration_info.h>
11 #include <deal.II/meshworker/local_integrator.h>
12 
13 #include <deal.II/fe/fe_values.h>
14 
15 using namespace dealii;
16 using namespace LocalIntegrators;
17 
22 template <int dim>
23 class RhsOne : public AmandusIntegrator<dim>
24 {
25 public:
26  RhsOne();
27  virtual void cell(MeshWorker::DoFInfo<dim>& dinfo, MeshWorker::IntegrationInfo<dim>& info) const;
28  virtual void boundary(MeshWorker::DoFInfo<dim>& dinfo,
29  MeshWorker::IntegrationInfo<dim>& info) const;
30  virtual void face(MeshWorker::DoFInfo<dim>& dinfo1, MeshWorker::DoFInfo<dim>& dinfo2,
31  MeshWorker::IntegrationInfo<dim>& info1,
32  MeshWorker::IntegrationInfo<dim>& info2) const;
33 };
34 
35 template <int dim>
37 {
38 }
39 
40 template <int dim>
41 void
42 RhsOne<dim>::cell(MeshWorker::DoFInfo<dim>& dinfo, MeshWorker::IntegrationInfo<dim>& info) const
43 {
44  const FEValuesBase<dim>& fe = info.fe_values(0);
45  const unsigned int n_dofs = fe.dofs_per_cell;
46  Vector<double>& result = dinfo.vector(0).block(0);
47  for (unsigned int k = 0; k < fe.n_quadrature_points; ++k)
48  for (unsigned int i = 0; i < n_dofs; ++i)
49  for (unsigned int d = 0; d < dim; ++d)
50  result(i) += fe.JxW(k) * fe.shape_value_component(i, k, d);
51 }
52 
53 template <int dim>
54 void
55 RhsOne<dim>::boundary(MeshWorker::DoFInfo<dim>& /*dinfo*/,
56  typename MeshWorker::IntegrationInfo<dim>& /*info*/) const
57 {
58 }
59 
60 template <int dim>
61 void
62 RhsOne<dim>::face(MeshWorker::DoFInfo<dim>& /*dinfo1*/, MeshWorker::DoFInfo<dim>& /*dinfo2*/,
63  MeshWorker::IntegrationInfo<dim>& /*info1*/,
64  MeshWorker::IntegrationInfo<dim>& /*info2*/) const
65 {
66 }
67 
68 #endif
virtual void boundary(MeshWorker::DoFInfo< dim > &dinfo, MeshWorker::IntegrationInfo< dim > &info) const
Definition: rhs_one.h:55
virtual void face(MeshWorker::DoFInfo< dim > &dinfo1, MeshWorker::DoFInfo< dim > &dinfo2, MeshWorker::IntegrationInfo< dim > &info1, MeshWorker::IntegrationInfo< dim > &info2) const
Definition: rhs_one.h:62
virtual void cell(MeshWorker::DoFInfo< dim > &dinfo, MeshWorker::IntegrationInfo< dim > &info) const
Definition: rhs_one.h:42
Definition: rhs_one.h:23
RhsOne()
Definition: rhs_one.h:36
Definition: integrator.h:29