def __init__(self, wavelen, duration, power, efficiency): self.wavelen = wavelen self.duration = duration self.power = power self.efficiency = efficiency self.effective_power = power * efficiency self.effective_pump_rate = energy.photon_count(wavelen, self.effective_power)
def _rate(self, inversion): # at zero inversion, depopulation rate is undefined but approaches zero if inversion == 0.0: return 0.0 active_medium = self.active_medium doping_agent = active_medium.doping_agent active_solid_angle = active_medium.active_solid_angle ln_gain = doping_agent.xsection * inversion * active_medium.length gain = math.exp(ln_gain) intensity = self._saturation_intensity * (active_solid_angle/4.0) * (gain-1.0)**1.5/(gain*ln_gain)**0.5 power = 2.0 * active_medium.aperture * intensity rate = energy.photon_count(doping_agent.lasing_wavelen, power) # fluorescence in directions outside of the two active solid angles: rate += (1.0 - 2.0 * active_solid_angle / (4.0 * math.pi)) * self._decay_rate(inversion, doping_agent.laser_transition_probability) # fluorescence to other states: rate += self._decay_rate(inversion, doping_agent.nonlaser_transition_probability) return rate