ryujin 2.1.1 revision 71cdc42292164f8095c0bd62c4ea75ebcfac58fa
Loading...
Searching...
No Matches
geometry.h
Go to the documentation of this file.
1//
2// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
3// Copyright (C) 2020 - 2026 by the ryujin authors
4//
5
6#pragma once
7
8#include <compile_time_options.h>
9
10#include "convenience_macros.h"
11
12#include <deal.II/base/parameter_acceptor.h>
13#include <deal.II/dofs/dof_handler.h>
14#include <deal.II/grid/tria.h>
15
16#include <functional>
17#include <string>
18
19namespace ryujin
20{
21#ifndef DOXYGEN
22 /* forward declaration */
23 template <int dim>
24 class Discretization;
25#endif
26
33 template <int dim>
34 class Geometry : public dealii::ParameterAcceptor
35 {
36 public:
42 Geometry(const std::string &name, const std::string &subsection)
43 : ParameterAcceptor(subsection + "/" + name)
44 , name_(name)
45 {
46 }
47
53 dealii::Triangulation<dim> &triangulation) const = 0;
54
65 virtual void
66 update_dof_handler(dealii::DoFHandler<dim> & /*dof_handler*/) const
67 {
68 }
69
73 enum class HP_Collection {
74 /*
75 * Instruct the Discretization class to set up standard
76 * continuous/discontinuous Q_k spaces for quarilaterals/hexahedra.
77 */
79 /*
80 * Instruct the Discretization class to set up standard
81 * continuous/discontinuous P_k spaces for simplices.
82 */
84 /*
85 * Inform the Discretization class that the hp::*Collection objects
86 * have already been populated by the Geometry class.
87 */
89 };
90
98 const unsigned int /*fe_degree*/,
99 typename ryujin::Discretization<dim>::Collection & /*collection*/) const
100 {
101 /*
102 * Signal, that we did nothing. In this case the Discretization
103 * object will populate all collections with appropriate objects for
104 * the cG Qk, dG Qk finite element on purely quadrilateral, or
105 * hexahedral meshes.
106 */
108 }
109
121 ACCESSOR_READ_ONLY(transformation)
122
123
127
128 protected:
134 mutable std::function<dealii::Point<dim>(
135 const typename dealii::Triangulation<dim>::cell_iterator &,
136 const dealii::Point<dim> &)>
138
139 private:
140 const std::string name_;
141 };
142
143} /* namespace ryujin */
virtual HP_Collection populate_hp_collections(const unsigned int, typename ryujin::Discretization< dim >::Collection &) const
Definition geometry.h:97
Geometry(const std::string &name, const std::string &subsection)
Definition geometry.h:42
virtual void create_coarse_triangulation(dealii::Triangulation< dim > &triangulation) const =0
virtual void update_dof_handler(dealii::DoFHandler< dim > &) const
Definition geometry.h:66
std::function< dealii::Point< dim >(const typename dealii::Triangulation< dim >::cell_iterator &, const dealii::Point< dim > &)> transformation_
Definition geometry.h:137
#define ACCESSOR_READ_ONLY(member)