Theory and Practice of FEM -- a parametrized Poisson Solver
Poisson< dim > Class Template Reference

#include <poisson.h>

Inheritance diagram for Poisson< dim >:
ParameterAcceptor

Public Types

using CopyData = MeshWorker::CopyData< 1, 1, 1 >
 
using ScratchData = MeshWorker::ScratchData< dim >
 

Public Member Functions

 Poisson ()
 
void print_system_info ()
 
void run ()
 
void initialize (const std::string &filename)
 
void parse_string (const std::string &par)
 

Protected Member Functions

void assemble_system_one_cell (const typename DoFHandler< dim >::active_cell_iterator &cell, ScratchData &scratch, CopyData &copy)
 
void copy_one_cell (const CopyData &copy)
 
void make_grid ()
 
void refine_grid ()
 
void setup_system ()
 
void assemble_system ()
 
void assemble_system_on_range (const typename DoFHandler< dim >::active_cell_iterator &begin, const typename DoFHandler< dim >::active_cell_iterator &end)
 
void solve ()
 
void estimate ()
 
void mark ()
 
void output_results (const unsigned cycle) const
 

Protected Attributes

TimerOutput timer
 
Triangulation< dim > triangulation
 
std::unique_ptr< FE_Q< dim > > fe
 
std::unique_ptr< MappingQGeneric< dim > > mapping
 
DoFHandler< dim > dof_handler
 
AffineConstraints< double > constraints
 
SparsityPattern sparsity_pattern
 
SparseMatrix< double > system_matrix
 
Vector< double > solution
 
Vector< double > system_rhs
 
Vector< float > error_per_cell
 
std::string estimator_type = "exact"
 
std::string marking_strategy = "global"
 
std::pair< double, double > coarsening_and_refinement_factors = {0.03, 0.3}
 
FunctionParser< dim > forcing_term
 
FunctionParser< dim > coefficient
 
FunctionParser< dim > exact_solution
 
FunctionParser< dim > dirichlet_boundary_condition
 
FunctionParser< dim > neumann_boundary_condition
 
FunctionParser< dim > pre_refinement
 
unsigned int fe_degree = 1
 
unsigned int mapping_degree = 1
 
unsigned int n_refinements = 4
 
unsigned int n_refinement_cycles = 1
 
std::string output_filename = "poisson"
 
int number_of_threads = -1
 
std::set< types::boundary_iddirichlet_ids = {0}
 
std::set< types::boundary_idneumann_ids
 
std::string forcing_term_expression = "1"
 
std::string coefficient_expression = "1"
 
std::string exact_solution_expression = "0"
 
std::string dirichlet_boundary_conditions_expression = "0"
 
std::string neumann_boundary_conditions_expression = "0"
 
std::string pre_refinement_expression = "0"
 
std::map< std::string, double > constants
 
std::string grid_generator_function = "hyper_cube"
 
std::string grid_generator_arguments = "0: 1: false"
 
ParsedConvergenceTable error_table
 
bool use_direct_solver = true
 
ParameterAcceptorProxy< ReductionControlsolver_control
 

Friends

template<typename Integral >
class PoissonTester
 

Additional Inherited Members

- Private Member Functions inherited from ParameterAcceptor
 ParameterAcceptor (const std::string &section_name="")
 
virtual ~ParameterAcceptor () override
 
virtual void declare_parameters (ParameterHandler &prm)
 
virtual void parse_parameters (ParameterHandler &prm)
 
std::string get_section_name () const
 
std::vector< std::string > get_section_path () const
 
void add_parameter (const std::string &entry, ParameterType &parameter, const std::string &documentation="", ParameterHandler &prm_=prm, const Patterns::PatternBase &pattern=*Patterns::Tools::Convert< ParameterType >::to_pattern())
 
void enter_my_subsection (ParameterHandler &prm)
 
void leave_my_subsection (ParameterHandler &prm)
 
