The finite element method using deal.II - 2021/2022
poisson.h
Go to the documentation of this file.
1 /* ---------------------------------------------------------------------
2  *
3  * Copyright (C) 1999 - 2020 by the deal.II authors
4  *
5  * This file is part of the deal.II library.
6  *
7  * The deal.II library is free software; you can use it, redistribute
8  * it, and/or modify it under the terms of the GNU Lesser General
9  * Public License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  * The full text of the license can be found in the file LICENSE.md at
12  * the top level directory of deal.II.
13  *
14  * ---------------------------------------------------------------------
15  *
16  * Authors: Wolfgang Bangerth, 1999,
17  * Guido Kanschat, 2011
18  * Luca Heltai, 2021
19  */
20 
21 // Make sure we don't redefine things
22 #ifndef poisson_include_file
23 #define poisson_include_file
24 
25 #include <deal.II/base/function.h>
30 
32 #include <deal.II/dofs/dof_tools.h>
33 
34 #include <deal.II/fe/fe_q.h>
35 #include <deal.II/fe/fe_values.h>
36 
38 #include <deal.II/grid/tria.h>
39 
44 #include <deal.II/lac/solver_cg.h>
46 #include <deal.II/lac/vector.h>
47 
51 
52 #include <fstream>
53 #include <iostream>
54 
55 // Forward declare the tester class
56 template <typename Integral>
57 class PoissonTester;
58 
59 using namespace dealii;
60 
61 template <int dim>
63 {
64 public:
65  Poisson();
66  void
67  run();
68 
69  void
70  initialize(const std::string &filename);
71 
72  void
73  parse_string(const std::string &par);
74 
75 protected:
76  void
77  make_grid();
78  void
79  refine_grid();
80  void
81  setup_system();
82  void
83  assemble_system();
84  void
85  solve();
86  void
87  output_results(const unsigned cycle) const;
88 
90  std::unique_ptr<FE_Q<dim>> fe;
94  SparseMatrix<double> system_matrix;
95  Vector<double> solution;
96  Vector<double> system_rhs;
97 
101 
102 
103  unsigned int fe_degree = 1;
104  unsigned int n_refinements = 4;
105  unsigned int n_refinement_cycles = 1;
106  std::string output_filename = "poisson";
107 
108  std::set<types::boundary_id> dirichlet_ids = {0};
109  std::set<types::boundary_id> neumann_ids;
110 
111  std::string forcing_term_expression = "1";
112  std::string dirichlet_boundary_conditions_expression = "0";
113  std::string neumann_boundary_conditions_expression = "0";
114  std::map<std::string, double> constants;
115 
116  std::string grid_generator_function = "hyper_cube";
117  std::string grid_generator_arguments = "0: 1: false";
118 
120 
121  template <typename Integral>
122  friend class PoissonTester;
123 };
124 
125 #endif
ParsedConvergenceTable
cycle
unsigned int cycle
parameter_acceptor.h
dynamic_sparsity_pattern.h
Poisson::error_table
ParsedConvergenceTable error_table
Definition: poisson.h:119
Poisson::triangulation
Triangulation< dim > triangulation
Definition: poisson.h:89
dealii
grid_generator.h
Triangulation
SparseMatrix< double >
matrix_tools.h
DoFHandler< dim >
fe_values.h
function.h
Poisson::neumann_boundary_condition
FunctionParser< dim > neumann_boundary_condition
Definition: poisson.h:100
initialize
virtual void initialize(const std::string &vars, const std::vector< std::string > &expressions, const std::map< std::string, double > &constants, const bool time_dependent=false)
sparse_matrix.h
vector_tools.h
tria.h
sparsity_pattern
SparsityPattern sparsity_pattern
run
virtual void run(ParameterHandler &prm)=0
Poisson::constraints
AffineConstraints< double > constraints
Definition: poisson.h:92
SparsityPattern
parsed_convergence_table.h
data_out.h
make_grid
void make_grid(Triangulation< 2 > &triangulation)
Definition: step-2.cc:41
function_parser.h
fe_q.h
AffineConstraints< double >
Poisson::dof_handler
DoFHandler< dim > dof_handler
Definition: poisson.h:91
affine_constraints.h
dof_tools.h
precondition.h
Poisson::neumann_ids
std::set< types::boundary_id > neumann_ids
Definition: poisson.h:109
Poisson::forcing_term
FunctionParser< dim > forcing_term
Definition: poisson.h:98
Poisson::dirichlet_boundary_condition
FunctionParser< dim > dirichlet_boundary_condition
Definition: poisson.h:99
PoissonTester
Definition: poisson-tester.cc:10
Poisson
Solve the Poisson problem, with Dirichlet or Neumann boundary conditions, on all geometries that can ...
Definition: poisson.h:55
Poisson::fe
std::unique_ptr< FE_Q< dim > > fe
Definition: poisson.h:90
Poisson::constants
std::map< std::string, double > constants
Definition: poisson.h:114
full_matrix.h
ParameterAcceptor
dof_handler.h
Vector< double >
vector.h
solver_cg.h
FunctionParser
quadrature_lib.h