Skip to content

Commit 3bf4857

Browse files
committed
Wrap custom valence functions in BVParametersTable.
Expose the getAtomValence, setAtomValence, resetAtomValences methods.
1 parent 2abe039 commit 3bf4857

2 files changed

Lines changed: 51 additions & 0 deletions

File tree

diffpy/srreal/tests/testbvscalculator.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,27 @@ def test_pickling_derived_structure(self):
181181
return
182182

183183

184+
def test_table_atom_valence(self):
185+
'''check calculation with defined valences in bvparamtable
186+
'''
187+
bvc = self.bvc
188+
barerutile = Structure(self.rutile)
189+
for a in barerutile:
190+
a.element = a.element.rstrip('+-012345678')
191+
self.assertEqual({"Ti" : 2, "O" : 4}, barerutile.composition)
192+
self.assertFalse(any(bvc(barerutile)))
193+
bptb = bvc.bvparamtable
194+
bptb.setAtomValence("Ti", +4)
195+
bptb.setAtomValence("O", -2)
196+
vcalc = bvc(barerutile)
197+
self.assertEqual(4, bptb.getAtomValence("Ti"))
198+
self.assertEqual(-2, bptb.getAtomValence("O"))
199+
self.assertEqual(set((+4, -2)), set(round(x) for x in vcalc))
200+
self.assertEqual(set((+4, -2)), set(bvc.valences))
201+
bptb.resetAtomValences()
202+
self.assertFalse(any(bvc(barerutile)))
203+
return
204+
184205
# End of class TestBVSCalculator
185206

186207
if __name__ == '__main__':

srrealmodule/wrap_BVParametersTable.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,28 @@ Singleton instance of void bond valence parameters.\n\
108108
Also returned by 'lookup' when valence data do not exist.\n\
109109
";
110110

111+
const char* doc_BVParametersTable_getAtomValence = "\
112+
Return signed valence for the specified atom or ion symbol.\n\
113+
\n\
114+
Return valence previously defined by setAtomValence or\n\
115+
interpret the charge suffix, for example, use -2 for \"S2-\".\n\
116+
";
117+
118+
const char* doc_BVParametersTable_setAtomValence = "\
119+
Define custom valence for the specified atom or ion symbol.\n\
120+
\n\
121+
smbl -- string symbol of atom or ion, for example \"F\".\n\
122+
value -- signed valence to be used for the symbol, e.g., -1.\n\
123+
\n\
124+
No return value.\n\
125+
";
126+
127+
const char* doc_BVParametersTable_resetAtomValences = "\
128+
Unset any custom valences defined by setAtomValence.\n\
129+
\n\
130+
Valences are thereafter obtained from charge suffixes only.\n\
131+
";
132+
111133
const char* doc_BVParametersTable_lookup1 = "\
112134
Lookup bond valence parameters by a BVParam instance.\n\
113135
\n\
@@ -272,6 +294,14 @@ void wrap_BVParametersTable()
272294
class_<BVParametersTable>("BVParametersTable", doc_BVParametersTable)
273295
.def("none", singleton_none, doc_BVParametersTable_none)
274296
.staticmethod("none")
297+
.def("getAtomValence", &BVParametersTable::getAtomValence,
298+
arg("smbl"),
299+
doc_BVParametersTable_getAtomValence)
300+
.def("setAtomValence", &BVParametersTable::setAtomValence,
301+
(arg("smbl"), arg("value")),
302+
doc_BVParametersTable_setAtomValence)
303+
.def("resetAtomValences", &BVParametersTable::resetAtomValences,
304+
doc_BVParametersTable_resetAtomValences)
275305
.def("lookup", bptb_bvparam_1(&BVParametersTable::lookup),
276306
arg("bvparam"), doc_BVParametersTable_lookup1,
277307
return_value_policy<copy_const_reference>())

0 commit comments

Comments
 (0)