OGS
Subdivision.h
Go to the documentation of this file.
1 
11 #pragma once
12 
13 #include <vector>
14 
15 namespace BaseLib
16 {
21 {
22 public:
24  virtual std::vector<double> operator()() const = 0;
25 
26  virtual ~ISubdivision() = default;
27 };
28 
33 {
34 public:
40  UniformSubdivision(double length, std::size_t n_subdivision)
41  : length_(length), n_subdivision_(n_subdivision)
42  {
43  }
44 
46  std::vector<double> operator()() const override
47  {
48  std::vector<double> x;
49  x.reserve(n_subdivision_ + 1);
50  const double dL = length_ / static_cast<double>(n_subdivision_);
51  for (std::size_t i = 0; i < n_subdivision_ + 1; i++)
52  {
53  x.push_back(i * dL);
54  }
55  return x;
56  }
57 
58 private:
59  const double length_;
60  const std::size_t n_subdivision_;
61 };
62 
67 {
68 public:
76  GradualSubdivision(const double L,
77  const double dL0,
78  const double max_dL,
79  const double multiplier);
80 
82  std::vector<double> operator()() const override;
83 
84 private:
85  const double length_;
86  const double dL0_;
87  const double max_dL_;
88  const double multiplier_;
89 };
90 
97 {
98 public:
105  GradualSubdivisionFixedNum(const double L,
106  const std::size_t num_subdivisions,
107  const double multiplier);
108 
110  std::vector<double> operator()() const override;
111 
112 private:
113  const double length_;
114  const std::size_t num_subdivisions_;
115  const double multiplier_;
116 };
117 
118 } // namespace BaseLib
GradualSubdivisionFixedNum(const double L, const std::size_t num_subdivisions, const double multiplier)
Definition: Subdivision.cpp:68
std::vector< double > operator()() const override
Returns a vector of subdivided points.
Definition: Subdivision.cpp:74
GradualSubdivision(const double L, const double dL0, const double max_dL, const double multiplier)
Definition: Subdivision.cpp:20
std::vector< double > operator()() const override
Returns a vector of subdivided points.
Definition: Subdivision.cpp:39
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:60
UniformSubdivision(double length, std::size_t n_subdivision)
Definition: Subdivision.h:40
std::vector< double > operator()() const override
Returns a vector of subdivided points.
Definition: Subdivision.h:46