Skip to content

Commit 948eabd

Browse files
committed
added tests
1 parent 61950b0 commit 948eabd

File tree

4 files changed

+96
-5
lines changed

4 files changed

+96
-5
lines changed

Readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.14238360.svg)](https://doi.org/10.5281/zenodo.14238360)
22
[![DOI](https://joss.theoj.org/papers/10.21105/joss.05389/status.svg)](https://doi.org/10.21105/joss.05389)
3-
[![coverage](https://img.shields.io/badge/coverage-%3E84%25-green")](https://github.com/geodynamics/burnman/actions/workflows/coverage.yml)
3+
[![coverage](https://img.shields.io/badge/coverage-%3E86%25-green")](https://github.com/geodynamics/burnman/actions/workflows/coverage.yml)
44

55
# BurnMan - a Python toolkit for planetary geophysics, geochemistry and thermodynamics
66

tests/test_eos.py

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import burnman
99
from burnman import minerals
10+
from burnman.eos import debye
1011
from burnman.utils.chemistry import dictionarize_formula, formula_mass
1112

1213

@@ -415,7 +416,17 @@ def test_energy_derivatives(self):
415416
}
416417
)
417418

418-
eoses = ["bm3", "bm4", "vinet", "mt", "morse", "rkprime"]
419+
eoses = [
420+
"bm3",
421+
"bm4",
422+
"vinet",
423+
"mt",
424+
"morse",
425+
"rkprime",
426+
"macaw",
427+
"spock",
428+
"murnaghan",
429+
]
419430

420431
calculated = []
421432
derivative = []
@@ -424,12 +435,12 @@ def test_energy_derivatives(self):
424435
burnman.Mineral.__init__(m)
425436

426437
P_0 = 10.0e9
427-
dP = 1000.0
438+
dP = 10000.0
428439
pressures = [P_0 - 0.5 * dP, P_0, P_0 + 0.5 * dP]
429440
temperatures = [0.0, 0.0, 0.0]
430441

431-
E, G, H, A, V = m.evaluate(
432-
["molar_internal_energy", "gibbs", "H", "helmholtz", "V"],
442+
E, G, H, A, V, KT = m.evaluate(
443+
["molar_internal_energy", "gibbs", "H", "helmholtz", "V", "K_T"],
433444
pressures,
434445
temperatures,
435446
)
@@ -438,9 +449,34 @@ def test_energy_derivatives(self):
438449
derivative.append(-(E[2] - E[0]) / (V[2] - V[0]))
439450
calculated.append(V[1])
440451
derivative.append((G[2] - G[0]) / dP)
452+
calculated.append(-V[1] / KT[1])
453+
derivative.append((V[2] - V[0]) / dP)
441454

442455
self.assertArraysAlmostEqual(calculated, derivative)
443456

457+
def test_debye(self):
458+
T = 500.0
459+
debye_T = 200.0
460+
n = 3.0
461+
462+
dT = 0.001
463+
464+
Cv = debye.molar_heat_capacity_v(T, debye_T, n)
465+
S = debye.entropy(T, debye_T, n)
466+
Cv2 = (
467+
debye.thermal_energy(T + dT / 2.0, debye_T, n)
468+
- debye.thermal_energy(T - dT / 2.0, debye_T, n)
469+
) / dT
470+
S2 = (
471+
-(
472+
debye.helmholtz_free_energy(T + dT / 2.0, debye_T, n)
473+
- debye.helmholtz_free_energy(T - dT / 2.0, debye_T, n)
474+
)
475+
/ dT
476+
)
477+
self.assertAlmostEqual(Cv, Cv2)
478+
self.assertAlmostEqual(S, S2)
479+
444480
def test_pressure_finding(self):
445481
with warnings.catch_warnings(record=True) as w:
446482
warnings.simplefilter("always")

tests/test_eos_consistency.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,32 @@ def test_SLB_2022(self):
4848
check_eos_consistency(burnman.minerals.SLB_2022.almandine(), P, T), True
4949
)
5050

51+
def test_DKS_liquid(self):
52+
P = 10.0e9
53+
T = 3000.0
54+
self.assertEqual(
55+
check_eos_consistency(
56+
burnman.minerals.DKS_2013_liquids.Mg3Si2O7_liquid(),
57+
P,
58+
T,
59+
including_shear_properties=False,
60+
),
61+
True,
62+
)
63+
64+
def test_DKS_solid(self):
65+
P = 10.0e9
66+
T = 3000.0
67+
self.assertEqual(
68+
check_eos_consistency(
69+
burnman.minerals.DKS_2013_solids.periclase(),
70+
P,
71+
T,
72+
including_shear_properties=False,
73+
),
74+
True,
75+
)
76+
5177
def test_modifier(self):
5278
P = 10.0e9
5379
T = 3000.0

tests/test_polytope.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,18 @@
1212
from burnman.tools.polytope import solution_polytope_from_endmember_occupancies
1313
from burnman.tools.polytope import simplify_composite_with_composition
1414
from burnman import MaterialPolytope
15+
from burnman.classes.polytope import SimplexGrid
1516

1617

1718
class polytope(BurnManTest):
19+
def test_simplex(self):
20+
simplex = SimplexGrid(3, 4)
21+
grid_list = np.array(simplex.grid(generate_type="list"))
22+
grid_array = simplex.grid(generate_type="array")
23+
24+
self.assertArraysAlmostEqual(grid_list[-1], grid_array[-1])
25+
self.assertTrue(simplex.n_points() == len(grid_array))
26+
1827
def test_polytope_from_charge_balance(self):
1928
bdg_poly = solution_polytope_from_charge_balance(
2029
[[2, 2, 3, 3], [3, 3, 4]], 6, return_fractions=False
@@ -38,6 +47,26 @@ def test_solution_polytope_from_endmember_occupancies(self):
3847
)
3948
)
4049

50+
self.assertTrue(len(gt.solution_model.endmember_occupancies) == 5)
51+
self.assertTrue(len(gt_poly.independent_endmember_occupancies) == 5)
52+
53+
self.assertTrue(len(gt.solution_model.endmember_occupancies[0]) == 9)
54+
self.assertTrue(len(gt_poly.endmember_occupancies[0]) == 9)
55+
self.assertTrue(len(gt_poly.independent_endmember_occupancies[0]) == 9)
56+
57+
self.assertTrue(gt_poly.n_endmembers == 7)
58+
self.assertTrue(len(gt_poly.limits) == 14)
59+
60+
self.assertTrue(len(gt_poly.independent_endmember_limits) == 6)
61+
self.assertTrue(len(gt_poly.independent_endmember_limits[0]) == 5)
62+
63+
grid1 = gt_poly.grid(2, grid_type="independent endmember proportions")
64+
self.assertTrue(len(grid1) == 7)
65+
self.assertTrue(len(grid1[0]) == 5)
66+
grid2 = gt_poly.grid(2, grid_type="site occupancies")
67+
self.assertTrue(len(grid2) == 7)
68+
self.assertTrue(len(grid2[0]) == 9)
69+
4170
def test_simplify_composite(self):
4271
gt = SLB_2011.garnet()
4372
ol = SLB_2011.mg_fe_olivine()

0 commit comments

Comments
 (0)