def testexport_inclusion(self): # Create mat1 = PenelopeMaterial({79: 0.5, 47: 0.5}, 'mat') mat2 = PenelopeMaterial({29: 0.5, 30: 0.5}, 'mat') ops = Options() ops.geometry = Inclusion(mat1, mat2, 0.01) ops.limits.add(TimeLimit(100)) self.c._convert_geometry(ops) self.e.export_geometry(ops.geometry, self.tmpdir) # Test geofilepath = os.path.join(self.tmpdir, 'inclusion.geo') repfilepath = os.path.join(self.tmpdir, 'geometry.rep') nmat, nbody = pengeom.init(geofilepath, repfilepath) self.assertEqual(2, nmat) self.assertEqual(3, nbody) matfilepath = os.path.join(self.tmpdir, 'mat1.mat') self.assertTrue(os.path.exists(matfilepath)) matfilepath = os.path.join(self.tmpdir, 'mat2.mat') self.assertTrue(os.path.exists(matfilepath))
def testexport_vertical_layers(self): # Create mat1 = PenelopeMaterial({79: 0.5, 47: 0.5}, 'mat1') mat2 = PenelopeMaterial({29: 0.5, 30: 0.5}, 'mat2') mat3 = PenelopeMaterial({13: 0.5, 14: 0.5}, 'mat3') ops = Options() ops.beam.energy_eV = 1234 ops.beam.diameter_m = 25e-9 ops.beam.origin_m = (100e-9, 0, 1) ops.geometry = VerticalLayers(mat1, mat2) ops.geometry.add_layer(mat3, 5e-3) ops.limits.add(TimeLimit(100)) self.c._convert_geometry(ops) self.e.export_geometry(ops.geometry, self.tmpdir) # Test geofilepath = os.path.join(self.tmpdir, 'verticallayers.geo') repfilepath = os.path.join(self.tmpdir, 'geometry.rep') nmat, nbody = pengeom.init(geofilepath, repfilepath) self.assertEqual(3, nmat) self.assertEqual(4, nbody) matfilepath = os.path.join(self.tmpdir, 'mat1.mat') self.assertTrue(os.path.exists(matfilepath)) matfilepath = os.path.join(self.tmpdir, 'mat2.mat') self.assertTrue(os.path.exists(matfilepath)) matfilepath = os.path.join(self.tmpdir, 'mat3.mat') self.assertTrue(os.path.exists(matfilepath))
def parse(self, element): mat = _MaterialXMLHandler.parse(self, element) elastic_scattering = (float(element.get('c1')), float(element.get('c2'))) cutoff_energy_inelastic_eV = float(element.get('wcc')) cutoff_energy_bremsstrahlung_eV = float(element.get('wcr')) interaction_forcings = [] for subelement in element.findall('interactionForcing'): particle = _PARTICLES_LOOKUP[subelement.get('particle')] collision = _COLLISIONS_LOOKUP[subelement.get('collision')] forcer = float(subelement.get('forcer')) weight = (float(subelement.get('wlow')), float(subelement.get('whigh'))) interaction_forcings.append( InteractionForcing(particle, collision, forcer, weight)) maximum_step_length_m = float(element.get('dsmax')) return PenelopeMaterial(mat.composition, mat.name, mat.density_kg_m3, mat.absorption_energy_eV, elastic_scattering, cutoff_energy_inelastic_eV, cutoff_energy_bremsstrahlung_eV, interaction_forcings, maximum_step_length_m)
def setUp(self): TestCase.setUp(self) if1 = InteractionForcing(ELECTRON, HARD_BREMSSTRAHLUNG_EMISSION, - 4, (0.1, 1.0)) self.m = PenelopeMaterial({'Cu': 1.0}, 'Pure Cu', density_kg_m3=8960.0, elastic_scattering=(0.1, 0.2), cutoff_energy_inelastic_eV=51.2, cutoff_energy_bremsstrahlung_eV=53.4, interaction_forcings=[if1], maximum_step_length_m=123.456)
def _createMaterial(self, parameters, varied): mat = _MaterialDialog._createMaterial(self, parameters, varied) c1 = parameters['c1'] c2 = parameters['c2'] wcc = parameters['wcc'] wcr = parameters['wcr'] dsmax = parameters['dsmax'] forcings = parameters['forcings'] return PenelopeMaterial(mat.composition, mat.name, mat.density_kg_m3, mat.absorption_energy_eV, elastic_scattering=(c1, c2), cutoff_energy_inelastic_eV=wcc, cutoff_energy_bremsstrahlung_eV=wcr, interaction_forcings=forcings, maximum_step_length_m=dsmax)
def testexport_substrate(self): # Create mat1 = PenelopeMaterial({79: 0.5, 47: 0.5}, 'mat') ops = Options() ops.geometry = Substrate(mat1) ops.limits.add(TimeLimit(100)) self.c._convert_geometry(ops) self.e.export_geometry(ops.geometry, self.tmpdir) # Test geofilepath = os.path.join(self.tmpdir, 'substrate.geo') repfilepath = os.path.join(self.tmpdir, 'geometry.rep') nmat, nbody = pengeom.init(geofilepath, repfilepath) self.assertEqual(1, nmat) self.assertEqual(2, nbody) matfilepath = os.path.join(self.tmpdir, 'mat1.mat') self.assertTrue(os.path.exists(matfilepath))
def setUp(self): unittest.TestCase.setUp(self) self.h = PenelopeMaterialXMLHandler() if1 = InteractionForcing(ELECTRON, HARD_BREMSSTRAHLUNG_EMISSION, -4, (0.1, 1.0)) self.obj = PenelopeMaterial({'Cu': 1.0}, 'Pure Cu', density_kg_m3=8960.0, elastic_scattering=(0.1, 0.2), cutoff_energy_inelastic_eV=51.2, cutoff_energy_bremsstrahlung_eV=53.4, interaction_forcings=[if1], maximum_step_length_m=123.456) etree.register_namespace('mc', 'http://pymontecarlo.sf.net') etree.register_namespace('mc-pen', 'http://pymontecarlo.sf.net/penelope') source = BytesIO( b'<mc-pen:material xmlns:mc-pen="http://pymontecarlo.sf.net/penelope" c1="0.1" c2="0.2" density="8960.0" dsmax="123.456" name="Pure Cu" wcc="51.2" wcr="53.4"><composition><element weightFraction="1.0" z="29" /></composition><interactionForcing collision="hard bremsstrahlung emission" forcer="-4" particle="electron" whigh="1.0" wlow="0.1" /></mc-pen:material>' ) self.element = etree.parse(source).getroot()
def __run(): import sys from PySide.QtGui import QApplication material = \ PenelopeMaterial({5: 0.5, 6: 0.5}, absorption_energy_eV={ELECTRON: 60.0}, elastic_scattering=(0.05, 0.1), cutoff_energy_inelastic_eV=60.0, cutoff_energy_bremsstrahlung_eV=70.0, maximum_step_length_m=0.4, interaction_forcings=[InteractionForcing(ELECTRON, DELTA, -2.0, (0.05, 0.6))]) app = QApplication(sys.argv) dialog = PenelopeMaterialDialog(None) dialog.setValue(material) if dialog.exec_(): values = dialog.values() print(len(values)) for value in values: print(repr(value)) app.exec_()