Пример #1
0
 def testhorizontallayers5(self):
     sample = HorizontalLayerSample(Material.pure(39))
     sample.add_layer(Material.pure(40), 20e-9)
     sample.add_layer(Material.pure(41), 20e-9)
     sample.add_layer(Material.pure(42), 20e-9)
     sample.add_layer(Material.pure(44), 20e-9)
     self._run_and_test(sample)
Пример #2
0
    def test_convert_geometry(self):
        self.ops.geometry = [Substrate(Material.pure(29)),
                             Inclusion(Material.pure(29), Material.pure(30), 10e-6)]

        opss = self.converter.convert(self.ops)

        self.assertEqual(1, len(opss))
Пример #3
0
    def setUp(self):
        unittest.TestCase.setUp(self)

        self.h = SubstrateXMLHandler()

        self.obj = Substrate([Material.pure(29), Material.pure(30)], 1.1, 2.2)

        etree.register_namespace('mc', 'http://pymontecarlo.sf.net')
        source = BytesIO(b'<mc:substrate xmlns:mc="http://pymontecarlo.sf.net" rotation="2.2" tilt="1.1"><materials><mc:material _index="1" density="8960.0" name="Copper"><composition><element weightFraction="1.0" z="29" /></composition></mc:material><mc:material _index="2" density="7140.0" name="Zinc"><composition><element weightFraction="1.0" z="30" /></composition></mc:material></materials><body material="1,2" /></mc:substrate>')
        self.element = etree.parse(source).getroot()
Пример #4
0
    def testbuild(self):
        b = LayeredSampleBuilderMock()
        b.add_layer(Material.pure(29), 10)
        b.add_layer(Material.pure(30), 20)

        samples = b.build()
        self.assertEqual(1, len(samples))

        sample = samples[0]
        self.assertEqual(2, len(sample.layers))
Пример #5
0
    def testset_color_set(self):
        Material.set_color_set(['#00FF00', '#0000FF'])

        m = Material.pure(13)
        self.assertEqual('#00FF00', m.color)

        m = Material.pure(14)
        self.assertEqual('#0000FF', m.color)

        m = Material.pure(15)
        self.assertEqual('#00FF00', m.color)
Пример #6
0
def test_layeredsamplebuilderbase(layeredbuilder):
    layeredbuilder = LayeredSampleBuilderMock()
    layeredbuilder.add_layer(Material.pure(29), 10)
    layeredbuilder.add_layer(Material.pure(30), 20)

    samples = layeredbuilder.build()
    assert len(layeredbuilder) == 1
    assert len(samples) == 1

    sample = samples[0]
    assert len(sample.layers) == 2
Пример #7
0
    def testbuild2(self):
        b = LayeredSampleBuilderMock()
        bl = b.add_layer(Material.pure(29), 10)
        bl.add_material(Material.pure(30))

        samples = b.build()
        self.assertEqual(2, len(samples))

        sample = samples[0]
        self.assertEqual(1, len(sample.layers))
        self.assertAlmostEqual(10, sample.layers[0].thickness_m, 4)
Пример #8
0
 def testverticallayers10(self):
     sample = VerticalLayerSample(Material.pure(39), Material.pure(40))
     sample.add_layer(Material.pure(41), 20e-9)
     sample.add_layer(Material.pure(42), 20e-9)
     sample.add_layer(Material.pure(44), 20e-9)
     sample.add_layer(Material.pure(45), 20e-9)
     sample.add_layer(Material.pure(46), 20e-9)
     sample.add_layer(Material.pure(47), 20e-9)
     sample.add_layer(Material.pure(48), 20e-9)
     sample.add_layer(Material.pure(49), 20e-9)
     self._run_and_test(sample)
Пример #9
0
def test_layeredsamplebuilderbase_twomaterials(layeredbuilder):
    layerbuilder = layeredbuilder.add_layer(Material.pure(29), 10)
    layerbuilder.add_material(Material.pure(30))

    samples = layeredbuilder.build()
    assert len(layeredbuilder) == 2
    assert len(samples) == 2

    sample = samples[0]
    assert len(sample.layers) == 1
    assert sample.layers[0].thickness_m == pytest.approx(10.0, abs=1e-4)
Пример #10
0
def test_material_pure_widget(qtbot, material_pure_widget):
    button = material_pure_widget.wdg_periodic_table._group.button(13)
    qtbot.mouseClick(button, QtCore.Qt.LeftButton)

    button = material_pure_widget.wdg_periodic_table._group.button(29)
    qtbot.mouseClick(button, QtCore.Qt.LeftButton)

    materials = material_pure_widget.materials()

    assert len(materials) == 2
    assert Material.pure(13) in materials
    assert Material.pure(29) in materials
Пример #11
0
    def setUp(self):
        TestCase.setUp(self)

        self.g1 = VerticalLayers(Material.pure(29), Material.pure(30))
        self.g1.add_layer(Material.pure(31), 500.0)

        self.g2 = VerticalLayers(Material.pure(29), Material.pure(30))
        self.g2.add_layer(Material.pure(29), 100.0)
        self.g2.add_layer(Material.pure(32), 200.0)

        self.g3 = VerticalLayers(Material.pure(29), Material.pure(30))
        self.g3.add_layer(Material.pure(31), 500.0)
        self.g3.depth_m = 400.0
Пример #12
0
def test_lazylowestenergyxrayline(options, z, beam_energy_eV,
                                  minimum_energy_eV, expected):
    options.beam.energy_eV = beam_energy_eV
    options.sample.material = Material.pure(z)

    assert LazyLowestEnergyXrayLine(minimum_energy_eV).apply(
        None, options) == expected
Пример #13
0
 def pure(cls, z, absorption_energy_eV=None, elastic_scattering=(0.0, 0.0),
          cutoff_energy_inelastic_eV=50.0, cutoff_energy_bremsstrahlung_eV=50.0,
          interaction_forcings=None, maximum_step_length_m=1e20):
     mat = _Material.pure(z, absorption_energy_eV)
     return cls(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)
Пример #14
0
def estimated_builder(builder):
    program_mock_added = False
    if not builder.programs:
        builder.add_program(ProgramMock())
        program_mock_added = True

    beam_mock_added = False
    if not builder.beams:
        builder.add_beam(PencilBeam(10e3))
        beam_mock_added = True

    sample_mock_added = False
    if not builder.samples:
        builder.add_sample(SubstrateSample(Material.pure(26)))
        sample_mock_added = True

    try:
        yield builder

    finally:
        if program_mock_added:
            builder.programs.clear()
        if beam_mock_added:
            builder.beams.clear()
        if sample_mock_added:
            builder.samples.clear()
Пример #15
0
def simulation():
    program = ProgramMock()
    beam = GaussianBeam(15e3, 10e-9)
    sample = SubstrateSample(Material.pure(29))
    detector = PhotonDetector("xray", math.radians(40.0))
    analyses = [PhotonIntensityAnalysis(detector)]
    tags = ["basic", "test"]
    options = Options(program, beam, sample, analyses, tags)

    results = []

    analysis = PhotonIntensityAnalysis(detector)
    builder = EmittedPhotonIntensityResultBuilder(analysis)
    builder.add_intensity((29, "Ka1"), 1.0, 0.1)
    builder.add_intensity((29, "Ka2"), 2.0, 0.2)
    builder.add_intensity((29, "Kb1"), 4.0, 0.5)
    builder.add_intensity((29, "Kb3"), 5.0, 0.7)
    builder.add_intensity((29, "Kb5I"), 1.0, 0.1)
    builder.add_intensity((29, "Kb5II"), 0.5, 0.1)
    builder.add_intensity((29, "Ll"), 3.0, 0.1)
    results.append(builder.build())

    analysis = KRatioAnalysis(detector)
    builder = KRatioResultBuilder(analysis)
    builder.add_kratio((29, "Ka1"), 1.0, 1.0)
    builder.add_kratio((29, "Ka2"), 2.0, 1.0)
    builder.add_kratio((29, "Kb1"), 0.5, 1.0)
    builder.add_kratio((29, "Kb3"), 1.5, 1.0)
    builder.add_kratio((29, "Kb5I"), 1.0, 1.0)
    builder.add_kratio((29, "Kb5II"), 0.5, 1.0)
    builder.add_kratio((29, "Ll"), 2.0, 1.0)
    results.append(builder.build())

    return Simulation(options, results)
Пример #16
0
 def testvalidate_analysis_kratio(self):
     detector = PhotonDetector('det', 1.1, 2.2)
     analysis = KRatioAnalysis(detector)
     analysis.add_standard_material(13, Material.pure(13))
     analysis2 = self.v.validate_analysis(analysis, self.options)
     self.assertEqual(analysis2, analysis)
     self.assertIsNot(analysis2, analysis)
Пример #17
0
    def __init__(self, tilt, rotation):
        _Geometry.__init__(self, tilt, rotation)

        mat = Material.pure(29)
        self.bodies = [_Body(self, mat),
                       _Body(self, VACUUM),
                       _Body(self, mat)]
Пример #18
0
def options():
    program = Casino2Program(number_trajectories=50)
    beam = GaussianBeam(15e3, 10e-9)
    sample = SubstrateSample(Material.pure(29))
    detector = PhotonDetector("xray", math.radians(40.0))
    analyses = [PhotonIntensityAnalysis(detector)]
    tags = ["basic", "test"]
    return Options(program, beam, sample, analyses, tags)
Пример #19
0
    def get_standard_material(self, z):
        if z in self.standard_materials:
            return self.standard_materials[z]

        if z in self.DEFAULT_NONPURE_STANDARD_MATERIALS:
            return self.DEFAULT_NONPURE_STANDARD_MATERIALS[z]

        return Material.pure(z)
Пример #20
0
def options():
    program = PenepmaProgram(number_trajectories=100)
    program.exporter.dump_interval_s = 2
    beam = CylindricalBeam(15e3, 10e-9)
    sample = SubstrateSample(Material.pure(29))
    detector = PhotonDetector("xray", math.radians(40.0))
    analyses = [PhotonIntensityAnalysis(detector)]
    tags = ["basic", "test"]
    return Options(program, beam, sample, analyses, tags)
Пример #21
0
    def testphoton_range(self):
        material = Material.pure(29)
        xrayline = XrayLine(29, 'Ka1')

        actual = photon_range(20e3,
                              material,
                              xrayline,
                              reference='perkins1991')
        self.assertAlmostEqual(8.42816e-7, actual, 10)
Пример #22
0
    def testvalidate_analysis_kratio_exception(self):
        detector = PhotonDetector('', 2.0, -1.0)
        analysis = KRatioAnalysis(detector)
        analysis.add_standard_material(14, Material.pure(13))
        self.assertRaises(ValidationError, self.v.validate_analysis, analysis,
                          self.options)

        errors = set()
        self.v._validate_analysis(analysis, self.options, errors)
        self.assertEqual(4, len(errors))
Пример #23
0
    def testpure(self):
        m = Material.pure(29)

        self.assertEqual('Copper', str(m))

        self.assertIn(29, m.composition)
        self.assertAlmostEqual(1.0, m.composition[29], 4)

        self.assertAlmostEqual(8.96, m.density_kg_per_m3 / 1000.0, 4)
        self.assertAlmostEqual(8.96, m.density_g_per_cm3, 4)
Пример #24
0
def test_material_formula_widget_auto_density(qtbot, material_formula_widget):
    widget = material_formula_widget.field_formula.widget()
    qtbot.keyClicks(widget, "Al")

    materials = material_formula_widget.materials()

    assert len(materials) == 1
    assert materials[0].density_kg_per_m3 == pytest.approx(
        Material.pure(13).density_kg_per_m3, abs=1e-4
    )
Пример #25
0
    def setUp(self):
        unittest.TestCase.setUp(self)

        self.h = SphereXMLHandler()

        self.obj = Sphere(Material.pure(29), 123.456, 1.1, 2.2)

        etree.register_namespace('mc', 'http://pymontecarlo.sf.net')
        source = BytesIO(b'<mc:sphere xmlns:mc="http://pymontecarlo.sf.net" rotation="2.2" tilt="1.1"><materials><mc:material _index="1" density="8960.0" name="Copper"><composition><element weightFraction="1.0" z="29" /></composition></mc:material></materials><body diameter="123.456" material="1" /></mc:sphere>')
        self.element = etree.parse(source).getroot()
Пример #26
0
def _create_samples(number_layers=2):
    yield SubstrateSample(Material.pure(39))

    yield InclusionSample(Material.pure(39), Material.pure(40), 20e-9)

    sample = HorizontalLayerSample(Material.pure(39))
    for i in range(number_layers):
        sample.add_layer(Material.pure(50 + i), 20e-9)
    yield sample

    sample = VerticalLayerSample(Material.pure(39), Material.pure(40))
    for i in range(number_layers):
        sample.add_layer(Material.pure(40 + i), 20e-9)
    yield sample

    yield SphereSample(Material.pure(39), 20e-9)
Пример #27
0
def run3():  # pragma: no cover
    import sys

    app = QtWidgets.QApplication(sys.argv)

    material = Material.pure(14)

    widget = MaterialListWidget()
    widget.addMaterial(material)
    widget.addMaterial(Material.pure(14))
    widget.addMaterial(Material.pure(13))
    widget.addMaterial(Material.pure(10))
    widget.setAllowVacuum(True)
    widget.setSelectedMaterials([material])

    mainwindow = QtWidgets.QMainWindow()
    mainwindow.setCentralWidget(widget)
    mainwindow.show()

    app.exec_()
Пример #28
0
def options():
    """
    Creates basic options using the mock program.
    """
    program = ProgramMock()
    beam = GaussianBeam(15e3, 10e-9)
    sample = SubstrateSample(Material.pure(29))
    detector = PhotonDetector("xray", math.radians(40.0))
    analyses = [PhotonIntensityAnalysis(detector)]
    tags = ["basic", "test"]
    return Options(program, beam, sample, analyses, tags)
Пример #29
0
def test_material_pure():
    material = Material.pure(29)

    assert str(material) == "Copper"
    assert material.name == "Copper"

    assert 29 in material.composition
    assert material.composition[29] == pytest.approx(1.0, abs=1e-9)

    assert material.density_kg_per_m3 == pytest.approx(8960.0, abs=1e-4)
    assert material.density_g_per_cm3 == pytest.approx(8.960, abs=1e-4)
Пример #30
0
def test_material_list_widget_selectedMaterials_add(qtbot, material_list_widget):
    material = material_list_widget.material(0)
    material_list_widget.setSelectedMaterials([material])

    newmaterial = Material.pure(28)
    material_list_widget.addMaterial(newmaterial)
    assert newmaterial in material_list_widget.materials()

    selected_materials = material_list_widget.selectedMaterials()
    assert len(selected_materials) == 1
    assert material in selected_materials
Пример #31
0
def run2():  # pragma: no cover
    import sys

    app = QtWidgets.QApplication(sys.argv)

    material = Material.pure(14)

    widget = MaterialComboBox()
    widget.addMaterial(material)
    widget.addMaterial(Material.pure(14))
    widget.addMaterial(Material.pure(13))
    widget.addMaterial(Material.pure(10))
    widget.setAllowVacuum(False)
    widget.setCurrentMaterial(material)

    mainwindow = QtWidgets.QMainWindow()
    mainwindow.setCentralWidget(widget)
    mainwindow.show()

    app.exec_()
