ryujin 2.1.1 revision ef0fcd4010d109b860652ece4a7b8963fb7d46b1
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
10#include <compile_time_options.h>
11
13
14namespace ryujin
15{
16 namespace Geometries
17 {
24 template <int dim>
25 class Disk : public Geometry<dim>
26 {
27 public:
28 Disk(const std::string subsection)
29 : Geometry<dim>("disk", subsection)
30 {
31 balanced_ = true;
32 this->add_parameter("balanced",
33 balanced_,
34 "Use GridGenerator::hyper_ball_balanced() instead "
35 "of the older GridGenerator::hyper_ball()");
36
37 radius_ = 1.2;
38 this->add_parameter("radius", radius_, "radius of disk");
39
40 boundary_ = Boundary::dirichlet;
41 this->add_parameter("boundary condition",
42 boundary_,
43 "Type of boundary condition enforced on the "
44 "boundary of the disk/ball");
45 }
46
48 typename dealii::Triangulation<dim> &triangulation) final
49 {
50 if (balanced_) {
51 GridGenerator::hyper_ball_balanced(
52 triangulation, dealii::Point<dim>(), radius_);
53 } else {
54 GridGenerator::hyper_ball(
55 triangulation, dealii::Point<dim>(), radius_);
56 }
57
58 /*
59 * Set boundary ids:
60 */
61 for (auto cell : triangulation.active_cell_iterators()) {
62 for (auto f : cell->face_indices()) {
63 const auto face = cell->face(f);
64
65 if (!face->at_boundary())
66 continue;
67
68 face->set_boundary_id(boundary_);
69 }
70 }
71 }
72
73 private:
74 bool balanced_;
75 double radius_;
76 Boundary boundary_;
77 };
78 } /* namespace Geometries */
79} /* namespace ryujin */
void create_triangulation(typename dealii::Triangulation< dim > &triangulation) final
Definition: geometry_disk.h:47
Disk(const std::string subsection)
Definition: geometry_disk.h:28