Ejemplo n.º 1
0
def test_outer_shell_energies():
    """Tests that the outer shell energies have the correct units."""
    settings = read_input('data/materials/pmma.yaml')
    if not check_settings(settings, cstool_model):
        raise ValueError("Parsed settings do not conform the model.")

    fn = outer_shell_energies(settings)
    K = np.logspace(1, 4, 100) * units.eV
    osi = fn(K)

    assert osi.shape == (100, )
    assert osi.dimensionality == units('eV').dimensionality
Ejemplo n.º 2
0
def test_ionization_shells():
    """Tests that the ionization shells have the correct shape and units."""
    settings = read_input('data/materials/pmma.yaml')
    if not check_settings(settings, cstool_model):
        raise ValueError("Parsed settings do not conform the model.")

    shells = ionization_shells(settings)

    assert len(shells) > 0
    for shell in shells:
        assert shell['B'].dimensionality == units('eV').dimensionality
        assert shell['K'].dimensionality == units('eV').dimensionality
        assert shell['cs'].dimensionality == units('m^2').dimensionality
Ejemplo n.º 3
0
def test_phonon_cs_fn_dual():
    """Tests that the phonon subroutine returns a function that
    can handle arrays and returns correct units."""
    settings = read_input('data/materials/pmma.yaml')
    if not check_settings(settings, cstool_model):
        raise ValueError("Parsed settings do not conform the model.")

    fn = phonon_cs_fn(settings)
    W = np.logspace(-2, 3, 100) * units.eV
    theta = np.linspace(0, np.pi, 100) * units.rad
    cs = fn(theta, W[:, None])

    assert cs.shape == (100, 100)
    assert cs.dimensionality == units('m²/sr').dimensionality
Ejemplo n.º 4
0
def test_inelastic_cs_fn():
    """Tests that the inelastic subroutine returns a function that
    can handle arrays and returns correct units."""
    settings = read_input('data/materials/pmma.yaml')
    if not check_settings(settings, cstool_model):
        raise ValueError("Parsed settings do not conform the model.")

    fn = inelastic_cs_fn(settings)
    K = np.logspace(1, 4, 100) * units.eV
    W = np.logspace(-4, 4, 100) * units.eV
    cs = fn(K, W[:, None])
    print(cs)

    assert cs.shape == (100, 100)
    assert cs.dimensionality == units('m²/eV').dimensionality
Ejemplo n.º 5
0
        K,
        P,
        sampling=np.max([100000, int(np.ceil((K - K0) / max_interval))]))


if __name__ == "__main__":
    import argparse

    parser = argparse.ArgumentParser(
        description='Create HDF5 file from material definition.')
    parser.add_argument('material_file',
                        type=str,
                        help="Filename of material in YAML format.")
    args = parser.parse_args()

    s = read_input(args.material_file)

    print(pprint_settings(cstool_model, s))
    print()
    print("Phonon loss: {:~P}".format(s.phonon.energy_loss))
    print("Total molar weight: {:~P}".format(s.M_tot))
    print("Number density: {:~P}".format(s.rho_n))
    print("Brillouin zone energy: {:~P}".format(s.phonon.E_BZ))
    print("Barrier energy: {:~P}".format(s.band_structure.barrier))
    print()
    print("# Computing Mott cross-sections using ELSEPA.")

    e_mcs = np.logspace(1, 5, 145) * units.eV
    f_mcs = s_mott_cs(s, e_mcs, split=12, mabs=False)

    with NCDisplay() as display: