diff options
Diffstat (limited to 'CSXCAD/python/tests/test_CSProperties.py')
-rw-r--r-- | CSXCAD/python/tests/test_CSProperties.py | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/CSXCAD/python/tests/test_CSProperties.py b/CSXCAD/python/tests/test_CSProperties.py new file mode 100644 index 0000000..4703796 --- /dev/null +++ b/CSXCAD/python/tests/test_CSProperties.py @@ -0,0 +1,140 @@ +# -*- coding: utf-8 -*- +""" +Created on Thu Dec 10 21:47:29 2015 + +@author: thorsten +""" + +import numpy as np + +from CSXCAD import ParameterObjects +from CSXCAD import CSProperties, CSPrimitives + +import unittest + +class Test_CSPrimMethods(unittest.TestCase): + def setUp(self): + self.pset = ParameterObjects.ParameterSet() + + def test_add_primitives(self): + prop = CSProperties.CSPropMetal(self.pset) + box = prop.AddBox(start= [0,0,0] , stop=[1,1,1]) + + self.assertEqual( prop.GetQtyPrimitives(), 1) + self.assertEqual( id(prop.GetPrimitive(0)), id(box)) + + self.assertEqual( prop.GetPrimitive(0).GetType(), CSPrimitives.BOX) + self.assertEqual( len(prop.GetAllPrimitives()), 1) + self.assertEqual( prop.GetAllPrimitives(), [box,]) + + prim = prop.AddCylinder(start= [0,0,0] , stop=[1,1,1], radius=0.5) + self.assertEqual( prop.GetQtyPrimitives(), 2) + self.assertEqual( prop.GetPrimitive(1).GetType(), CSPrimitives.CYLINDER) + + prim = prop.AddCylindricalShell(start= [0,0,0] , stop=[1,1,1], radius=0.5, shell_width=0.1) + self.assertEqual( prop.GetQtyPrimitives(), 3) + self.assertEqual( prop.GetPrimitive(2).GetType(), CSPrimitives.CYLINDRICALSHELL) + + prim = prop.AddSphere(center=[1,1,1], radius=0.5) + self.assertEqual( prop.GetQtyPrimitives(), 4) + self.assertEqual( prop.GetPrimitive(3).GetType(), CSPrimitives.SPHERE) + + prim = prop.AddSphericalShell(center=[1,1,1], radius=0.5, shell_width=0.1) + self.assertEqual( prop.GetQtyPrimitives(), 5) + self.assertEqual( prop.GetPrimitive(4).GetType(), CSPrimitives.SPHERICALSHELL) + + self.assertEqual( len(prop.GetAllPrimitives()), 5) + + def test_metal(self): + prop = CSProperties.CSPropMetal(self.pset) + + self.assertEqual( prop.GetType(), CSProperties.METAL) + self.assertEqual( prop.GetTypeString(), 'Metal') + + def test_material(self): + prop = CSProperties.CSPropMaterial(self.pset, epsilon = 5.0) + + self.assertEqual( prop.GetType(), CSProperties.MATERIAL) + self.assertEqual( prop.GetTypeString(), 'Material') + + self.assertEqual( prop.GetMaterialProperty('epsilon'), 5.0) + self.assertEqual( prop.GetMaterialProperty('mue'), 1.0) + +# print(CSX.GetQtyProperties()) + + prop.SetMaterialProperty(epsilon=[1.0, 2.0, 3.0], mue=2.0) + self.assertEqual( prop.GetMaterialProperty('epsilon'), 1.0) + self.assertEqual( prop.GetMaterialProperty('mue'), 2.0) + + prop.SetMaterialWeight(epsilon=['sin(x)', 'y', 'z'], mue='cos(y)', density='z*z') + self.assertEqual( prop.GetMaterialWeight('epsilon'), 'sin(x)') + self.assertEqual( prop.GetMaterialWeight('mue'), 'cos(y)') + self.assertEqual( prop.GetMaterialWeight('density'), 'z*z') + + prop.SetIsotropy(False) + self.assertFalse( prop.GetIsotropy(),False) + self.assertTrue( (prop.GetMaterialProperty('epsilon')==[1.0, 2.0, 3.0]).all()) + + def test_lumped_elem(self): + prop = CSProperties.CSPropLumpedElement(self.pset, R = 50, C=1e-12, caps=True, ny='x') + + self.assertEqual( prop.GetType(), CSProperties.LUMPED_ELEMENT) + self.assertEqual( prop.GetTypeString(), 'LumpedElement') + + self.assertEqual( prop.GetResistance(), 50) + prop.SetResistance(55.0) + prop.SetDirection('x') + self.assertEqual( prop.GetResistance(), 55) + self.assertEqual( prop.GetCapacity(), 1e-12) + self.assertTrue( prop.GetCaps()) + prop.SetCaps(False) + self.assertFalse( prop.GetCaps()) + self.assertEqual( prop.GetDirection(), 0) + + def test_cond_sheet(self): + prop = CSProperties.CSPropConductingSheet(self.pset, conductivity=56e6, thickness=35e-6) + + self.assertEqual( prop.GetType(), CSProperties.CONDUCTINGSHEET + CSProperties.METAL) + self.assertEqual( prop.GetTypeString(), 'ConductingSheet') + + self.assertEqual( prop.GetConductivity(), 56e6) + self.assertEqual( prop.GetThickness(), 35e-6) + + def test_excitation(self): + prop = CSProperties.CSPropExcitation(self.pset, exc_type=1, exc_val=[-1.0, 0, 1.0], delay=1e-9) + + self.assertEqual( prop.GetType(), CSProperties.EXCITATION) + self.assertEqual( prop.GetTypeString(), 'Excitation') + + self.assertEqual( prop.GetExcitType(), 1) + self.assertTrue( (prop.GetExcitation()==[-1.0, 0, 1.0]).all() ) + self.assertEqual( prop.GetDelay(),1e-9) + + prop.SetWeightFunction(['y','x','z']) + self.assertEqual(prop.GetWeightFunction(), ['y','x','z']) + + def test_probe(self): + prop = CSProperties.CSPropProbeBox(self.pset, frequency=[1e9, 2.4e9]) + + self.assertEqual( prop.GetType(), CSProperties.PROBEBOX) + self.assertEqual( prop.GetTypeString(), 'ProbeBox') + + self.assertEqual(prop.GetFrequencyCount(), 2) + prop.AddFrequency(5e9) + self.assertEqual(prop.GetFrequencyCount(), 3) + self.assertTrue((prop.GetFrequency() == [1e9, 2.4e9, 5e9]).all()) + + prop.ClearFrequency() + self.assertEqual(prop.GetFrequencyCount(), 0) + + prop.SetFrequency(np.linspace(1e9,2e9,11)) + self.assertEqual(prop.GetFrequencyCount(), 11) + + def test_dump(self): + prop = CSProperties.CSPropDumpBox(self.pset) + + self.assertEqual( prop.GetType(), CSProperties.DUMPBOX) + self.assertEqual( prop.GetTypeString(), 'DumpBox') + +if __name__ == '__main__': + unittest.main()
\ No newline at end of file |