- Private Member Functions inherited from Subscriptor
 Subscriptor ()
 
 Subscriptor (const Subscriptor &)
 
 Subscriptor (Subscriptor &&) noexcept
 
virtual ~Subscriptor ()
 
Subscriptoroperator= (const Subscriptor &)
 
Subscriptoroperator= (Subscriptor &&) noexcept
 
void subscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
void unsubscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
unsigned int n_subscriptions () const
 
void list_subscribers (StreamType &stream) const
 
void list_subscribers () const
 
void serialize (Archive &ar, const unsigned int version)
 
- Static Private Member Functions inherited from ParameterAcceptor
static void initialize (const std::string &filename="", const std::string &output_filename="", const ParameterHandler::OutputStyle output_style_for_output_filename=ParameterHandler::Short, ParameterHandler &prm=ParameterAcceptor::prm, const ParameterHandler::OutputStyle output_style_for_filename=ParameterHandler::DefaultStyle)
 
static void initialize (std::istream &input_stream, ParameterHandler &prm=ParameterAcceptor::prm)
 
static void clear ()
 
static void parse_all_parameters (ParameterHandler &prm=ParameterAcceptor::prm)
 
static void declare_all_parameters (ParameterHandler &prm=ParameterAcceptor::prm)
 
- Static Private Member Functions inherited from Subscriptor
static ::ExceptionBaseExcInUse (int arg1, std::string arg2, std::string arg3)
 
static ::ExceptionBaseExcNoSubscriber (std::string arg1, std::string arg2)
 
- Private Attributes inherited from ParameterAcceptor
boost::signals2::signal< void()> declare_parameters_call_back
 
boost::signals2::signal< void()> parse_parameters_call_back
 
const std::string section_name
 
- Static Private Attributes inherited from ParameterAcceptor
static ParameterHandler prm
 

Detailed Description

template<int dim>
class Poisson< dim >

Solve the Poisson problem, with Dirichlet or Neumann boundary conditions, on all geometries that can be generated by the functions in the GridGenerator namespace.

Definition at line 72 of file poisson.h.

Member Typedef Documentation

◆ CopyData

template<int dim>
using Poisson< dim >::CopyData = MeshWorker::CopyData<1, 1, 1>

Definition at line 93 of file poisson.h.

◆ ScratchData

template<int dim>
using Poisson< dim >::ScratchData = MeshWorker::ScratchData<dim>

Definition at line 94 of file poisson.h.

Constructor & Destructor Documentation

◆ Poisson()

Member Function Documentation

◆ assemble_system()

template<int dim>
void Poisson< dim >::assemble_system
protected

◆ assemble_system_on_range()

template<int dim>
void Poisson< dim >::assemble_system_on_range ( const typename DoFHandler< dim >::active_cell_iterator begin,
const typename DoFHandler< dim >::active_cell_iterator end 
)
protected

◆ assemble_system_one_cell()

template<int dim>
void Poisson< dim >::assemble_system_one_cell ( const typename DoFHandler< dim >::active_cell_iterator cell,
ScratchData scratch,
CopyData copy 
)
protected

◆ copy_one_cell()

template<int dim>
void Poisson< dim >::copy_one_cell ( const CopyData copy)
protected

Definition at line 248 of file poisson.cc.

References copy().

◆ estimate()

◆ initialize()

template<int dim>
void Poisson< dim >::initialize ( const std::string &  filename)

Definition at line 94 of file poisson.cc.

References ParameterAcceptor::initialize().

Referenced by main().

◆ make_grid()

template<int dim>
void Poisson< dim >::make_grid
protected

Definition at line 117 of file poisson.cc.

◆ mark()

◆ output_results()

◆ parse_string()

template<int dim>
void Poisson< dim >::parse_string ( const std::string &  par)

Definition at line 106 of file poisson.cc.

◆ print_system_info()

template<int dim>
void Poisson< dim >::print_system_info

◆ refine_grid()

template<int dim>
void Poisson< dim >::refine_grid
protected

Definition at line 143 of file poisson.cc.

References triangulation.

◆ run()

template<int dim>
void Poisson< dim >::run

Definition at line 525 of file poisson.cc.

Referenced by main().

◆ setup_system()

template<int dim>
void Poisson< dim >::setup_system
protected

◆ solve()

Friends And Related Function Documentation

◆ PoissonTester

template<int dim>
template<typename Integral >
friend class PoissonTester
friend

Definition at line 187 of file poisson.h.

Member Data Documentation

◆ coarsening_and_refinement_factors

template<int dim>
std::pair<double, double> Poisson< dim >::coarsening_and_refinement_factors = {0.03, 0.3}
protected

Definition at line 148 of file poisson.h.

◆ coefficient

template<int dim>
FunctionParser<dim> Poisson< dim >::coefficient
protected

Definition at line 152 of file poisson.h.

◆ coefficient_expression

template<int dim>
std::string Poisson< dim >::coefficient_expression = "1"
protected

Definition at line 170 of file poisson.h.

Referenced by Poisson< dim >::Poisson().

◆ constants

template<int dim>
std::map<std::string, double> Poisson< dim >::constants
protected

Definition at line 175 of file poisson.h.

Referenced by Poisson< dim >::Poisson().

◆ constraints

template<int dim>
AffineConstraints<double> Poisson< dim >::constraints
protected

Definition at line 139 of file poisson.h.

◆ dirichlet_boundary_condition

template<int dim>
FunctionParser<dim> Poisson< dim >::dirichlet_boundary_condition
protected

Definition at line 154 of file poisson.h.

◆ dirichlet_boundary_conditions_expression

template<int dim>
std::string Poisson< dim >::dirichlet_boundary_conditions_expression = "0"
protected

Definition at line 172 of file poisson.h.

Referenced by Poisson< dim >::Poisson().

◆ dirichlet_ids

template<int dim>
std::set<types::boundary_id> Poisson< dim >::dirichlet_ids = {0}
protected

Definition at line 166 of file poisson.h.

Referenced by Poisson< dim >::Poisson().

◆ dof_handler

template<int dim>
DoFHandler<dim> Poisson< dim >::dof_handler
protected

Definition at line 138 of file poisson.h.

◆ error_per_cell

template<int dim>
Vector<float> Poisson< dim >::error_per_cell
protected

Definition at line 145 of file poisson.h.

◆ error_table

template<int dim>
ParsedConvergenceTable Poisson< dim >::error_table
protected

Definition at line 180 of file poisson.h.

◆ estimator_type

template<int dim>
std::string Poisson< dim >::estimator_type = "exact"
protected

Definition at line 146 of file poisson.h.

Referenced by Poisson< dim >::Poisson().

◆ exact_solution

template<int dim>
FunctionParser<dim> Poisson< dim >::exact_solution
protected

Definition at line 153 of file poisson.h.

◆ exact_solution_expression

template<int dim>
std::string Poisson< dim >::exact_solution_expression = "0"
protected

Definition at line 171 of file poisson.h.

Referenced by Poisson< dim >::Poisson().

◆ fe

template<int dim>
std::unique_ptr<FE_Q<dim> > Poisson< dim >::fe
protected

Definition at line 136 of file poisson.h.

◆ fe_degree

template<int dim>
unsigned int Poisson< dim >::fe_degree = 1
protected

Definition at line 159 of file poisson.h.

Referenced by Poisson< dim >::Poisson().

◆ forcing_term

template<int dim>
FunctionParser<dim> Poisson< dim >::forcing_term
protected

Definition at line 151 of file poisson.h.

◆ forcing_term_expression

template<int dim>
std::string Poisson< dim >::forcing_term_expression = "1"
protected

Definition at line 169 of file poisson.h.

Referenced by Poisson< dim >::Poisson().

◆ grid_generator_arguments

template<int dim>
std::string Poisson< dim >::grid_generator_arguments = "0: 1: false"
protected

Definition at line 178 of file poisson.h.

Referenced by Poisson< dim >::Poisson().

◆ grid_generator_function

template<int dim>
std::string Poisson< dim >::grid_generator_function = "hyper_cube"
protected

Definition at line 177 of file poisson.h.

Referenced by Poisson< dim >::Poisson().

◆ mapping

template<int dim>
std::unique_ptr<MappingQGeneric<dim> > Poisson< dim >::mapping
protected

Definition at line 137 of file poisson.h.

◆ mapping_degree

template<int dim>
unsigned int Poisson< dim >::mapping_degree = 1
protected

Definition at line 160 of file poisson.h.

Referenced by Poisson< dim >::Poisson().

◆ marking_strategy

template<int dim>
std::string Poisson< dim >::marking_strategy = "global"
protected

Definition at line 147 of file poisson.h.

Referenced by Poisson< dim >::Poisson().

◆ n_refinement_cycles

template<int dim>
unsigned int Poisson< dim >::n_refinement_cycles = 1
protected

Definition at line 162 of file poisson.h.

Referenced by Poisson< dim >::Poisson().

◆ n_refinements

template<int dim>
unsigned int Poisson< dim >::n_refinements = 4
protected

Definition at line 161 of file poisson.h.

Referenced by Poisson< dim >::Poisson().

◆ neumann_boundary_condition

template<int dim>
FunctionParser<dim> Poisson< dim >::neumann_boundary_condition
protected

Definition at line 155 of file poisson.h.

◆ neumann_boundary_conditions_expression

template<int dim>
std::string Poisson< dim >::neumann_boundary_conditions_expression = "0"
protected

Definition at line 173 of file poisson.h.

Referenced by Poisson< dim >::Poisson().

◆ neumann_ids

template<int dim>
std::set<types::boundary_id> Poisson< dim >::neumann_ids
protected

Definition at line 167 of file poisson.h.

Referenced by Poisson< dim >::Poisson().

◆ number_of_threads

template<int dim>
int Poisson< dim >::number_of_threads = -1
protected

Definition at line 164 of file poisson.h.

Referenced by Poisson< dim >::Poisson().

◆ output_filename

template<int dim>
std::string Poisson< dim >::output_filename = "poisson"
protected

Definition at line 163 of file poisson.h.

Referenced by Poisson< dim >::Poisson().

◆ pre_refinement

template<int dim>
FunctionParser<dim> Poisson< dim >::pre_refinement
protected

Definition at line 156 of file poisson.h.

◆ pre_refinement_expression

template<int dim>
std::string Poisson< dim >::pre_refinement_expression = "0"
protected

Definition at line 174 of file poisson.h.

Referenced by Poisson< dim >::Poisson().

◆ solution

template<int dim>
Vector<double> Poisson< dim >::solution
protected

Definition at line 142 of file poisson.h.

◆ solver_control

template<int dim>
ParameterAcceptorProxy<ReductionControl> Poisson< dim >::solver_control
protected

Definition at line 184 of file poisson.h.

◆ sparsity_pattern

template<int dim>
SparsityPattern Poisson< dim >::sparsity_pattern
protected

Definition at line 140 of file poisson.h.

◆ system_matrix

template<int dim>
SparseMatrix<double> Poisson< dim >::system_matrix
protected

Definition at line 141 of file poisson.h.

◆ system_rhs

template<int dim>
Vector<double> Poisson< dim >::system_rhs
protected

Definition at line 143 of file poisson.h.

◆ timer

template<int dim>
TimerOutput Poisson< dim >::timer
mutableprotected

Definition at line 133 of file poisson.h.

Referenced by Poisson< dim >::Poisson().

◆ triangulation

template<int dim>
Triangulation<dim> Poisson< dim >::triangulation
protected

Definition at line 135 of file poisson.h.

◆ use_direct_solver

template<int dim>
bool Poisson< dim >::use_direct_solver = true
protected

Definition at line 182 of file poisson.h.


The documentation for this class was generated from the following files: