Skip to content

Commit dc93bc8

Browse files
committed
Add PySCF grid levels to AtomicGridSizeDefault values
1 parent 62dd6d6 commit dc93bc8

3 files changed

Lines changed: 327 additions & 1 deletion

File tree

include/gauxc/enums.hpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,17 @@ enum class AtomicGridSizeDefault {
3535
UltraFineGrid, ///< Ultrafine grid (appropriate accuracy)
3636
SuperFineGrid, ///< Superfine grid (most accurate)
3737
GM3, ///< Treutler-Ahlrichs GM3
38-
GM5 ///< Treutlet-Ahlrichs GM5
38+
GM5, ///< Treutler-Ahlrichs GM5
39+
PySCF0, ///< PySCF default level 0
40+
PySCF1, ///< PySCF default level 1
41+
PySCF2, ///< PySCF default level 2 (angular points ~ fine grid)
42+
PySCF3, ///< PySCF default level 3
43+
PySCF4, ///< PySCF default level 4 (radial points ~ fine grid, angular points ~ ultrafine grid)
44+
PySCF5, ///< PySCF default level 5
45+
PySCF6, ///< PySCF default level 6 (radial points ~ ultrafine grid, angular points ~ superfine grid)
46+
PySCF7, ///< PySCF default level 7
47+
PySCF8, ///< PySCF default level 8
48+
PySCF9 ///< PySCF default level 9 (radial points ~ superfine grid)
3949
};
4050

4151
/**

src/molgrid_defaults.cxx

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,40 @@
1515

1616
namespace GauXC {
1717

18+
namespace detail {
19+
20+
inline RadialSize get_pyscf_radial_size( AtomicNumber Z, int level ) {
21+
if (level < 0 || level > 8)
22+
GAUXC_GENERIC_EXCEPTION("Invalid PySCF grid level: " + std::to_string(level) + ". Valid levels are 0-8.");
23+
24+
if ( Z.get() <= 2 ) {
25+
if (level == 0) return RadialSize( 10 );
26+
return RadialSize( 20 + 10*level ); // ..., 30, 40, 50, ...
27+
} else if ( Z.get() <= 10 ) {
28+
if (level == 0) return RadialSize( 15 );
29+
if (level == 1) return RadialSize( 40 );
30+
return RadialSize( 30 + 15 * level ); // ..., 60, 75, 90, ...
31+
} else if ( Z.get() <= 18 ) {
32+
if (level == 0) return RadialSize( 20 );
33+
return RadialSize( 35 + 15 * level ); // ..., 50, 65, 80, ...
34+
} else if ( Z.get() <= 36 ) {
35+
if (level == 0) return RadialSize( 30 );
36+
return RadialSize( 45 + 15 * level ); // ..., 60, 75, 90, ...
37+
} else if ( Z.get() <= 54 ) {
38+
if (level == 0) return RadialSize( 35 );
39+
return RadialSize( 50 + 15 * level ); // ..., 65, 80, 95, ...
40+
} else if ( Z.get() <= 86 ) {
41+
if (level == 0) return RadialSize( 40 );
42+
return RadialSize( 55 + 15 * level ); // ..., 70, 85, 100, ...
43+
} else if ( Z.get() <= 118 ) {
44+
if (level == 0) return RadialSize( 50 );
45+
return RadialSize( 60 + 15 * level ); // ..., 75, 90, 105, ...
46+
} else {
47+
GAUXC_GENERIC_EXCEPTION("Z > 118 Not Supported for PySCF Grid Defaults");
48+
}
49+
}
50+
}
51+
1852
RadialScale default_mk_radial_scaling_factor( AtomicNumber _Z ) {
1953
auto Z = _Z.get();
2054
switch(Z) {
@@ -117,6 +151,36 @@ std::tuple<RadialSize,AngularSize>
117151
case AtomicGridSizeDefault::GM5:
118152
return std::make_tuple( RadialSize(50), AngularSize(302) );
119153

154+
case AtomicGridSizeDefault::PySCF0:
155+
return std::make_tuple( detail::get_pyscf_radial_size(Z, 0), Z.get() <= 2 ? AngularSize(50) : (Z.get() <= 10 ? AngularSize(86) : AngularSize(110)));
156+
157+
case AtomicGridSizeDefault::PySCF1:
158+
return std::make_tuple( detail::get_pyscf_radial_size(Z, 1), Z.get() <= 2 ? AngularSize(110) : AngularSize(194));
159+
160+
case AtomicGridSizeDefault::PySCF2:
161+
return std::make_tuple( detail::get_pyscf_radial_size(Z, 2), Z.get() <= 2 ? AngularSize(194) : AngularSize(302));
162+
163+
case AtomicGridSizeDefault::PySCF3:
164+
return std::make_tuple( detail::get_pyscf_radial_size(Z, 3), Z.get() <= 10 ? AngularSize(302) : AngularSize(434));
165+
166+
case AtomicGridSizeDefault::PySCF4:
167+
return std::make_tuple( detail::get_pyscf_radial_size(Z, 4), Z.get() <= 2 ? AngularSize(434) : AngularSize(590));
168+
169+
case AtomicGridSizeDefault::PySCF5:
170+
return std::make_tuple( detail::get_pyscf_radial_size(Z, 5), Z.get() <= 2 ? AngularSize(590) : AngularSize(770));
171+
172+
case AtomicGridSizeDefault::PySCF6:
173+
return std::make_tuple( detail::get_pyscf_radial_size(Z, 6), Z.get() <= 2 ? AngularSize(770) : AngularSize(974));
174+
175+
case AtomicGridSizeDefault::PySCF7:
176+
return std::make_tuple( detail::get_pyscf_radial_size(Z, 7), Z.get() <= 2 ? AngularSize(974) : AngularSize(1202));
177+
178+
case AtomicGridSizeDefault::PySCF8:
179+
return std::make_tuple( detail::get_pyscf_radial_size(Z, 8), AngularSize(1202));
180+
181+
case AtomicGridSizeDefault::PySCF9:
182+
return std::make_tuple( RadialSize(200), AngularSize(1454) );
183+
120184
case AtomicGridSizeDefault::FineGrid:
121185
return std::make_tuple( RadialSize(75), AngularSize(302) );
122186

tests/molgrid_test.cxx

Lines changed: 252 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,258 @@ TEST_CASE("MolGrid Defaults", "[molgrid]") {
219219
}
220220
}
221221

222+
SECTION("PySCF0 Grid Size") {
223+
int64_t refgr[] = { -1,
224+
10, 10 ,
225+
15, 15, 15, 15, 15, 15, 15, 15 ,
226+
20, 20, 20, 20, 20, 20, 20, 20,
227+
30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 35, 35,
228+
35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
229+
40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
230+
50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50
231+
};
232+
int64_t refga[] = { -1,
233+
50, 50 ,
234+
86, 86, 86, 86, 86, 86, 86, 86 ,
235+
110, 110, 110, 110, 110, 110, 110, 110,
236+
110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
237+
110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
238+
110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
239+
110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110
240+
};
241+
for(auto Z = 1; Z < 119; ++Z) {
242+
auto [gr, ga] = default_grid_size( AtomicNumber(Z), RadialQuad::MuraKnowles,
243+
AtomicGridSizeDefault::PySCF0 );
244+
REQUIRE( gr.get() == refgr[Z] );
245+
REQUIRE( ga.get() == refga[Z] );
246+
}
247+
}
248+
249+
SECTION("PySCF1 Grid Size") {
250+
int64_t refgr[] = { -1,
251+
30, 30 ,
252+
40, 40, 40, 40, 40, 40, 40, 40 ,
253+
50, 50, 50, 50, 50, 50, 50, 50,
254+
60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 65, 65,
255+
65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
256+
70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
257+
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75
258+
};
259+
int64_t refga[] = { -1,
260+
110, 110 ,
261+
194, 194, 194, 194, 194, 194, 194, 194 ,
262+
194, 194, 194, 194, 194, 194, 194, 194,
263+
194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
264+
194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
265+
194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
266+
194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194
267+
};
268+
for(auto Z = 1; Z < 119; ++Z) {
269+
auto [gr, ga] = default_grid_size( AtomicNumber(Z), RadialQuad::MuraKnowles,
270+
AtomicGridSizeDefault::PySCF1 );
271+
REQUIRE( gr.get() == refgr[Z] );
272+
REQUIRE( ga.get() == refga[Z] );
273+
}
274+
}
275+
276+
SECTION("PySCF2 Grid Size") {
277+
int64_t refgr[] = { -1,
278+
40, 40 ,
279+
60, 60, 60, 60, 60, 60, 60, 60 ,
280+
65, 65, 65, 65, 65, 65, 65, 65,
281+
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 80, 80,
282+
80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
283+
85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
284+
90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90
285+
};
286+
int64_t refga[] = { -1,
287+
194, 194 ,
288+
302, 302, 302, 302, 302, 302, 302, 302 ,
289+
302, 302, 302, 302, 302, 302, 302, 302,
290+
302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
291+
302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
292+
302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
293+
302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302
294+
};
295+
for(auto Z = 1; Z < 119; ++Z) {
296+
auto [gr, ga] = default_grid_size( AtomicNumber(Z), RadialQuad::MuraKnowles,
297+
AtomicGridSizeDefault::PySCF2 );
298+
REQUIRE( gr.get() == refgr[Z] );
299+
REQUIRE( ga.get() == refga[Z] );
300+
}
301+
}
302+
303+
SECTION("PySCF3 Grid Size") {
304+
int64_t refgr[] = { -1,
305+
50, 50 ,
306+
75, 75, 75, 75, 75, 75, 75, 75 ,
307+
80, 80, 80, 80, 80, 80, 80, 80,
308+
90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 95, 95,
309+
95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
310+
100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
311+
105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105
312+
};
313+
int64_t refga[] = { -1,
314+
302, 302 ,
315+
302, 302, 302, 302, 302, 302, 302, 302 ,
316+
434, 434, 434, 434, 434, 434, 434, 434,
317+
434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434,
318+
434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434,
319+
434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434,
320+
434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434
321+
};
322+
for(auto Z = 1; Z < 119; ++Z) {
323+
auto [gr, ga] = default_grid_size( AtomicNumber(Z), RadialQuad::MuraKnowles,
324+
AtomicGridSizeDefault::PySCF3 );
325+
REQUIRE( gr.get() == refgr[Z] );
326+
REQUIRE( ga.get() == refga[Z] );
327+
}
328+
}
329+
330+
SECTION("PySCF4 Grid Size") {
331+
int64_t refgr[] = { -1,
332+
60, 60 ,
333+
90, 90, 90, 90, 90, 90, 90, 90 ,
334+
95, 95, 95, 95, 95, 95, 95, 95,
335+
105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 110, 110,
336+
110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
337+
115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
338+
120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120
339+
};
340+
int64_t refga[] = { -1,
341+
434, 434 ,
342+
590, 590, 590, 590, 590, 590, 590, 590 ,
343+
590, 590, 590, 590, 590, 590, 590, 590,
344+
590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590,
345+
590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590,
346+
590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590,
347+
590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590
348+
};
349+
for(auto Z = 1; Z < 119; ++Z) {
350+
auto [gr, ga] = default_grid_size( AtomicNumber(Z), RadialQuad::MuraKnowles,
351+
AtomicGridSizeDefault::PySCF4 );
352+
REQUIRE( gr.get() == refgr[Z] );
353+
REQUIRE( ga.get() == refga[Z] );
354+
}
355+
}
356+
357+
SECTION("PySCF5 Grid Size") {
358+
int64_t refgr[] = { -1,
359+
70, 70 ,
360+
105, 105, 105, 105, 105, 105, 105, 105 ,
361+
110, 110, 110, 110, 110, 110, 110, 110,
362+
120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 125, 125,
363+
125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
364+
130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
365+
135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135
366+
};
367+
int64_t refga[] = { -1,
368+
590, 590 ,
369+
770, 770, 770, 770, 770, 770, 770, 770 ,
370+
770, 770, 770, 770, 770, 770, 770, 770,
371+
770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770,
372+
770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770,
373+
770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770,
374+
770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770
375+
};
376+
for(auto Z = 1; Z < 119; ++Z) {
377+
auto [gr, ga] = default_grid_size( AtomicNumber(Z), RadialQuad::MuraKnowles,
378+
AtomicGridSizeDefault::PySCF5 );
379+
REQUIRE( gr.get() == refgr[Z] );
380+
REQUIRE( ga.get() == refga[Z] );
381+
}
382+
}
383+
384+
SECTION("PySCF6 Grid Size") {
385+
int64_t refgr[] = { -1,
386+
80, 80 ,
387+
120, 120, 120, 120, 120, 120, 120, 120 ,
388+
125, 125, 125, 125, 125, 125, 125, 125,
389+
135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 140, 140,
390+
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
391+
145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
392+
150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150
393+
};
394+
int64_t refga[] = { -1,
395+
770, 770 ,
396+
974, 974, 974, 974, 974, 974, 974, 974 ,
397+
974, 974, 974, 974, 974, 974, 974, 974,
398+
974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974,
399+
974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974,
400+
974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974,
401+
974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974
402+
};
403+
for(auto Z = 1; Z < 119; ++Z) {
404+
auto [gr, ga] = default_grid_size( AtomicNumber(Z), RadialQuad::MuraKnowles,
405+
AtomicGridSizeDefault::PySCF6 );
406+
REQUIRE( gr.get() == refgr[Z] );
407+
REQUIRE( ga.get() == refga[Z] );
408+
}
409+
}
410+
411+
SECTION("PySCF7 Grid Size") {
412+
int64_t refgr[] = { -1,
413+
90, 90 ,
414+
135, 135, 135, 135, 135, 135, 135, 135 ,
415+
140, 140, 140, 140, 140, 140, 140, 140,
416+
150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 155, 155,
417+
155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
418+
160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
419+
165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165
420+
};
421+
int64_t refga[] = { -1,
422+
974, 974 ,
423+
1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202 ,
424+
1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202,
425+
1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202,
426+
1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202,
427+
1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202,
428+
1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202
429+
};
430+
for(auto Z = 1; Z < 119; ++Z) {
431+
auto [gr, ga] = default_grid_size( AtomicNumber(Z), RadialQuad::MuraKnowles,
432+
AtomicGridSizeDefault::PySCF7 );
433+
REQUIRE( gr.get() == refgr[Z] );
434+
REQUIRE( ga.get() == refga[Z] );
435+
}
436+
}
437+
438+
SECTION("PySCF8 Grid Size") {
439+
int64_t refgr[] = { -1,
440+
100, 100 ,
441+
150, 150, 150, 150, 150, 150, 150, 150 ,
442+
155, 155, 155, 155, 155, 155, 155, 155,
443+
165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 170, 170,
444+
170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
445+
175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175,
446+
180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180
447+
};
448+
int64_t refga[] = { -1,
449+
1202, 1202 ,
450+
1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202 ,
451+
1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202,
452+
1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202,
453+
1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202,
454+
1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202,
455+
1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202
456+
};
457+
for(auto Z = 1; Z < 119; ++Z) {
458+
auto [gr, ga] = default_grid_size( AtomicNumber(Z), RadialQuad::MuraKnowles,
459+
AtomicGridSizeDefault::PySCF8 );
460+
REQUIRE( gr.get() == refgr[Z] );
461+
REQUIRE( ga.get() == refga[Z] );
462+
}
463+
}
464+
465+
SECTION("PySCF9 Grid Size") {
466+
for(auto Z = 1; Z < 119; ++Z) {
467+
auto [gr, ga] = default_grid_size( AtomicNumber(Z), RadialQuad::MuraKnowles,
468+
AtomicGridSizeDefault::PySCF9 );
469+
REQUIRE( gr.get() == 200 );
470+
REQUIRE( ga.get() == 1454 );
471+
}
472+
}
473+
222474
}
223475

224476

0 commit comments

Comments
 (0)