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
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
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
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
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: