The finite element method using deal.II - 2021/2022
|
|
Go to the documentation of this file.
28 add_parameter(
"Finite element degree",
fe_degree);
32 add_parameter(
"Dirichlet boundary condition expression",
34 add_parameter(
"Neumann boundary condition expression",
40 add_parameter(
"Problem constants",
constants);
45 this->prm.enter_subsection(
"Error table");
47 this->prm.leave_subsection();
153 update_values | update_gradients |
154 update_quadrature_points | update_JxW_values);
157 face_quadrature_formula,
158 update_values | update_quadrature_points |
167 fe_values.reinit(cell);
170 for (
const unsigned int q_index : fe_values.quadrature_point_indices())
172 for (
const unsigned int i : fe_values.dof_indices())
173 for (
const unsigned int j : fe_values.dof_indices())
175 (fe_values.shape_grad(i, q_index) *
176 fe_values.shape_grad(j, q_index) *
177 fe_values.JxW(q_index));
178 for (
const unsigned int i : fe_values.dof_indices())
179 cell_rhs(i) += (fe_values.shape_value(i, q_index) *
181 fe_values.quadrature_point(q_index)) *
182 fe_values.JxW(q_index));
185 if (cell->at_boundary())
187 for (
unsigned int f = 0; f < GeometryInfo<dim>::faces_per_cell; ++f)
188 if (
neumann_ids.find(cell->face(f)->boundary_id()) !=
191 fe_face_values.reinit(cell, f);
192 for (
const unsigned int q_index :
193 fe_face_values.quadrature_point_indices())
194 for (
const unsigned int i : fe_face_values.dof_indices())
195 cell_rhs(i) += fe_face_values.shape_value(i, q_index) *
197 fe_face_values.quadrature_point(q_index)) *
198 fe_face_values.JxW(q_index);
201 cell->get_dof_indices(local_dof_indices);
230 std::ofstream
output(fname);
static void parse_all_parameters(ParameterHandler &prm=ParameterAcceptor::prm)
std::vector< types::global_dof_index > local_dof_indices
std::string grid_generator_function
std::string forcing_term_expression
void write_vtu(std::ostream &out) const
DoFHandler< 2 > dof_handler
ParsedConvergenceTable error_table
SparseMatrix< double > system_matrix
void refine_global(const unsigned int times=1)
void initialize(const std::string &filename)
Vector< double > system_rhs
void cell_matrix(FullMatrix< double > &M, const FEValuesBase< dim > &fe, const FEValuesBase< dim > &fetest, const ArrayView< const std::vector< double >> &velocity, const double factor=1.)
unsigned int n_refinement_cycles
AffineConstraints< double > constraints
void attach_dof_handler(const DoFHandler< dim, spacedim > &)
FunctionParser< dim > neumann_boundary_condition
void distribute_dofs(const FiniteElement< dim, spacedim > &fe)
void make_hanging_node_constraints(const DoFHandler< dim, spacedim > &dof_handler, AffineConstraints< number > &constraints)
void error_from_exact(const DoFHandler< dim, spacedim > &vspace, const VectorType &solution, const Function< spacedim > &exact, const Function< spacedim > *weight=nullptr)
const unsigned int degree
void distribute_local_to_global(const InVector &local_vector, const std::vector< size_type > &local_dof_indices, OutVector &global_vector) const
void output_table(std::ostream &out)
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)
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)
std::string output_filename
virtual void reinit(const SparsityPattern &sparsity)
std::string neumann_boundary_conditions_expression
virtual void build_patches(const unsigned int n_subdivisions=0)
SparsityPattern sparsity_pattern
BaseClass::AdditionalData parameters
static std::string to_string(const T &s, const Patterns::PatternBase &p=*Convert< T >::to_pattern())=delete
static ParameterHandler prm
void make_grid(Triangulation< 2 > &triangulation)
virtual void reinit(const size_type N, const bool omit_zeroing_entries=false)
void add_parameters(ParameterHandler &prm)
Vector< double > solution
void distribute(VectorType &vec) const
void parse_string(const std::string &par)
void copy_from(const size_type n_rows, const size_type n_cols, const ForwardIterator begin, const ForwardIterator end)
unsigned int n_refinements
std::string grid_generator_arguments
std::set< types::boundary_id > neumann_ids
void output_results() const
void add_data_vector(const VectorType &data, const std::vector< std::string > &names, const DataVectorType type=type_automatic, const std::vector< DataComponentInterpretation::DataComponentInterpretation > &data_component_interpretation={})
Triangulation< 2 > triangulation
virtual void parse_input_from_string(const std::string &s, const std::string &last_line="", const bool skip_undefined=false)
FunctionParser< dim > forcing_term
FunctionParser< dim > dirichlet_boundary_condition
Solve the Poisson problem, with Dirichlet or Neumann boundary conditions, on all geometries that can ...
unsigned int n_active_cells() const
std::set< types::boundary_id > dirichlet_ids
ParameterAcceptorProxy< ReductionControl > solver_control
void generate_from_name_and_arguments(Triangulation< dim, spacedim > &tria, const std::string &grid_generator_function_name, const std::string &grid_generator_function_arguments)
std::map< std::string, double > constants
IteratorRange< active_cell_iterator > active_cell_iterators() const
unsigned int n_dofs_per_cell() const
std::map< std::string, double > constants
std::string dirichlet_boundary_conditions_expression
types::global_dof_index n_dofs() const