fibomat.mill.ionbeam module¶
Provide the abstract class IonBeam and a implementation GaussBeam.
- class fibomat.mill.ionbeam.IonBeam(beam_cutoff: int)[source]¶
Bases:
abc.ABCBase 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.IonBeamGauss 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.