4#include <deal.II/base/point.h>
5#include <deal.II/dofs/dof_handler.h>
6#include <deal.II/dofs/dof_renumbering.h>
7#include <deal.II/dofs/dof_tools.h>
8#include <deal.II/fe/fe_dgq.h>
9#include <deal.II/fe/fe_system.h>
10#include <deal.II/fe/mapping_q1.h>
11#include <deal.II/lac/affine_constraints.h>
22 using namespace dealii;
30 template <
typename Components_,
typename NumberType_,
typename Mesh_>
class Discretization
42 fe(
std::make_shared<FESystem<
dim>>(FE_DGQ<
dim>(
json.get_uint(
"/discretization/fe_order")),
71 if (i != 0)
throw std::runtime_error(
"Wrong FE index");
86 double min_dist = std::numeric_limits<double>::max();
89 if (dist < min_dist) {
99 std::vector<uint> block_structure{
dof_handler.n_dofs()};
100 if (Components::count_variables() > 0) block_structure.push_back(Components::count_variables());
101 return block_structure;
109 spdlog::get(
"log")->info(
"FEM: Number of active cells: {}",
mesh.get_triangulation().n_active_cells());
110 spdlog::get(
"log")->info(
"FEM: Number of degrees of freedom: {}",
dof_handler.n_dofs());
123 std::shared_ptr<FESystem<dim>>
fe;
Class to manage the system on which we solve, i.e. fe spaces, grids, etc. This class is a System for ...
Definition dg.hh:31
static constexpr uint dim
Definition dg.hh:38
AffineConstraints< NumberType > constraints
Definition dg.hh:125
DoFHandler< dim > dof_handler
Definition dg.hh:124
std::shared_ptr< FESystem< dim > > fe
Definition dg.hh:123
const auto & get_triangulation() const
Definition dg.hh:75
auto & get_constraints(const uint i=0)
Definition dg.hh:54
Mesh_ Mesh
Definition dg.hh:37
std::vector< Point< dim > > support_points
Definition dg.hh:127
void setup_dofs()
Definition dg.hh:105
SparseMatrix< NumberType > SparseMatrixType
Definition dg.hh:36
Vector< NumberType > VectorType
Definition dg.hh:35
const auto & get_fe(uint i=0) const
Definition dg.hh:69
Discretization(Mesh &mesh, const JSONValue &json)
Definition dg.hh:40
const auto & get_constraints(const uint i=0) const
Definition dg.hh:49
void reinit()
Definition dg.hh:81
const auto & get_dof_handler(const uint i=0) const
Definition dg.hh:59
const auto & get_mapping() const
Definition dg.hh:74
NumberType_ NumberType
Definition dg.hh:34
auto & get_triangulation()
Definition dg.hh:76
const auto & get_json() const
Definition dg.hh:79
const Point< dim > & get_support_point(const uint &dof) const
Definition dg.hh:77
uint get_closest_dof(const Point< dim > &p) const
Definition dg.hh:83
auto & get_dof_handler(const uint i=0)
Definition dg.hh:64
const auto & get_support_points() const
Definition dg.hh:78
std::vector< uint > get_block_structure() const
Definition dg.hh:97
MappingQ1< dim > mapping
Definition dg.hh:126
Components_ Components
Definition dg.hh:33
Mesh & mesh
Definition dg.hh:120
JSONValue json
Definition dg.hh:121
A wrapper around the boost json value class.
Definition json.hh:19
Definition complex_math.hh:14
unsigned int uint
Definition utils.hh:22