27 std::size_t num_points;
43 double inrmax = 1.0,
double inb = 4.0,
44 GridType intype = GridType::loglinear,
double indu = 0);
55 GridParameters(std::size_t innum_points,
double inr0,
double inrmax,
56 double inb,
const std::string &str_type =
"loglinear",
60 static GridType
parseType(
const std::string &str_type);
62 static std::string
parseType(GridType type);
97 std::vector<double> m_r;
99 std::vector<double> m_drduor;
101 std::vector<double> m_drdu;
105 Grid(
double in_r0,
double in_rmax, std::size_t in_num_points,
106 GridType in_gridtype,
double in_b = 0);
112 auto r0()
const {
return m_r.front(); }
114 auto front()
const {
return m_r.front(); }
116 auto rmax()
const {
return m_r.back(); }
118 auto back()
const {
return m_r.back(); }
124 auto du()
const {
return m_du; }
126 auto type()
const {
return gridtype; }
131 const std::vector<double> &
r()
const {
return m_r; }
133 auto r(std::size_t i)
const {
return m_r.at(i); };
135 auto at(std::size_t i)
const {
return m_r.at(i); };
140 const std::vector<double> &
drdu()
const {
return m_drdu; };
142 auto drdu(std::size_t i)
const {
return m_drdu.at(i); };
145 const std::vector<double> &
drduor()
const {
return m_drduor; };
147 auto drduor(std::size_t i)
const {
return m_drduor.at(i); };
151 std::size_t
getIndex(
double x,
bool require_nearest =
false)
const;
157 std::vector<double>
rpow(
double k)
const;
160 auto begin()
const {
return m_r.cbegin(); }
162 auto end()
const {
return m_r.cend(); }
164 auto cbegin()
const {
return m_r.cbegin(); }
166 auto cend()
const {
return m_r.cend(); }
168 auto rbegin()
const {
return m_r.crbegin(); }
170 auto rend()
const {
return m_r.crend(); }
172 auto crbegin()
const {
return m_r.crbegin(); }
174 auto crend()
const {
return m_r.crend(); }
192 std::size_t in_num_points,
193 GridType in_gridtype,
double in_b = 0);
196 double in_du, GridType in_gridtype,
200 static double next_r_loglin(
double b,
double u,
double r_guess);
201 static std::vector<double> form_r(
const GridType
type,
const double r0,
203 const double du,
const double b);
204 static std::vector<double> form_drduor(
const GridType
type,
205 const std::vector<double> &in_r,
207 static std::vector<double> form_drdu(
const GridType
type,
208 const std::vector<double> &in_r,
209 const std::vector<double> &in_drduor);
Non-uniform radial grid with Jacobian, suitable for atomic structure calculations.
Definition Grid.hpp:85
const std::vector< double > & r() const
Full grid vector r.
Definition Grid.hpp:131
auto crend() const
Const reverse iterator before first grid point.
Definition Grid.hpp:174
auto drduor(std::size_t i) const
(1/r)(dr/du)[i], with range checking
Definition Grid.hpp:147
auto size() const
Number of grid points; alias for num_points()
Definition Grid.hpp:122
auto rbegin() const
Const reverse iterator to last grid point.
Definition Grid.hpp:168
auto r0() const
Minimum (first) grid point r[0].
Definition Grid.hpp:112
auto begin() const
Const iterator to first grid point.
Definition Grid.hpp:160
auto at(std::size_t i) const
Grid point r[i], with range checking; alias for r(i)
Definition Grid.hpp:135
std::vector< double > rpow(double k) const
Returns a vector of r^k for each grid point.
Definition Grid.cpp:120
auto du() const
Uniform step size du.
Definition Grid.hpp:124
auto rend() const
Const reverse iterator before first grid point.
Definition Grid.hpp:170
void extend_to(double new_rmax)
Extends the grid to at least new_rmax.
Definition Grid.cpp:132
std::string gridParameters() const
Returns a human-readable string of grid parameters.
Definition Grid.cpp:102
static double calc_du_from_num_points(double in_r0, double in_rmax, std::size_t in_num_points, GridType in_gridtype, double in_b=0)
Given r0, rmax, and num_points, calculates the uniform step size du.
Definition Grid.cpp:257
auto operator()(std::size_t i) const
Grid point r[i], with range checking; alias for r(i)
Definition Grid.hpp:137
auto cbegin() const
Const iterator to first grid point.
Definition Grid.hpp:164
static std::size_t calc_num_points_from_du(double in_r0, double in_rmax, double in_du, GridType in_gridtype, double in_b=0)
Given r0, rmax, and du, calculates the number of grid points.
Definition Grid.cpp:277
auto front() const
Minimum (first) grid point r[0]; alias for r0()
Definition Grid.hpp:114
auto crbegin() const
Const reverse iterator to last grid point.
Definition Grid.hpp:172
auto cend() const
Const iterator past last grid point.
Definition Grid.hpp:166
const std::vector< double > & drduor() const
Full vector of (1/r)(dr/du)
Definition Grid.hpp:145
auto r(std::size_t i) const
Grid point r[i], with range checking.
Definition Grid.hpp:133
auto back() const
Maximum (last) grid point r[N-1]; alias for rmax()
Definition Grid.hpp:118
auto end() const
Const iterator past last grid point.
Definition Grid.hpp:162
auto type() const
Grid type (loglinear, logarithmic, or linear)
Definition Grid.hpp:126
const std::vector< double > & drdu() const
Full Jacobian vector dr/du.
Definition Grid.hpp:140
auto num_points() const
Number of grid points.
Definition Grid.hpp:120
auto rmax() const
Maximum (last) grid point r[N-1].
Definition Grid.hpp:116
std::size_t getIndex(double x, bool require_nearest=false) const
Returns the grid index closest to x. If require_nearest is false, returns the index of the largest gr...
Definition Grid.cpp:76
auto loglin_b() const
Log-linear turning point b: roughly logarithmic for r<b, linear for r>b.
Definition Grid.hpp:128
auto drdu(std::size_t i) const
Jacobian (dr/du)[i], with range checking.
Definition Grid.hpp:142
GridParameters params() const
Returns a GridParameters struct that can be used to reconstruct this grid.
Definition Grid.hpp:186
Parameters used to construct a Grid.
Definition Grid.hpp:26
double b
Log-linear turning point (~logarithmic for r<b, linear for r>b)
Definition Grid.hpp:30
static GridType parseType(const std::string &str_type)
Converts a string ("loglinear", "logarithmic", "linear") to GridType.
Definition Grid.cpp:35
double rmax
Maximum grid point.
Definition Grid.hpp:29
double r0
Minimum grid point.
Definition Grid.hpp:28