3#include "excgrid/error.hpp"
4#include "excgrid/geometry.hpp"
5#include "excgrid/internal/lebedev_tables.hpp"
42 std::size_t exponent = 2);
46 [[nodiscard]] std::size_t
Size() const noexcept {
47 return _points.size();
52 [[nodiscard]] std::span<const double>
Points() const noexcept {
58 [[nodiscard]] std::span<const double>
Weights() const noexcept {
63 RadialGrid(std::vector<double> points, std::vector<double> weights)
noexcept;
65 std::vector<double> _points;
66 std::vector<double> _weights;
81 static constexpr std::span<const std::size_t, internal::kLebedevSizeCount>
kAvailableSizes =
82 internal::kLebedevSizes;
91 [[nodiscard]] std::size_t
Size() const noexcept {
97 [[nodiscard]] std::size_t
Degree() const noexcept {
104 [[nodiscard]] std::array<double, 3>
Point(std::size_t index)
const noexcept;
109 [[nodiscard]]
double Weight(std::size_t index)
const noexcept;
112 AngularGrid(std::size_t size, std::size_t degree, std::size_t offset)
noexcept;
137 std::vector<std::array<double, 3>>
points;
161 return _blocks.size();
166 [[nodiscard]] std::span<const Block>
Blocks() const noexcept {
177 BlockGrid(std::vector<Block> blocks, std::size_t totalPoints)
noexcept;
179 std::vector<Block> _blocks;
180 std::size_t _totalPoints;
std::expected< T, ErrorCode > Result
Definition error.hpp:23
static Result< AngularGrid > Create(std::size_t pointCount)
std::size_t TotalPointCount() const noexcept
Definition grid.hpp:172
std::vector< double > weights
pointCount quadrature weights.
Definition grid.hpp:138
std::size_t radialExponent
The MHL mapping exponent m.
Definition grid.hpp:125
std::size_t blockTarget
Spatial re-batching target (points per block).
Definition grid.hpp:127
std::array< double, 3 > Point(std::size_t index) const noexcept
std::vector< std::size_t > atomIndex
pointCount owning atoms.
Definition grid.hpp:139
static Result< RadialGrid > Create(std::size_t pointCount, double alpha, std::size_t exponent=2)
std::span< const double > Points() const noexcept
Definition grid.hpp:52
std::size_t pointCount
Points in the block.
Definition grid.hpp:136
std::span< const double > Weights() const noexcept
Definition grid.hpp:58
double alpha
Radial mapping scale, Bohr.
Definition grid.hpp:124
std::size_t Size() const noexcept
Definition grid.hpp:91
double Weight(std::size_t index) const noexcept
std::size_t BlockCount() const noexcept
Definition grid.hpp:160
std::vector< std::array< double, 3 > > points
pointCount positions, Bohr.
Definition grid.hpp:137
double trimWeight
Points with |weight| below this are dropped.
Definition grid.hpp:126
std::size_t Degree() const noexcept
Definition grid.hpp:97
static constexpr std::span< const std::size_t, internal::kLebedevSizeCount > kAvailableSizes
The available point counts, smallest first.
Definition grid.hpp:81
std::span< const Block > Blocks() const noexcept
Definition grid.hpp:166
std::size_t radialPoints
Radial points per atom.
Definition grid.hpp:122
std::size_t Size() const noexcept
Definition grid.hpp:46
std::size_t angularPoints
A Lebedev size (AngularGrid::kAvailableSizes).
Definition grid.hpp:123
static Result< BlockGrid > Create(const Geometry &geometry, const GridParams ¶ms={})
Definition geometry.hpp:24