PumpProperties and Pumping
Pumping raises the excited-state fraction betaCells during a time-dependent
simulation. The Python interface separates the pump description from the ASE
backend:
PumpRadiationProfiledescribes the incoming beam.PumpPropertiesstores spectra, profile, solver, and custom solver values.A solver updates beta or provides a pump rate for
Simulation.
Typical Setup
from HASEonGPU import OneDimensionalZTraversal, PumpProperties, PumpRadiationProfile
profile = PumpRadiationProfile(
intensity=16e3, # W / cm^2
wavelengths=[940e-9],
waist=(1.5, 1.5),
propagationDirection=(0.0, 0.0, 1.0),
superGaussianOrder=40,
backReflection=True,
reflectivity=1.0,
)
pump = PumpProperties(
crossSections=spectra,
profile=profile,
solver=OneDimensionalZTraversal(),
pumpSteps=50,
)
spectra is the same CrossSectionData or SpectralDecomposition object
used by PhiASE. The profile supplies pump wavelengths; the spectra supply
sigma_a and sigma_e at those wavelengths.
Important Inputs
intensityPump intensity in
W / cm^2. It can be passed directly or through aPumpRadiationProfile.profileOptional radiation-profile object. Dictionaries, dataclasses, and objects with public attributes are accepted.
spectralProperties/crossSectionsMaterial spectra. Required for physical pump solvers.
wavelength/wavelengthsOne wavelength or multiple pump wavelengths. If omitted, the first absorption wavelength from the spectra is used.
radiusX/radiusY/waistBeam radii for the super-Gaussian transverse profile.
superGaussianOrderBeam order. Larger values approach a top-hat profile;
2is Gaussian-like.propagationDirectionDirection vector for
OneDimensionalZTraversal. The current built-in traversal uses the sign of the z component.backReflection/reflectivityEnable and scale the reflected pump pass.
pumpSubstepsInternal substeps for
BetaIntegrationGaussianSolveronly.pumpStepsNumber of outer
Simulationsteps with active pumping whenrunSteps(...)does not receive an explicitpumpSteps=override.solverPump solver object. If omitted,
SimulationusesBetaIntegrationGaussianSolver.
Built-In Solvers
OneDimensionalZTraversalPreferred continuous z-direction pump solver. It evaluates an instantaneous pump rate from the current beta state, spectra, profile, and optional back reflection.
Simulationstores the rate inTimeStepState.dndtPump. UseoneDimensionalZTraversalPumpRate(...)directly for diagnostics.BetaIntegrationGaussianSolverLegacy/default super-Gaussian solver. It advances beta analytically inside a pumped outer step and uses
pumpSubsteps. The compatibility helpersintegrateLaserPumpandrunLaserPumpStepuse the same historical path.
For equations and model details, see Theory and Model.
Custom Pump Solvers
A custom solver only needs step(input, pump). It receives a dictionary and
the PumpProperties object, and returns beta values with the same shape as
input["betaCell"].
class MyPumpSolver:
def step(self, input, pump):
beta = input["betaCell"]
scale = pump.getProperty("scale", 1.0)
return np.clip(beta + scale * 1e-3, 0.0, 1.0)
pump = PumpProperties(
spectralProperties=spectra,
intensity=16e3,
wavelength=940e-9,
radiusX=1.5,
radiusY=1.5,
solver=MyPumpSolver(),
scale=2.0,
)
The input dictionary includes the current beta array, the GainMedium, time
step, constants object, and optional substep override. Custom values are read
with pump.getProperty(...).
Utilities
pump.getProperty("myCustomVar", default)
pump.withProperty("myCustomVar", 7)
pump.withProperties(myCustomVar=8, anotherValue=1.0)
pump.intensityAt(points)
pump.toDict(timeFrame=None)
pump.modeDict()
toDict and modeDict are mainly for compatibility with the legacy pump
path.