Skip to content

Commit b29b7ca

Browse files
committed
test different pycddlib versions
1 parent 1484af3 commit b29b7ca

File tree

3 files changed

+50
-2
lines changed

3 files changed

+50
-2
lines changed

burnman/classes/polytope.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
import importlib
99
import numpy as np
10-
from sympy import Rational
1110
from fractions import Fraction
1211
from scipy.spatial import Delaunay
1312
from scipy.special import comb

test.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ echo ""
2626
echo "Dependency tree:"
2727
$PYTHON -m pip install -q pipdeptree .
2828
$PYTHON -m pipdeptree -p burnman -d 1 2> /dev/null
29+
pycddlib_version=`pip freeze | grep "pycddlib=" | awk -F"==" '{print $2}'`
30+
if [ ! -z "${pycddlib_version}" ]
31+
then echo "└── pycddlib [optional, installed: ${pycddlib_version}]"
32+
fi
2933
echo ""
3034

3135
# Quietly install optional modules after burnman

tests/test_polytope.py

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,16 @@
22
import unittest
33
from util import BurnManTest
44
import numpy as np
5+
from sympy import Matrix
6+
from fractions import Fraction
7+
import importlib
58

69
from burnman import Composite
7-
from burnman.minerals import SLB_2011
10+
from burnman.minerals import SLB_2011, JH_2015
811
from burnman.tools.polytope import solution_polytope_from_charge_balance
912
from burnman.tools.polytope import solution_polytope_from_endmember_occupancies
1013
from burnman.tools.polytope import simplify_composite_with_composition
14+
from burnman import MaterialPolytope
1115

1216

1317
class polytope(BurnManTest):
@@ -62,6 +66,47 @@ def test_simplify_composite_and_composition(self):
6266
self.assertEqual(strings[1], "[Mg]3[Mg][Si]")
6367
self.assertArraysAlmostEqual([0.1, 0.9], new_gt.molar_fractions)
6468

69+
def test_cddlib_versions(self):
70+
gt = JH_2015.garnet()
71+
endmember_occupancies = gt.solution_model.endmember_occupancies
72+
73+
n_sites = sum(endmember_occupancies[0])
74+
n_occs = endmember_occupancies.shape[1]
75+
76+
nullspace = np.array(Matrix(endmember_occupancies).nullspace(), dtype=float)
77+
78+
equalities = np.zeros((len(nullspace) + 1, n_occs + 1))
79+
equalities[0, 0] = -n_sites
80+
equalities[0, 1:] = 1
81+
if len(nullspace) > 0:
82+
try:
83+
equalities[1:, 1:] = nullspace
84+
except ValueError:
85+
equalities[1:, 1:] = nullspace[:, :, 0]
86+
87+
pos_constraints = np.concatenate(
88+
(
89+
np.zeros((len(equalities[0]) - 1, 1)),
90+
np.identity(len(equalities[0]) - 1),
91+
),
92+
axis=1,
93+
)
94+
95+
equalities = np.array([[Fraction(v) for v in r] for r in equalities])
96+
pos_constraints = np.array([[Fraction(v) for v in r] for r in pos_constraints])
97+
98+
poly = MaterialPolytope(
99+
equalities,
100+
pos_constraints,
101+
independent_endmember_occupancies=endmember_occupancies,
102+
)
103+
104+
try:
105+
_ = importlib.import_module("cdd.gmp")
106+
self.assertTrue(type(poly.raw_vertices[0][0]) is Fraction)
107+
except ImportError:
108+
self.assertTrue(type(poly.raw_vertices[0][0]) is float)
109+
65110

66111
if __name__ == "__main__":
67112
unittest.main()

0 commit comments

Comments
 (0)