Пример #32
0
    def setUp(self):
        unittest.TestCase.setUp(self)

        self.h = HorizontalLayersXMLHandler()

        self.obj1 = HorizontalLayers(Material.pure(29), None, 1.1, 2.2)
        self.obj1.add_layer(Material.pure(30), 123.456)
        self.obj1.add_layer(Material.pure(31), 456.789)

        self.obj2 = HorizontalLayers()
        self.obj2.add_layer(Material.pure(30), 123.456)
        self.obj2.add_layer(VACUUM, 50.0)
        self.obj2.add_layer(Material.pure(31), 456.789)

        etree.register_namespace('mc', 'http://pymontecarlo.sf.net')
        source = BytesIO(b'<mc:horizontalLayers xmlns:mc="http://pymontecarlo.sf.net" rotation="2.2" tilt="1.1"><materials><mc:material _index="1" density="7140.0" name="Zinc"><composition><element weightFraction="1.0" z="30" /></composition></mc:material><mc:material _index="2" density="5910.0" name="Gallium"><composition><element weightFraction="1.0" z="31" /></composition></mc:material><mc:material _index="3" density="8960.0" name="Copper"><composition><element weightFraction="1.0" z="29" /></composition></mc:material></materials><substrate material="3" /><layers><layer material="1" thickness="123.456" /><layer material="2" thickness="456.789" /></layers></mc:horizontalLayers>')
        self.element1 = etree.parse(source).getroot()

        etree.register_namespace('mc', 'http://pymontecarlo.sf.net')
        source = BytesIO(b'<mc:horizontalLayers xmlns:mc="http://pymontecarlo.sf.net" rotation="0.0" tilt="0.0"><materials><mc:material _index="1" density="7140.0" name="Zinc"><composition><element weightFraction="1.0" z="30" /></composition></mc:material><mc:material _index="2" density="5910.0" name="Gallium"><composition><element weightFraction="1.0" z="31" /></composition></mc:material></materials><layers><layer material="1" thickness="123.456" /><layer material="0" thickness="50.0" /><layer material="2" thickness="456.789" /></layers></mc:horizontalLayers>')
        self.element2 = etree.parse(source).getroot()
Пример #33
0
    def setUp(self):
        unittest.TestCase.setUp(self)

        self.ops = Options()
        self.ops.beam = PencilBeam(15e3)
        self.ops.geometry = Substrate(Material.pure(29))
        self.ops.detectors['det1'] = TimeDetector()
        self.ops.limits.add(ShowersLimit(5678))
        self.ops.models.add(ELASTIC_CROSS_SECTION.rutherford)
        self.ops.models.add(MASS_ABSORPTION_COEFFICIENT.henke1993)

        self.converter = MockConverter()
Пример #34
0
 def pure(cls,
          z,
          absorption_energy_eV=None,
          elastic_scattering=(0.0, 0.0),
          cutoff_energy_inelastic_eV=50.0,
          cutoff_energy_bremsstrahlung_eV=50.0,
          interaction_forcings=None,
          maximum_step_length_m=1e20):
     mat = _Material.pure(z, absorption_energy_eV)
     return cls(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)
Пример #35
0
    def setUp(self):
        TestCase.setUp(self)

        self.outputdir = tempfile.mkdtemp()
        self.workdir = tempfile.mkdtemp()

        ops = Options('test')
        ops.geometry.body.material = Material.pure(79)
        ops.detectors['time'] = TimeDetector()
        ops.limits.add(ShowersLimit(1))
        self.ops = Converter().convert(ops)[0]

        self.worker = Worker(program)
Пример #36
0
def run():  # pragma: no cover
    import sys
    from pymontecarlo.options.beam import GaussianBeam
    from pymontecarlo.options.sample import HorizontalLayerSample
    from pymontecarlo.options.material import Material

    app = QtWidgets.QApplication(sys.argv)

    widget = SampleFigureWidget()

    sample = HorizontalLayerSample(Material.pure(29))
    sample.add_layer(Material.pure(30), 10e-9)
    widget.setSample(sample)

    beam = GaussianBeam(15e3, 5e-9)
    widget.addBeam(beam)

    mainwindow = QtWidgets.QMainWindow()
    mainwindow.setCentralWidget(widget)
    mainwindow.show()

    app.exec_()
