OGS
Subdivision.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
4#pragma once
5
6#include <cstddef>
7#include <vector>
8
9namespace BaseLib
10{
15{
16public:
18 virtual std::vector<double> operator()() const = 0;
19
20 virtual ~ISubdivision() = default;
21};
22
27{
28public:
34 UniformSubdivision(double length, std::size_t n_subdivision)
35 : length_(length), n_subdivision_(n_subdivision)
36 {
37 }
38
40 std::vector<double> operator()() const override
41 {
42 std::vector<double> x;
43 x.reserve(n_subdivision_ + 1);
44 const double dL = length_ / static_cast<double>(n_subdivision_);
45 for (std::size_t i = 0; i < n_subdivision_ + 1; i++)
46 {
47 x.push_back(i * dL);
48 }
49 return x;
50 }
51
52private:
53 const double length_;
54 const std::size_t n_subdivision_;
55};
56
61{
62public:
70 GradualSubdivision(const double L,
71 const double dL0,
72 const double max_dL,
73 const double multiplier);
74
76 std::vector<double> operator()() const override;
77
78private:
79 const double length_;
80 const double dL0_;
81 const double max_dL_;
82 const double multiplier_;
83};
84
91{
92public:
99 GradualSubdivisionFixedNum(const double L,
100 const std::size_t num_subdivisions,
101 const double multiplier);
102
104 std::vector<double> operator()() const override;
105
106private:
107 const double length_;
108 const std::size_t num_subdivisions_;
109 const double multiplier_;
110};
111
112} // namespace BaseLib
GradualSubdivisionFixedNum(const double L, const std::size_t num_subdivisions, const double multiplier)
std::vector< double > operator()() const override
Returns a vector of subdivided points.
GradualSubdivision(const double L, const double dL0, const double max_dL, const double multiplier)
std::vector< double > operator()() const override
Returns a vector of subdivided points.
virtual ~ISubdivision()=default
virtual std::vector< double > operator()() const =0
Returns a vector of subdivided points.
const std::size_t n_subdivision_
Definition Subdivision.h:54
UniformSubdivision(double length, std::size_t n_subdivision)
Definition Subdivision.h:34
std::vector< double > operator()() const override
Returns a vector of subdivided points.
Definition Subdivision.h:40