The finite element method using deal.II - 2021/2022
step-2.cc File Reference
Include dependency graph for step-2.cc:

Go to the source code of this file.

Functions

void make_grid (Triangulation< 2 > &triangulation)
 
void distribute_dofs (DoFHandler< 2 > &dof_handler)
 
void renumber_dofs (DoFHandler< 2 > &dof_handler)
 
int main ()
 

Function Documentation

◆ make_grid()

void make_grid ( Triangulation< 2 > &  triangulation)

Definition at line 41 of file step-2.cc.

42 {
43  const Point<2> center(1, 0);
44  const double inner_radius = 0.5, outer_radius = 1.0;
46  triangulation, center, inner_radius, outer_radius, 5);
47 
48  static const SphericalManifold<2> manifold_description(center);
49  triangulation.set_all_manifold_ids(0);
50  triangulation.set_manifold(0, manifold_description);
51 
52  for (unsigned int step = 0; step < 3; ++step)
53  {
55  triangulation.begin_active(),
56  endc = triangulation.end();
57 
58  for (; cell != endc; ++cell)
59  for (unsigned int v = 0; v < GeometryInfo<2>::vertices_per_cell; ++v)
60  {
61  const double distance_from_center =
62  center.distance(cell->vertex(v));
63 
64  if (std::fabs(distance_from_center - inner_radius) < 1e-10)
65  {
66  cell->set_refine_flag();
67  break;
68  }
69  }
70 
71  triangulation.execute_coarsening_and_refinement();
72  }
73 }

◆ distribute_dofs()

void distribute_dofs ( DoFHandler< 2 > &  dof_handler)

Definition at line 77 of file step-2.cc.

78 {
79  static const FE_Q<2> finite_element(1);
80  dof_handler.distribute_dofs(finite_element);
81 
82  DynamicSparsityPattern dynamic_sparsity_pattern(dof_handler.n_dofs(),
83  dof_handler.n_dofs());
84 
85  DoFTools::make_sparsity_pattern(dof_handler, dynamic_sparsity_pattern);
86 
88  sparsity_pattern.copy_from(dynamic_sparsity_pattern);
89 
90  std::ofstream out("sparsity_pattern1.svg");
92 }

◆ renumber_dofs()

void renumber_dofs ( DoFHandler< 2 > &  dof_handler)

Definition at line 97 of file step-2.cc.

98 {
99  DoFRenumbering::Cuthill_McKee(dof_handler);
100 
101  DynamicSparsityPattern dynamic_sparsity_pattern(dof_handler.n_dofs(),
102  dof_handler.n_dofs());
103  DoFTools::make_sparsity_pattern(dof_handler, dynamic_sparsity_pattern);
104 
106  sparsity_pattern.copy_from(dynamic_sparsity_pattern);
107 
108  std::ofstream out("sparsity_pattern2.svg");
110 }

◆ main()

int main ( )

Definition at line 115 of file step-2.cc.

116 {
118  make_grid(triangulation);
119 
120  DoFHandler<2> dof_handler(triangulation);
121 
122  distribute_dofs(dof_handler);
123  renumber_dofs(dof_handler);
124 }
triangulation
const ::parallel::distributed::Triangulation< dim, spacedim > * triangulation
SparsityPattern::print_svg
void print_svg(std::ostream &out) const
FE_Q< 2 >
renumber_dofs
void renumber_dofs(DoFHandler< 2 > &dof_handler)
Definition: step-2.cc:97
Triangulation
SphericalManifold
DoFHandler< 2 >
DoFRenumbering::Cuthill_McKee
void Cuthill_McKee(DoFHandler< dim, spacedim > &dof_handler, const bool reversed_numbering=false, const bool use_constraints=false, const std::vector< types::global_dof_index > &starting_indices=std::vector< types::global_dof_index >())
DoFHandler::distribute_dofs
void distribute_dofs(const FiniteElement< dim, spacedim > &fe)
DoFTools::make_sparsity_pattern
void make_sparsity_pattern(const DoFHandler< dim, spacedim > &dof_handler, SparsityPatternType &sparsity_pattern, const AffineConstraints< number > &constraints=AffineConstraints< number >(), const bool keep_constrained_dofs=true, const types::subdomain_id subdomain_id=numbers::invalid_subdomain_id)
GridGenerator::hyper_shell
void hyper_shell(Triangulation< dim > &tria, const Point< dim > &center, const double inner_radius, const double outer_radius, const unsigned int n_cells=0, bool colorize=false)
distribute_dofs
void distribute_dofs(DoFHandler< 2 > &dof_handler)
Definition: step-2.cc:77
sparsity_pattern
SparsityPattern sparsity_pattern
DynamicSparsityPattern
SparsityPattern
make_grid
void make_grid(Triangulation< 2 > &triangulation)
Definition: step-2.cc:41
Point< 3 >::distance
numbers::NumberTraits< double >::real_type distance(const Point< dim, double > &p) const
SparsityPattern::copy_from
void copy_from(const size_type n_rows, const size_type n_cols, const ForwardIterator begin, const ForwardIterator end)
step
void step(Vector< number2 > &dst, const Vector< number2 > &rhs) const
Point< 2 >
center
Point< 3 > center
DoFHandler::n_dofs
types::global_dof_index n_dofs() const