fibomat.mill.ionbeam module#

Provide the abstract class IonBeam and a implementation GaussBeam.

class fibomat.mill.ionbeam.IonBeam(beam_cutoff: int)[source]#

Bases: ABC

Base class to model an ion beam.

__init__(beam_cutoff: int)[source]#
Args:

beam_cutoff (int): beam_cutoff * std is used as cut-off length for flux calculations.

Raises:

ValueError: Raised if beam_cutoff < 1.

abstract property std: Quantity#

Standard deviation of ion beam distribution.

Access:

get

Returns:

QuantityType

abstract flux_at(position: Vector | Iterable[float], beam_maxima: Vector | Iterable[float], position_unit: Unit) Quantity[source]#
abstract flux_at(position: Vector | Iterable[float], beam_maxima: List[Vector | Iterable[float]], position_unit: Unit) Tuple[ndarray, Quantity]

Calculate the ion flux at position if the ion beam maximus is at beam_maximum.

Args:

position (VectorLike): position at which the flux is calculated. beam_maxima (VectorArrayLike, VectorLike): position of beam maximum/maxima position_unit (UnitType): length unit of positions and beam_maximum

Returns:
Union[QuantityType, Tuple[np.ndarray, QuantityType]]:

QuantityType is returned if position is VectorLike and Tuple[np.ndarray, QuantityType] if positions is VectorArrayLike.

nominal_flux_per_spot() Quantity[source]#

Calculate the ion flux of a single, isolated spot.

Returns:

QuantityType

nominal_flux_per_spot_on_line(pitch: Quantity) Quantity[source]#

Calculate the ion flux of a spot on line with pitch pitch.

Args:

pitch (QuantityType): pitch on line

Returns:

QuantityType

nominal_flux_per_spot_in_rect(pitch_x: Quantity, pitch_y: Quantity) Quantity[source]#

Calculate the ion flux of a spot on rectangular grid with pitches pitch_x and pitch_y.

Args:

pitch_x (QuantityType): pitch in x direction pitch_y (QuantityType): pitch in y direction

Returns:

QuantityType

class fibomat.mill.ionbeam.GaussBeam(fwhm: Quantity, current: Quantity, beam_cutoff: int = 10)[source]#

Bases: IonBeam

Gauss function model of an ion beam.

__init__(fwhm: Quantity, current: Quantity, beam_cutoff: int = 10)[source]#
Args:

fwhm (QuantityType): full width half maximum of the beam profile. current (QuantityType): total beam current beam_cutoff (int, optional): beam cut-off, default to 10.

nominal_flux_per_spot() Quantity#

Calculate the ion flux of a single, isolated spot.

Returns:

QuantityType

nominal_flux_per_spot_in_rect(pitch_x: Quantity, pitch_y: Quantity) Quantity#

Calculate the ion flux of a spot on rectangular grid with pitches pitch_x and pitch_y.

Args:

pitch_x (QuantityType): pitch in x direction pitch_y (QuantityType): pitch in y direction

Returns:

QuantityType

nominal_flux_per_spot_on_line(pitch: Quantity) Quantity#

Calculate the ion flux of a spot on line with pitch pitch.

Args:

pitch (QuantityType): pitch on line

Returns:

QuantityType

property std: Quantity#

Standard deviation of ion beam distribution.

Access:

get

Returns:

QuantityType

flux_at(position: Vector | Iterable[float], beam_maxima: List[Vector | Iterable[float]] | Vector | Iterable[float], position_unit: Unit) Tuple[ndarray, Unit] | Quantity[source]#

Calculate the ion flux at position if the ion beam maximus is at beam_maximum.

Args:

position (VectorLike): position at which the flux is calculated. beam_maxima (VectorArrayLike, VectorLike): position of beam maximum/maxima position_unit (UnitType): length unit of positions and beam_maximum

Returns:
Union[QuantityType, Tuple[np.ndarray, QuantityType]]:

QuantityType is returned if position is VectorLike and Tuple[np.ndarray, QuantityType] if positions is VectorArrayLike.