The finite element method using deal.II - 2021/2022
step-1.cc File Reference
#include <deal.II/grid/grid_generator.h>
#include <deal.II/grid/grid_out.h>
#include <deal.II/grid/tria.h>
#include <deal.II/grid/tria_accessor.h>
#include <deal.II/grid/tria_iterator.h>
#include <cmath>
#include <fstream>
#include <iostream>
Include dependency graph for step-1.cc:

Go to the source code of this file.

Functions

void first_grid (Triangulation< 2 > &triangulation)
 Generate a hypercube, and output it as an svg file. More...
 
void second_grid (Triangulation< 2 > &triangulation)
 Generate a locally refined hyper_shell, and output it as an svg file. More...
 
void third_grid (Triangulation< 2 > &)
 Create an L-shaped domain with one global refinement, and write it on. More...
 
std::tuple< unsigned int, unsigned int, unsigned int > get_info (const Triangulation< 2 > &)
 Returns a tuple with number of levels, number of cells, number of active. More...
 
int main ()
 

Function Documentation

◆ first_grid()

void first_grid ( Triangulation< 2 > &  triangulation)

Generate a hypercube, and output it as an svg file.

Definition at line 35 of file step-1.cc.

36 {
37  GridGenerator::hyper_cube(triangulation);
38 
39  std::cout << "Number of original vertices: " << triangulation.n_vertices()
40  << std::endl;
41 
42  triangulation.refine_global(4);
43 
44  std::cout << "Number of vertices after 4 refinements: "
45  << triangulation.n_vertices() << std::endl;
46  {
47  std::ofstream out("grid-1.svg");
48  GridOut grid_out;
49  grid_out.write_svg(triangulation, out);
50  std::cout << "Grid written to grid-1.svg" << std::endl;
51  }
52  {
53  std::ofstream out("grid-1.vtk");
54  GridOut grid_out;
55  grid_out.write_vtk(triangulation, out);
56  std::cout << "Grid written to grid-1.vtk" << std::endl;
57  }
58 }

◆ second_grid()

void second_grid ( Triangulation< 2 > &  triangulation)

Generate a locally refined hyper_shell, and output it as an svg file.

Definition at line 63 of file step-1.cc.

64 {
65  const Point<2> center(1, 0);
66  const double inner_radius = 0.5, outer_radius = 1.0;
68  triangulation, center, inner_radius, outer_radius, 10);
69 
70  // triangulation.reset_all_manifolds();
71 
72  for (unsigned int step = 0; step < 5; ++step)
73  {
74  std::ofstream out("grid-2-" + std::to_string(step) + ".vtk");
75  GridOut grid_out;
76  grid_out.write_vtk(triangulation, out);
77 
78  for (auto &cell : triangulation.active_cell_iterators())
79  {
80  for (const auto v : cell->vertex_indices())
81  {
82  const double distance_from_center =
83  center.distance(cell->vertex(v));
84 
85  if (std::fabs(distance_from_center - inner_radius) <=
86  1e-6 * inner_radius)
87  {
88  cell->set_refine_flag();
89  break;
90  }
91  }
92  }
93 
94  triangulation.execute_coarsening_and_refinement();
95  }
96 }

◆ third_grid()

void third_grid ( Triangulation< 2 > &  )

Create an L-shaped domain with one global refinement, and write it on.

Definition at line 104 of file step-1.cc.

105 {
106  // Insert code here
107 }

◆ get_info()

std::tuple<unsigned int, unsigned int, unsigned int> get_info ( const Triangulation< 2 > &  )

Returns a tuple with number of levels, number of cells, number of active.

Definition at line 112 of file step-1.cc.

113 {
114  // Insert code here
115  return std::make_tuple(0, 0, 0);
116 }

◆ main()

int main ( )

Definition at line 119 of file step-1.cc.

120 {
121  {
123  first_grid(triangulation);
124  }
125  {
127  second_grid(triangulation);
128  }
129 }
triangulation
const ::parallel::distributed::Triangulation< dim, spacedim > * triangulation
Triangulation< 2 >
GridOut::write_vtk
void write_vtk(const Triangulation< dim, spacedim > &tria, std::ostream &out) const
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)
to_string
static std::string to_string(const T &s, const Patterns::PatternBase &p=*Convert< T >::to_pattern())=delete
Point< 3 >::distance
numbers::NumberTraits< double >::real_type distance(const Point< dim, double > &p) const
GridOut::write_svg
void write_svg(const Triangulation< 2, 2 > &tria, std::ostream &out) const
GridGenerator::hyper_cube
void hyper_cube(Triangulation< dim, spacedim > &tria, const double left=0., const double right=1., const bool colorize=false)
step
void step(Vector< number2 > &dst, const Vector< number2 > &rhs) const
second_grid
void second_grid(Triangulation< 2 > &triangulation)
Generate a locally refined hyper_shell, and output it as an svg file.
Definition: step-1.cc:63
Point< 2 >
GridOut
center
Point< 3 > center
first_grid
void first_grid(Triangulation< 2 > &triangulation)
Generate a hypercube, and output it as an svg file.
Definition: step-1.cc:35