ryujin 2.1.1 revision 955e869188d49b3c97ca7b1cf4fd9ceb0e6f46ef
geometry_disk.h
Go to the documentation of this file.
1//
2// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
3// [LANL Copyright Statement]
4// Copyright (C) 2024 by the ryujin authors
5// Copyright (C) 2024 by Triad National Security, LLC
6//
7
8#pragma once
9
11
12namespace ryujin
13{
14 namespace Geometries
15 {
22 template <int dim>
23 class Disk : public Geometry<dim>
24 {
25 public:
26 Disk(const std::string subsection)
27 : Geometry<dim>("disk", subsection)
28 {
29 balanced_ = true;
30 this->add_parameter("balanced",
31 balanced_,
32 "Use GridGenerator::hyper_ball_balanced() instead "
33 "of the older GridGenerator::hyper_ball()");
34
35 radius_ = 1.2;
36 this->add_parameter("radius", radius_, "radius of disk");
37
38 boundary_ = Boundary::dirichlet;
39 this->add_parameter("boundary condition",
40 boundary_,
41 "Type of boundary condition enforced on the "
42 "boundary of the disk/ball");
43 }
44
46 typename Geometry<dim>::Triangulation &triangulation) final
47 {
48 if (balanced_) {
49 GridGenerator::hyper_ball_balanced(
50 triangulation, dealii::Point<dim>(), radius_);
51 } else {
52 GridGenerator::hyper_ball(
53 triangulation, dealii::Point<dim>(), radius_);
54 }
55
56 /*
57 * Set boundary ids:
58 */
59 for (auto cell : triangulation.active_cell_iterators()) {
60 for (auto f : cell->face_indices()) {
61 const auto face = cell->face(f);
62
63 if (!face->at_boundary())
64 continue;
65
66 face->set_boundary_id(boundary_);
67 }
68 }
69 }
70
71 private:
72 bool balanced_;
73 double radius_;
74 Boundary boundary_;
75 };
76 } /* namespace Geometries */
77} /* namespace ryujin */
void create_triangulation(typename Geometry< dim >::Triangulation &triangulation) final
Definition: geometry_disk.h:45
Disk(const std::string subsection)
Definition: geometry_disk.h:26
typename Discretization< dim >::Triangulation Triangulation
Definition: geometry.h:38