24 #ifndef SPARSITYMAKER_H_
25 #define SPARSITYMAKER_H_
28 #include <dofs/dof_tools.h>
29 #include <lac/constraint_matrix.h>
32 #include <deal.II/multigrid/mg_dof_handler.h>
33 #include <deal.II/multigrid/mg_constrained_dofs.h>
34 #include <deal.II/multigrid/multigrid.h>
35 #include <deal.II/multigrid/mg_transfer.h>
36 #include <deal.II/multigrid/mg_tools.h>
37 #include <deal.II/multigrid/mg_coarse.h>
38 #include <deal.II/multigrid/mg_smoother.h>
39 #include <deal.II/multigrid/mg_matrix.h>
49 template<
template<
int,
int>
class DH,
int dim>
63 dealii::BlockSparsityPattern & sparsity,
64 const dealii::ConstraintMatrix& hanging_node_constraints,
65 const std::vector<unsigned int>& blocks)
const;
70 dealii::SparsityPattern & sparsity,
71 const dealii::ConstraintMatrix& hanging_node_constraints,
72 const std::vector<unsigned int>& blocks)
const;
82 dealii::MGLevelObject<dealii::BlockSparsityPattern> & mg_sparsity_pattern,
83 const dealii::ConstraintMatrix& hanging_node_constraints,
84 const std::vector<unsigned int>& blocks,
85 const unsigned int n_levels)
const;
94 dealii::MGLevelObject<dealii::SparsityPattern> & mg_sparsity_pattern,
95 const dealii::ConstraintMatrix& hanging_node_constraints,
96 const std::vector<unsigned int>& blocks,
97 const unsigned int n_levels)
const;
109 template<
template<
int,
int>
class DH,
int dim>
113 dealii::BlockSparsityPattern & sparsity,
114 const dealii::ConstraintMatrix& hanging_node_constraints,
115 const std::vector<unsigned int>& blocks)
const
117 dealii::BlockCompressedSimpleSparsityPattern csp(blocks.size(),
119 for (
unsigned int i = 0; i < blocks.size(); i++)
121 for (
unsigned int j = 0; j < blocks.size(); j++)
123 csp.block(i, j).reinit(blocks.at(i), blocks.at(j));
127 dealii::DoFTools::make_sparsity_pattern(
129 sparsity.copy_from(csp);
133 template<
template<
int,
int>
class DH,
int dim>
137 dealii::SparsityPattern & sparsity,
138 const dealii::ConstraintMatrix& hanging_node_constraints,
139 const std::vector<unsigned int>& blocks)
const
141 unsigned int total_dofs = 0;
142 for (
unsigned int j = 0; j < blocks.size(); j++)
144 total_dofs += blocks.at(j);
147 dealii::CompressedSimpleSparsityPattern csp(total_dofs, total_dofs);
148 dealii::DoFTools::make_sparsity_pattern(
150 sparsity.copy_from(csp);
154 template<
template<
int,
int>
class DH,
int dim>
159 dealii::MGLevelObject<dealii::BlockSparsityPattern> & mg_sparsity_patterns,
160 const dealii::ConstraintMatrix& ,
161 const std::vector<unsigned int>& blocks,
162 const unsigned int n_levels)
const
166 std::vector<unsigned int> block_component (dim,0);
169 std::vector<std::vector<unsigned int> > mg_dofs_per_block;
170 mg_dofs_per_block.resize (n_levels);
171 mg_sparsity_patterns.resize(0, n_levels-1);
172 mg_dofs_per_block.resize (n_levels);
175 for (
unsigned int level=0; level<n_levels; ++level)
176 mg_dofs_per_block[level].resize (blocks.size());
182 for (
unsigned int level=0; level<n_levels; ++level)
184 dealii::BlockCompressedSparsityPattern csp(mg_dofs_per_block[level],
185 mg_dofs_per_block[level]);
187 dealii::MGTools::make_sparsity_pattern(dof_handler.
GetDEALDoFHandler(), csp, level);
189 mg_sparsity_patterns[level].copy_from (csp);
197 template<
template<
int,
int>
class DH,
int dim>
202 dealii::MGLevelObject<dealii::SparsityPattern> & mg_sparsity_patterns,
203 const dealii::ConstraintMatrix& ,
204 const std::vector<unsigned int>& ,
205 const unsigned int n_levels)
const
208 for (
unsigned int level=0; level<n_levels; ++level)
212 dealii::MGTools::make_sparsity_pattern(dof_handler.
GetDEALDoFHandler(), csp, level);
214 mg_sparsity_patterns[level].copy_from (csp);
virtual void ComputeMGSparsityPattern(const DOpEWrapper::DoFHandler< dim, dealii::MGDoFHandler > &dof_handler, dealii::MGLevelObject< dealii::BlockSparsityPattern > &mg_sparsity_pattern, const dealii::ConstraintMatrix &hanging_node_constraints, const std::vector< unsigned int > &blocks, const unsigned int n_levels) const
Definition: sparsitymaker.h:157
virtual ~SparsityMaker()
Definition: sparsitymaker.h:57
const DOFHANDLER< dim, dim > & GetDEALDoFHandler() const
Definition: dofhandler_wrapper.h:69
SparsityMaker()
Definition: sparsitymaker.h:53
Definition: dofhandler_wrapper.h:129
virtual void ComputeSparsityPattern(const DOpEWrapper::DoFHandler< dim, DH > &dof_handler, dealii::BlockSparsityPattern &sparsity, const dealii::ConstraintMatrix &hanging_node_constraints, const std::vector< unsigned int > &blocks) const
Definition: sparsitymaker.h:111
Definition: sparsitymaker.h:50
const dealii::MGDoFHandler< dim > & GetDEALDoFHandler() const
Definition: dofhandler_wrapper.h:143