Пример #37
0
    def setUp(self):
        TestCase.setUp(self)

        self.g1 = HorizontalLayers(Material.pure(29))
        self.g2 = HorizontalLayers(None) # No substrate
        self.g3 = HorizontalLayers(Material.pure(29)) # Empty layer

        self.g1.add_layer(Material.pure(30), 123.456)
        self.g1.add_layer(Material.pure(31), 456.789)

        self.g2.add_layer(Material.pure(30), 123.456)
        self.g2.add_layer(Material.pure(31), 456.789)

        self.g3.add_layer(Material.pure(30), 123.456)
        self.g3.add_layer(Material.pure(31), 456.789)
        self.g3.add_layer(VACUUM, 456.123)
    def setUp(self):
        TestCase.setUp(self)

        self.outputdir = tempfile.mkdtemp()
        self.workdir = tempfile.mkdtemp()

        ops = Options('test')
        ops.beam.energy_keV = 10
        ops.geometry.body.material = Material.pure(29)
        ops.detectors['fraction'] = ElectronFractionDetector()
        ops.limits.add(ShowersLimit(1))
        self.ops = Converter().convert(ops)[0]

        self.worker = Worker(program)
Пример #39
0
    def testapply(self):
        list_options = self.a.apply(self.options)
        self.assertEqual(1, len(list_options))

        options = list_options[0]
        self.assertAlmostEqual(self.options.beam.energy_eV,
                               options.beam.energy_eV, 4)
        self.assertAlmostEqual(self.options.beam.particle,
                               options.beam.particle, 4)
        self.assertIsInstance(options.sample, SubstrateSample)
        self.assertEqual(Material.pure(29), options.sample.material)
        self.assertSequenceEqual(self.options.detectors, options.detectors)
        self.assertSequenceEqual(self.options.limits, options.limits)
        self.assertSequenceEqual(self.options.models, options.models)
        self.assertEqual(1, len(options.analyses))
        self.assertIsInstance(options.analyses[0], PhotonIntensityAnalysis)
Пример #40
0
    def testpure(self):
        m = Material.pure(29)

        self.assertEqual('Copper', str(m))

        self.assertIn(29, m.composition)
        self.assertAlmostEqual(1.0, m.composition[29], 4)

        self.assertIn(29, self.m.composition_atomic)
        self.assertAlmostEqual(1.0, self.m.composition_atomic[29], 4)

        self.assertAlmostEqual(8.96, m.density_kg_m3 / 1000.0, 4)
        self.assertAlmostEqual(8.96, m.density_g_cm3, 4)

        self.assertAlmostEqual(50, m.absorption_energy_eV[ELECTRON], 4)
        self.assertAlmostEqual(50, m.absorption_energy_eV[PHOTON], 4)
Пример #41
0
def run_layerswidget():  # pragma: no cover
    import sys

    app = QtWidgets.QApplication(sys.argv)

    from pymontecarlo.options.material import Material

    materials = []
    for z in range(14, 79, 5):
        materials.append(Material.pure(z))

    widget = LayerBuilderWidget()
    widget.setAvailableMaterials(materials)

    mainwindow = QtWidgets.QMainWindow()
    mainwindow.setCentralWidget(widget)
    mainwindow.show()

    app.exec_()
    def test_convert_geometry_substrate(self):
        # Base options
        ops = Options(name="Test")
        mat = Material.pure(29, absorption_energy_eV={POSITRON: 63.4})
        ops.geometry = Substrate(mat)
        ops.limits.add(TimeLimit(100))

        # Convert
        self.converter._convert_geometry(ops)

        # Test
        self.assertEqual('Copper', str(ops.geometry.body.material))

        for material in ops.geometry.get_materials():
            self.assertAlmostEqual(0.1, material.elastic_scattering[0], 4)
            self.assertAlmostEqual(0.2, material.elastic_scattering[1], 4)
            self.assertAlmostEqual(51.2, material.cutoff_energy_inelastic_eV, 4)
            self.assertAlmostEqual(53.4, material.cutoff_energy_bremsstrahlung_eV, 4)
            self.assertAlmostEqual(63.4, material.absorption_energy_eV[POSITRON], 4)
            self.assertAlmostEqual(1e20, material.maximum_step_length_m, 4)
Пример #43
0
    def setUp(self):
        unittest.TestCase.setUp(self)

        self.h = VerticalLayersXMLHandler()

        self.obj1 = VerticalLayers(Material.pure(29), Material.pure(30), None,
                                   tilt_rad=1.1, rotation_rad=2.2)
        self.obj1.add_layer(Material.pure(31), 500.0)

        self.obj2 = VerticalLayers(Material.pure(29), Material.pure(30))
        self.obj2.add_layer(Material.pure(31), 500.0)
        self.obj2.depth_m = 400.0

        etree.register_namespace('mc', 'http://pymontecarlo.sf.net')
        source = BytesIO(b'<mc:verticalLayers xmlns:mc="http://pymontecarlo.sf.net" depth="inf" rotation="2.2" tilt="1.1"><materials><mc:material _index="1" density="5910.0" name="Gallium"><composition><element weightFraction="1.0" z="31" /></composition></mc:material><mc:material _index="2" density="8960.0" name="Copper"><composition><element weightFraction="1.0" z="29" /></composition></mc:material><mc:material _index="3" density="7140.0" name="Zinc"><composition><element weightFraction="1.0" z="30" /></composition></mc:material></materials><leftSubstrate material="2" /><rightSubstrate material="3" /><layers><layer material="1" thickness="500.0" /></layers></mc:verticalLayers>')
        self.element1 = etree.parse(source).getroot()

        etree.register_namespace('mc', 'http://pymontecarlo.sf.net')
        source = BytesIO(b'<mc:verticalLayers xmlns:mc="http://pymontecarlo.sf.net" depth="400.0" rotation="0.0" tilt="0.0"><materials><mc:material _index="1" density="8960.0" name="Copper"><composition><element weightFraction="1.0" z="29" /></composition></mc:material><mc:material _index="2" density="5910.0" name="Gallium"><composition><element weightFraction="1.0" z="31" /></composition></mc:material><mc:material _index="3" density="7140.0" name="Zinc"><composition><element weightFraction="1.0" z="30" /></composition></mc:material></materials><leftSubstrate material="1" /><rightSubstrate material="3" /><layers><layer material="2" thickness="500.0" /></layers></mc:verticalLayers>')
        self.element2 = etree.parse(source).getroot()
Пример #44
0
    def setUp(self):
        TestCase.setUp(self)

        self.g = Inclusion(Material.pure(29), Material.pure(30), 123.456)
Пример #45
0
 def testmaterial(self):
     self.g.body.material = [Material.pure(14), Material.pure(15)]
     self.assertEqual(2, len(self.g.body.material))
Пример #46
0
    def setUp(self):
        TestCase.setUp(self)

        self.g = Substrate(Material.pure(29))
Пример #47
0
    def setUp(self):
        TestCase.setUp(self)

        self.g = Sphere(Material.pure(29), 123.456)
Пример #48
0
    def testexpand(self):
        self.assertEqual(1, len(expand(self.g1)))

        self.g1.add_layer(Material.pure(79), [1.0, 2.0])
        self.assertEqual(2, len(expand(self.g1)))
Пример #49
0
 def testphoton_range(self):
     material = Material.pure(29)
     transition = Transition(29, siegbahn='Ka1')
     self.assertAlmostEqual(8.4064e-7, photon_range(20e3, material, transition), 10)