The finite element method using deal.II - 2021/2022
|
|
Go to the documentation of this file.
66 output_results()
const;
82 value(
const Point<dim> &p,
const unsigned int component = 0)
const override;
91 value(
const Point<dim> &p,
const unsigned int component = 0)
const override;
98 const unsigned int )
const
100 double return_value = 0.0;
101 for (
unsigned int i = 0; i < dim; ++i)
102 return_value += 4.0 * std::pow(p(i), 4.0);
110 const unsigned int )
const
129 std::cout <<
" Number of active cells: " <<
triangulation.n_active_cells()
140 dof_handler.distribute_dofs(fe);
141 std::cout <<
" Number of degrees of freedom: " << dof_handler.n_dofs()
147 solution.reinit(dof_handler.n_dofs());
148 system_rhs.reinit(dof_handler.n_dofs());
162 const unsigned int dofs_per_cell = fe.dofs_per_cell;
166 for (
const auto &cell : dof_handler.active_cell_iterators())
172 for (
const unsigned int i : fe_values.
dof_indices())
174 for (
const unsigned int j : fe_values.
dof_indices())
178 fe_values.
JxW(q_index));
180 cell_rhs(i) += (fe_values.
shape_value(i, q_index) *
181 right_hand_side.
value(x_q) *
182 fe_values.
JxW(q_index));
185 for (
const unsigned int i : fe_values.
dof_indices())
187 for (
const unsigned int j : fe_values.
dof_indices())
194 std::map<types::global_dof_index, double> boundary_values;
213 std::cout <<
" " << solver_control.
last_step()
214 <<
" CG iterations needed to obtain convergence." << std::endl;
226 std::ofstream
output(dim == 2 ?
"solution-2d.vtk" :
"solution-3d.vtk");
235 std::cout <<
"Solving problem in " << dim <<
" space dimensions."
251 laplace_problem_2d.
run();
255 laplace_problem_3d.
run();
const double & shape_value(const unsigned int function_no, const unsigned int point_no) const
void add(const std::vector< size_type > &indices, const std::vector< OtherNumber > &values)
std::vector< types::global_dof_index > local_dof_indices
void reinit(const TriaIterator< DoFCellAccessor< dim, spacedim, level_dof_access >> &cell)
const ::parallel::distributed::Triangulation< dim, spacedim > * triangulation
void solve(const MatrixType &A, VectorType &x, const VectorType &b, const PreconditionerType &preconditioner)
std_cxx20::ranges::iota_view< unsigned int, unsigned int > quadrature_point_indices() const
virtual double value(const Point< dim > &p, const unsigned int component=0) const override
void output_results() const
SymmetricTensor< 2, dim, Number > e(const Tensor< 2, dim, Number > &F)
void write_vtk(std::ostream &out) const
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.)
void attach_dof_handler(const DoFHandler< dim, spacedim > &)
SparsityPattern sparsity_pattern
unsigned int last_step() const
const Tensor< 1, spacedim > & shape_grad(const unsigned int function_no, const unsigned int quadrature_point) const
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)
DoFHandler< dim > dof_handler
virtual void build_patches(const unsigned int n_subdivisions=0)
SparsityPattern sparsity_pattern
virtual void run(ParameterHandler &prm)=0
Vector< double > system_rhs
double JxW(const unsigned int quadrature_point) const
void make_grid(Triangulation< 2 > &triangulation)
unsigned int depth_console(const unsigned int n)
void copy_from(const size_type n_rows, const size_type n_cols, const ForwardIterator begin, const ForwardIterator end)
void hyper_cube(Triangulation< dim, spacedim > &tria, const double left=0., const double right=1., const bool colorize=false)
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< dim > triangulation
Vector< double > solution
const Point< spacedim > & quadrature_point(const unsigned int q) const
std_cxx20::ranges::iota_view< unsigned int, unsigned int > dof_indices() const
numbers::NumberTraits< Number >::real_type square() const
SparseMatrix< double > system_matrix
virtual double value(const Point< dim > &p, const unsigned int component=0) const override