fibomat.mill.ionbeam module

Provide the abstract class IonBeam and a implementation GaussBeam.

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

Bases: abc.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: pint.quantity.Quantity

Standard deviation of ion beam distribution.

Access:

get

Returns:

QuantityType

abstract flux_at(position: Union[fibomat.linalg.vectors.vector.Vector, Iterable[float]], beam_maxima: Union[fibomat.linalg.vectors.vector.Vector, Iterable[float]], position_unit: pint.unit.Unit) pint.quantity.Quantity[source]
abstract flux_at(position: Union[fibomat.linalg.vectors.vector.Vector, Iterable[float]], beam_maxima: List[Union[fibomat.linalg.vectors.vector.Vector, Iterable[float]]], position_unit: pint.unit.Unit) Tuple[numpy.ndarray, pint.quantity.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() pint.quantity.Quantity[source]

Calculate the ion flux of a single, isolated spot.

Returns:

QuantityType

nominal_flux_per_spot_on_line(pitch: pint.quantity.Quantity) pint.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: pint.quantity.Quantity, pitch_y: pint.quantity.Quantity) pint.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: pint.quantity.Quantity, current: pint.quantity.Quantity, beam_cutoff: int = 10)[source]

Bases: fibomat.mill.ionbeam.IonBeam

Gauss function model of an ion beam.

__init__(fwhm: pint.quantity.Quantity, current: pint.quantity.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() pint.quantity.Quantity

Calculate the ion flux of a single, isolated spot.

Returns:

QuantityType

nominal_flux_per_spot_in_rect(pitch_x: pint.quantity.Quantity, pitch_y: pint.quantity.Quantity) pint.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: pint.quantity.Quantity) pint.quantity.Quantity

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

Args:

pitch (QuantityType): pitch on line

Returns:

QuantityType

property std: pint.quantity.Quantity

Standard deviation of ion beam distribution.

Access:

get

Returns:

QuantityType

flux_at(position: Union[fibomat.linalg.vectors.vector.Vector, Iterable[float]], beam_maxima: Union[List[Union[fibomat.linalg.vectors.vector.Vector, Iterable[float]]], fibomat.linalg.vectors.vector.Vector, Iterable[float]], position_unit: pint.unit.Unit) Union[Tuple[numpy.ndarray, pint.unit.Unit], pint.quantity.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.