Skip to content

Commit 252e758

Browse files
authored
Merge pull request #213 from marco-2023/direct_deriv_test
Test direct density derivatives
2 parents 339ee39 + a25dd16 commit 252e758

2 files changed

Lines changed: 32 additions & 484 deletions

File tree

tests/test_density.py

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,8 @@ def test_evaluate_density(screen_basis, tol_screen):
8585

8686
@pytest.mark.parametrize("screen_basis", [True, False])
8787
@pytest.mark.parametrize("tol_screen", [1e-8])
88-
def test_evaluate_deriv_density(screen_basis, tol_screen):
88+
@pytest.mark.parametrize("deriv_type", ["general", "direct"])
89+
def test_evaluate_deriv_density(screen_basis, tol_screen, deriv_type):
8990
"""Test gbasis.evals.density.evaluate_deriv_density."""
9091
basis_dict = parse_nwchem(find_datafile("data_sto6g.nwchem"))
9192
basis = make_contractions(basis_dict, ["Kr"], np.array([[0, 0, 0]]), "spherical")
@@ -102,6 +103,7 @@ def test_evaluate_deriv_density(screen_basis, tol_screen):
102103
basis,
103104
points,
104105
transform,
106+
deriv_type=deriv_type,
105107
screen_basis=screen_basis,
106108
tol_screen=tol_screen,
107109
),
@@ -128,6 +130,7 @@ def test_evaluate_deriv_density(screen_basis, tol_screen):
128130
basis,
129131
points,
130132
transform,
133+
deriv_type=deriv_type,
131134
screen_basis=screen_basis,
132135
tol_screen=tol_screen,
133136
),
@@ -153,6 +156,7 @@ def test_evaluate_deriv_density(screen_basis, tol_screen):
153156
basis,
154157
points,
155158
transform,
159+
deriv_type=deriv_type,
156160
screen_basis=screen_basis,
157161
tol_screen=tol_screen,
158162
),
@@ -178,6 +182,7 @@ def test_evaluate_deriv_density(screen_basis, tol_screen):
178182
basis,
179183
points,
180184
transform,
185+
deriv_type=deriv_type,
181186
screen_basis=screen_basis,
182187
tol_screen=tol_screen,
183188
),
@@ -269,7 +274,8 @@ def test_evaluate_deriv_density(screen_basis, tol_screen):
269274

270275
@pytest.mark.parametrize("screen_basis", [True, False])
271276
@pytest.mark.parametrize("tol_screen", [1e-8])
272-
def test_evaluate_density_gradient(screen_basis, tol_screen):
277+
@pytest.mark.parametrize("deriv_type", ["general", "direct"])
278+
def test_evaluate_density_gradient(screen_basis, tol_screen, deriv_type):
273279
"""Test gbasis.evals.density.evaluate_density_gradient."""
274280
basis_dict = parse_nwchem(find_datafile("data_sto6g.nwchem"))
275281
basis = make_contractions(basis_dict, ["Kr"], np.array([[0, 0, 0]]), "spherical")
@@ -280,7 +286,13 @@ def test_evaluate_density_gradient(screen_basis, tol_screen):
280286

281287
np.allclose(
282288
evaluate_density_gradient(
283-
density, basis, points, transform, screen_basis=screen_basis, tol_screen=tol_screen
289+
density,
290+
basis,
291+
points,
292+
transform,
293+
deriv_type=deriv_type,
294+
screen_basis=screen_basis,
295+
tol_screen=tol_screen,
284296
).T,
285297
np.array(
286298
[
@@ -360,7 +372,8 @@ def test_evaluate_density_horton(screen_basis, tol_screen):
360372

361373
@pytest.mark.parametrize("screen_basis", [True, False])
362374
@pytest.mark.parametrize("tol_screen", [1e-8])
363-
def test_evaluate_density_gradient_horton(screen_basis, tol_screen):
375+
@pytest.mark.parametrize("deriv_type", ["general", "direct"])
376+
def test_evaluate_density_gradient_horton(screen_basis, tol_screen, deriv_type):
364377
"""Test gbasis.evals.density.evaluate_density_gradient against result from HORTON.
365378
366379
The test case is diatomic with H and He separated by 0.8 angstroms with basis set ANO-RCC.
@@ -394,7 +407,8 @@ def test_evaluate_density_gradient_horton(screen_basis, tol_screen):
394407

395408
@pytest.mark.parametrize("screen_basis", [True, False])
396409
@pytest.mark.parametrize("tol_screen", [1e-8])
397-
def test_evaluate_hessian_deriv_horton(screen_basis, tol_screen):
410+
@pytest.mark.parametrize("deriv_type", ["general", "direct"])
411+
def test_evaluate_hessian_deriv_horton(screen_basis, tol_screen, deriv_type):
398412
"""Test gbasis.evals.density.evaluate_density_hessian against result from HORTON.
399413
400414
The test case is diatomic with H and He separated by 0.8 angstroms with basis set ANO-RCC.
@@ -424,6 +438,7 @@ def test_evaluate_hessian_deriv_horton(screen_basis, tol_screen):
424438
basis,
425439
grid_3d,
426440
np.identity(88),
441+
deriv_type=deriv_type,
427442
screen_basis=screen_basis,
428443
tol_screen=tol_screen,
429444
),
@@ -434,7 +449,8 @@ def test_evaluate_hessian_deriv_horton(screen_basis, tol_screen):
434449

435450
@pytest.mark.parametrize("screen_basis", [True, False])
436451
@pytest.mark.parametrize("tol_screen", [1e-8])
437-
def test_evaluate_laplacian_deriv_horton(screen_basis, tol_screen):
452+
@pytest.mark.parametrize("deriv_type", ["general", "direct"])
453+
def test_evaluate_laplacian_deriv_horton(screen_basis, tol_screen, deriv_type):
438454
"""Test gbasis.evals.density.evaluate_density_laplacian against result from HORTON.
439455
440456
The test case is diatomic with H and He separated by 0.8 angstroms with basis set ANO-RCC.
@@ -458,6 +474,7 @@ def test_evaluate_laplacian_deriv_horton(screen_basis, tol_screen):
458474
basis,
459475
grid_3d,
460476
np.identity(88),
477+
deriv_type=deriv_type,
461478
screen_basis=screen_basis,
462479
tol_screen=tol_screen,
463480
),
@@ -468,7 +485,8 @@ def test_evaluate_laplacian_deriv_horton(screen_basis, tol_screen):
468485

469486
@pytest.mark.parametrize("screen_basis", [True, False])
470487
@pytest.mark.parametrize("tol_screen", [1e-8])
471-
def test_evaluate_posdef_kinetic_energy_density(screen_basis, tol_screen):
488+
@pytest.mark.parametrize("deriv_type", ["general", "direct"])
489+
def test_evaluate_posdef_kinetic_energy_density(screen_basis, tol_screen, deriv_type):
472490
"""Test evaluate_posdef_kinetic_energy_density against results from HORTON.
473491
474492
The test case is diatomic with H and He separated by 0.8 angstroms with basis set ANO-RCC.
@@ -493,6 +511,7 @@ def test_evaluate_posdef_kinetic_energy_density(screen_basis, tol_screen):
493511
basis,
494512
grid_3d,
495513
np.identity(88),
514+
deriv_type=deriv_type,
496515
screen_basis=screen_basis,
497516
tol_screen=tol_screen,
498517
)
@@ -502,7 +521,8 @@ def test_evaluate_posdef_kinetic_energy_density(screen_basis, tol_screen):
502521

503522
@pytest.mark.parametrize("screen_basis", [True, False])
504523
@pytest.mark.parametrize("tol_screen", [1e-8])
505-
def test_evaluate_general_kinetic_energy_density_horton(screen_basis, tol_screen):
524+
@pytest.mark.parametrize("deriv_type", ["general", "direct"])
525+
def test_evaluate_general_kinetic_energy_density_horton(screen_basis, tol_screen, deriv_type):
506526
"""Test evaluate_general_kinetic_energy_density against results from HORTON.
507527
508528
The test case is diatomic with H and He separated by 0.8 angstroms with basis set ANO-RCC.
@@ -531,6 +551,7 @@ def test_evaluate_general_kinetic_energy_density_horton(screen_basis, tol_screen
531551
grid_3d,
532552
0,
533553
np.identity(88),
554+
deriv_type=deriv_type,
534555
screen_basis=screen_basis,
535556
tol_screen=tol_screen,
536557
),
@@ -541,7 +562,8 @@ def test_evaluate_general_kinetic_energy_density_horton(screen_basis, tol_screen
541562

542563
@pytest.mark.parametrize("screen_basis", [True, False])
543564
@pytest.mark.parametrize("tol_screen", [1e-8])
544-
def test_evaluate_general_kinetic_energy_density(screen_basis, tol_screen):
565+
@pytest.mark.parametrize("deriv_type", ["general", "direct"])
566+
def test_evaluate_general_kinetic_energy_density(screen_basis, tol_screen, deriv_type):
545567
"""Test density.evaluate_general_kinetic_energy_density."""
546568
basis_dict = parse_nwchem(find_datafile("data_anorcc.nwchem"))
547569
points = np.array([[0, 0, 0]])
@@ -567,6 +589,7 @@ def test_evaluate_general_kinetic_energy_density(screen_basis, tol_screen):
567589
points,
568590
1,
569591
np.identity(40),
592+
deriv_type=deriv_type,
570593
screen_basis=screen_basis,
571594
tol_screen=tol_screen,
572595
),

0 commit comments

Comments
 (0)