Loading...
Searching...
No Matches
uniform_q_grid_table.hpp
Go to the documentation of this file.
1#pragma once
2
3/**
4 * UniformQGridTable — function values on a uniform q-grid with Lagrange interpolation.
5 */
6
7#include <vector>
8
13
14namespace q3 {
15
17 public:
18 UniformQGridTable() = default;
19
20 void resize(const UniformQGrid& grid) {
21 grid_ = grid;
22 values_.assign(grid.number_of_q_points, 0.0);
23 }
24
25 void assign(const UniformQGrid& grid, Real fill_value = 0.0) {
26 grid_ = grid;
27 values_.assign(grid.number_of_q_points, fill_value);
28 }
29
30 [[nodiscard]] const UniformQGrid& grid() const {
31 return grid_;
32 }
33
34 [[nodiscard]] int size() const {
35 return static_cast<int>(values_.size());
36 }
37
38 [[nodiscard]] const std::vector<Real>& values() const {
39 return values_;
40 }
41
42 [[nodiscard]] std::vector<Real>& values() {
43 return values_;
44 }
45
46 [[nodiscard]] Real operator[](int index) const {
47 return values_[index];
48 }
49
50 [[nodiscard]] Real& operator[](int index) {
51 return values_[index];
52 }
53
54 [[nodiscard]] Real interpolate(Real q_value) const {
55 if (values_.empty()) {
56 return 0.0;
57 }
59 return values_[0];
60 }
62 values_, q_value, grid_.q_spacing, grid_.number_of_q_points);
63 }
64
65 [[nodiscard]] Real interpolate_derivative(Real q_value) const {
66 if (values_.empty()) {
67 return 0.0;
68 }
70 values_, q_value, grid_.q_spacing, grid_.number_of_q_points);
71 }
72
73 private:
74 UniformQGrid grid_;
75 std::vector<Real> values_;
76};
77
78} // namespace q3
void resize(const UniformQGrid &grid)
Real operator[](int index) const
const UniformQGrid & grid() const
const std::vector< Real > & values() const
Real interpolate_derivative(Real q_value) const
UniformQGridTable()=default
std::vector< Real > & values()
Real interpolate(Real q_value) const
void assign(const UniformQGrid &grid, Real fill_value=0.0)
constexpr double zero_vector_magnitude_threshold
double Real
Real lagrange_interpolation_4point_derivative(const std::vector< Real > &table, Real q_value, Real q_spacing, int table_size)
Definition lagrange.hpp:60
Real lagrange_interpolation_4point(const std::vector< Real > &table, Real q_value, Real q_spacing, int table_size)
Definition lagrange.hpp:31