28 grid.
set(0.1, 1.0, 5);
30 int idx = grid.
locate(0.1);
33 int idx2 = grid.
locate(0.9);
37 CHECK(t == Approx(0.1));
42 CHECK(t2 == Approx(0.0));
46 TEST_CASE(
"MultiQuinticSpline",
"[wavefunction][LCAO]")
62 auto agrid = std::make_unique<LogGrid<double>>();
63 agrid->set(.1, 1.0, 5);
90 double du1 = 0.0, du2 = 0.0;
91 double d2u1 = 0.0, d2u2 = 0.0;
92 double d3u1 = 0.0, d3u2 = 0.0;
93 for (
int i = 0; i < 10; i++)
95 double r = 0.08 * i + 0.1;
98 u1 = spline1.splint(r, du1, d2u1);
99 u2 = spline2.splint(r, du2, d2u2);
101 CHECK(u[0] == Approx(u1));
102 CHECK(du[0] == Approx(du1));
103 CHECK(d2u[0] == Approx(d2u1));
104 CHECK(u[1] == Approx(u2));
105 CHECK(du[1] == Approx(du2));
106 CHECK(d2u[1] == Approx(d2u2));
108 m_spline.
evaluate(r, u, du, d2u, d3u);
109 u1 = spline1.splint(r, du1, d2u1, d3u1);
110 u2 = spline2.splint(r, du2, d2u2, d3u2);
112 CHECK(u[0] == Approx(u1));
113 CHECK(du[0] == Approx(du1));
114 CHECK(d2u[0] == Approx(d2u1));
115 CHECK(d3u[0] == Approx(d3u1));
116 CHECK(u[1] == Approx(u2));
117 CHECK(du[1] == Approx(du2));
118 CHECK(d2u[1] == Approx(d2u2));
119 CHECK(d3u[1] == Approx(d3u2));
multivalue implementation for OneDimQuintic Real valued only calling any eval method with r >= r_max ...
void set(T ri, T rf, int n)
helper functions for EinsplineSetBuilder
TEST_CASE("complex_helper", "[type_traits]")
REQUIRE(std::filesystem::exists(filename))
void set(Vector< Td > &data)
void evaluate(T r, T *restrict u) const
void add_spline(int ispline, OneDimQuinticSpline< T1 > &in)
CHECK(log_values[0]==ComplexApprox(std::complex< double >{ 5.603777579195571, -6.1586603331188225 }))
T getCLForQuintic(T r, int &loc) const
void initialize(GT &agrid, int norbs, int order=5)
initialize grid and container
Assume that coeffs.D1 and the LogLightGrid r_values.size() are equal Therefore r must be < r_max...