def as_transmission_functions(self, energy): xp = get_array_module(self.array) complex_exponential = get_device_function(xp, 'complex_exponential') array = complex_exponential(energy2sigma(energy) * self._array) return TransmissionFunctions(array, slice_thicknesses=self._slice_thicknesses, extent=self.extent, energy=energy)
def as_transmission_function(self, energy: float, in_place: bool = True, max_batch: int = 1, antialias_filter: AntialiasFilter = None): """ Calculate the transmission functions for a specific energy. Parameters ---------- energy: float Electron energy [eV]. Returns ------- TransmissionFunction object """ xp = get_array_module(self.array) complex_exponential = get_device_function(xp, 'complex_exponential') array = self._array if not in_place: array = array.copy() array = complex_exponential(energy2sigma(energy) * array) t = TransmissionFunction( array, slice_thicknesses=self._slice_thicknesses.copy(), extent=self.extent, energy=energy) if antialias_filter is None: antialias_filter = AntialiasFilter() for start, end, potential_slices in t.generate_slices( max_batch=max_batch): antialias_filter.bandlimit(potential_slices) return t
def sigma(self) -> float: """ Interaction parameter. """ self.check_is_defined() return energy2sigma(self.energy)
def test_energy2sigma(): assert np.isclose(energy2sigma(300e3), 0.0006526161464700888)