Python scipy.special.wofz() Examples
The following are 17
code examples of scipy.special.wofz().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
scipy.special
, or try the search function
.
Example #1
Source File: Rakic 1998 - Cu (BB model).py From refractiveindex.info-scripts with GNU General Public License v3.0 | 6 votes |
def BB(ω): #ω: eV ε = 1-Ωp**2/(ω*(ω+1j*Γ0)) α = (ω**2+1j*ω*Γ1)**.5 za = (α-ω1)/(2**.5*σ1) zb = (α+ω1)/(2**.5*σ1) ε += 1j*π**.5*f1*ωp**2 / (2**1.5*α*σ1) * (w(za)+w(zb)) #χ1 α = (ω**2+1j*ω*Γ2)**.5 za = (α-ω2)/(2**.5*σ2) zb = (α+ω2)/(2**.5*σ2) ε += 1j*π**.5*f2*ωp**2 / (2**1.5*α*σ2) * (w(za)+w(zb)) #χ2 α = (ω**2+1j*ω*Γ3)**.5 za = (α-ω3)/(2**.5*σ3) zb = (α+ω3)/(2**.5*σ3) ε += 1j*π**.5*f3*ωp**2 / (2**1.5*α*σ3) * (w(za)+w(zb)) #χ3 α = (ω**2+1j*ω*Γ4)**.5 za = (α-ω4)/(2**.5*σ4) zb = (α+ω4)/(2**.5*σ4) ε += 1j*π**.5*f4*ωp**2 / (2**1.5*α*σ4) * (w(za)+w(zb)) #χ4 return ε
Example #2
Source File: Rakic 1998 - Ti (BB model).py From refractiveindex.info-scripts with GNU General Public License v3.0 | 6 votes |
def BB(ω): #ω: eV ε = 1-Ωp**2/(ω*(ω+1j*Γ0)) α = (ω**2+1j*ω*Γ1)**.5 za = (α-ω1)/(2**.5*σ1) zb = (α+ω1)/(2**.5*σ1) ε += 1j*π**.5*f1*ωp**2 / (2**1.5*α*σ1) * (w(za)+w(zb)) #χ1 α = (ω**2+1j*ω*Γ2)**.5 za = (α-ω2)/(2**.5*σ2) zb = (α+ω2)/(2**.5*σ2) ε += 1j*π**.5*f2*ωp**2 / (2**1.5*α*σ2) * (w(za)+w(zb)) #χ2 α = (ω**2+1j*ω*Γ3)**.5 za = (α-ω3)/(2**.5*σ3) zb = (α+ω3)/(2**.5*σ3) ε += 1j*π**.5*f3*ωp**2 / (2**1.5*α*σ3) * (w(za)+w(zb)) #χ3 α = (ω**2+1j*ω*Γ4)**.5 za = (α-ω4)/(2**.5*σ4) zb = (α+ω4)/(2**.5*σ4) ε += 1j*π**.5*f4*ωp**2 / (2**1.5*α*σ4) * (w(za)+w(zb)) #χ4 return ε
Example #3
Source File: Rakic 1998 - Ni (BB model).py From refractiveindex.info-scripts with GNU General Public License v3.0 | 6 votes |
def BB(ω): #ω: eV ε = 1-Ωp**2/(ω*(ω+1j*Γ0)) α = (ω**2+1j*ω*Γ1)**.5 za = (α-ω1)/(2**.5*σ1) zb = (α+ω1)/(2**.5*σ1) ε += 1j*π**.5*f1*ωp**2 / (2**1.5*α*σ1) * (w(za)+w(zb)) #χ1 α = (ω**2+1j*ω*Γ2)**.5 za = (α-ω2)/(2**.5*σ2) zb = (α+ω2)/(2**.5*σ2) ε += 1j*π**.5*f2*ωp**2 / (2**1.5*α*σ2) * (w(za)+w(zb)) #χ2 α = (ω**2+1j*ω*Γ3)**.5 za = (α-ω3)/(2**.5*σ3) zb = (α+ω3)/(2**.5*σ3) ε += 1j*π**.5*f3*ωp**2 / (2**1.5*α*σ3) * (w(za)+w(zb)) #χ3 α = (ω**2+1j*ω*Γ4)**.5 za = (α-ω4)/(2**.5*σ4) zb = (α+ω4)/(2**.5*σ4) ε += 1j*π**.5*f4*ωp**2 / (2**1.5*α*σ4) * (w(za)+w(zb)) #χ4 return ε
Example #4
Source File: Rakic 1998 - Cr (BB model).py From refractiveindex.info-scripts with GNU General Public License v3.0 | 6 votes |
def BB(ω): #ω: eV ε = 1-Ωp**2/(ω*(ω+1j*Γ0)) α = (ω**2+1j*ω*Γ1)**.5 za = (α-ω1)/(2**.5*σ1) zb = (α+ω1)/(2**.5*σ1) ε += 1j*π**.5*f1*ωp**2 / (2**1.5*α*σ1) * (w(za)+w(zb)) #χ1 α = (ω**2+1j*ω*Γ2)**.5 za = (α-ω2)/(2**.5*σ2) zb = (α+ω2)/(2**.5*σ2) ε += 1j*π**.5*f2*ωp**2 / (2**1.5*α*σ2) * (w(za)+w(zb)) #χ2 α = (ω**2+1j*ω*Γ3)**.5 za = (α-ω3)/(2**.5*σ3) zb = (α+ω3)/(2**.5*σ3) ε += 1j*π**.5*f3*ωp**2 / (2**1.5*α*σ3) * (w(za)+w(zb)) #χ3 α = (ω**2+1j*ω*Γ4)**.5 za = (α-ω4)/(2**.5*σ4) zb = (α+ω4)/(2**.5*σ4) ε += 1j*π**.5*f4*ωp**2 / (2**1.5*α*σ4) * (w(za)+w(zb)) #χ4 return ε
Example #5
Source File: Rakic 1998 - Al (BB model).py From refractiveindex.info-scripts with GNU General Public License v3.0 | 6 votes |
def BB(ω): #ω: eV ε = 1-Ωp**2/(ω*(ω+1j*Γ0)) α = (ω**2+1j*ω*Γ1)**.5 za = (α-ω1)/(2**.5*σ1) zb = (α+ω1)/(2**.5*σ1) ε += 1j*π**.5*f1*ωp**2 / (2**1.5*α*σ1) * (w(za)+w(zb)) #χ1 α = (ω**2+1j*ω*Γ2)**.5 za = (α-ω2)/(2**.5*σ2) zb = (α+ω2)/(2**.5*σ2) ε += 1j*π**.5*f2*ωp**2 / (2**1.5*α*σ2) * (w(za)+w(zb)) #χ2 α = (ω**2+1j*ω*Γ3)**.5 za = (α-ω3)/(2**.5*σ3) zb = (α+ω3)/(2**.5*σ3) ε += 1j*π**.5*f3*ωp**2 / (2**1.5*α*σ3) * (w(za)+w(zb)) #χ3 α = (ω**2+1j*ω*Γ4)**.5 za = (α-ω4)/(2**.5*σ4) zb = (α+ω4)/(2**.5*σ4) ε += 1j*π**.5*f4*ωp**2 / (2**1.5*α*σ4) * (w(za)+w(zb)) #χ4 return ε
Example #6
Source File: Rakic 1998 - Be (BB model).py From refractiveindex.info-scripts with GNU General Public License v3.0 | 6 votes |
def BB(ω): #ω: eV ε = 1-Ωp**2/(ω*(ω+1j*Γ0)) α = (ω**2+1j*ω*Γ1)**.5 za = (α-ω1)/(2**.5*σ1) zb = (α+ω1)/(2**.5*σ1) ε += 1j*π**.5*f1*ωp**2 / (2**1.5*α*σ1) * (w(za)+w(zb)) #χ1 α = (ω**2+1j*ω*Γ2)**.5 za = (α-ω2)/(2**.5*σ2) zb = (α+ω2)/(2**.5*σ2) ε += 1j*π**.5*f2*ωp**2 / (2**1.5*α*σ2) * (w(za)+w(zb)) #χ2 α = (ω**2+1j*ω*Γ3)**.5 za = (α-ω3)/(2**.5*σ3) zb = (α+ω3)/(2**.5*σ3) ε += 1j*π**.5*f3*ωp**2 / (2**1.5*α*σ3) * (w(za)+w(zb)) #χ3 α = (ω**2+1j*ω*Γ4)**.5 za = (α-ω4)/(2**.5*σ4) zb = (α+ω4)/(2**.5*σ4) ε += 1j*π**.5*f4*ωp**2 / (2**1.5*α*σ4) * (w(za)+w(zb)) #χ4 return ε
Example #7
Source File: Rakic 1998 - Pd (BB model).py From refractiveindex.info-scripts with GNU General Public License v3.0 | 6 votes |
def BB(ω): #ω: eV ε = 1-Ωp**2/(ω*(ω+1j*Γ0)) α = (ω**2+1j*ω*Γ1)**.5 za = (α-ω1)/(2**.5*σ1) zb = (α+ω1)/(2**.5*σ1) ε += 1j*π**.5*f1*ωp**2 / (2**1.5*α*σ1) * (w(za)+w(zb)) #χ1 α = (ω**2+1j*ω*Γ2)**.5 za = (α-ω2)/(2**.5*σ2) zb = (α+ω2)/(2**.5*σ2) ε += 1j*π**.5*f2*ωp**2 / (2**1.5*α*σ2) * (w(za)+w(zb)) #χ2 α = (ω**2+1j*ω*Γ3)**.5 za = (α-ω3)/(2**.5*σ3) zb = (α+ω3)/(2**.5*σ3) ε += 1j*π**.5*f3*ωp**2 / (2**1.5*α*σ3) * (w(za)+w(zb)) #χ3 α = (ω**2+1j*ω*Γ4)**.5 za = (α-ω4)/(2**.5*σ4) zb = (α+ω4)/(2**.5*σ4) ε += 1j*π**.5*f4*ωp**2 / (2**1.5*α*σ4) * (w(za)+w(zb)) #χ4 return ε
Example #8
Source File: Rakic 1998 - W (BB model).py From refractiveindex.info-scripts with GNU General Public License v3.0 | 6 votes |
def BB(ω): #ω: eV ε = 1-Ωp**2/(ω*(ω+1j*Γ0)) α = (ω**2+1j*ω*Γ1)**.5 za = (α-ω1)/(2**.5*σ1) zb = (α+ω1)/(2**.5*σ1) ε += 1j*π**.5*f1*ωp**2 / (2**1.5*α*σ1) * (w(za)+w(zb)) #χ1 α = (ω**2+1j*ω*Γ2)**.5 za = (α-ω2)/(2**.5*σ2) zb = (α+ω2)/(2**.5*σ2) ε += 1j*π**.5*f2*ωp**2 / (2**1.5*α*σ2) * (w(za)+w(zb)) #χ2 α = (ω**2+1j*ω*Γ3)**.5 za = (α-ω3)/(2**.5*σ3) zb = (α+ω3)/(2**.5*σ3) ε += 1j*π**.5*f3*ωp**2 / (2**1.5*α*σ3) * (w(za)+w(zb)) #χ3 α = (ω**2+1j*ω*Γ4)**.5 za = (α-ω4)/(2**.5*σ4) zb = (α+ω4)/(2**.5*σ4) ε += 1j*π**.5*f4*ωp**2 / (2**1.5*α*σ4) * (w(za)+w(zb)) #χ4 return ε
Example #9
Source File: Rakic 1998 - Ag (BB model).py From refractiveindex.info-scripts with GNU General Public License v3.0 | 5 votes |
def BB(ω): #ω: eV ε = 1-Ωp**2/(ω*(ω+1j*Γ0)) α = (ω**2+1j*ω*Γ1)**.5 za = (α-ω1)/(2**.5*σ1) zb = (α+ω1)/(2**.5*σ1) ε += 1j*π**.5*f1*ωp**2 / (2**1.5*α*σ1) * (w(za)+w(zb)) #χ1 α = (ω**2+1j*ω*Γ2)**.5 za = (α-ω2)/(2**.5*σ2) zb = (α+ω2)/(2**.5*σ2) ε += 1j*π**.5*f2*ωp**2 / (2**1.5*α*σ2) * (w(za)+w(zb)) #χ2 α = (ω**2+1j*ω*Γ3)**.5 za = (α-ω3)/(2**.5*σ3) zb = (α+ω3)/(2**.5*σ3) ε += 1j*π**.5*f3*ωp**2 / (2**1.5*α*σ3) * (w(za)+w(zb)) #χ3 α = (ω**2+1j*ω*Γ4)**.5 za = (α-ω4)/(2**.5*σ4) zb = (α+ω4)/(2**.5*σ4) ε += 1j*π**.5*f4*ωp**2 / (2**1.5*α*σ4) * (w(za)+w(zb)) #χ4 α = (ω**2+1j*ω*Γ5)**.5 za = (α-ω5)/(2**.5*σ5) zb = (α+ω5)/(2**.5*σ5) ε += 1j*π**.5*f5*ωp**2 / (2**1.5*α*σ5) * (w(za)+w(zb)) #χ5 return ε
Example #10
Source File: Rakic 1998 - Au (BB model).py From refractiveindex.info-scripts with GNU General Public License v3.0 | 5 votes |
def BB(ω): #ω: eV ε = 1-Ωp**2/(ω*(ω+1j*Γ0)) α = (ω**2+1j*ω*Γ1)**.5 za = (α-ω1)/(2**.5*σ1) zb = (α+ω1)/(2**.5*σ1) ε += 1j*π**.5*f1*ωp**2 / (2**1.5*α*σ1) * (w(za)+w(zb)) #χ1 α = (ω**2+1j*ω*Γ2)**.5 za = (α-ω2)/(2**.5*σ2) zb = (α+ω2)/(2**.5*σ2) ε += 1j*π**.5*f2*ωp**2 / (2**1.5*α*σ2) * (w(za)+w(zb)) #χ2 α = (ω**2+1j*ω*Γ3)**.5 za = (α-ω3)/(2**.5*σ3) zb = (α+ω3)/(2**.5*σ3) ε += 1j*π**.5*f3*ωp**2 / (2**1.5*α*σ3) * (w(za)+w(zb)) #χ3 α = (ω**2+1j*ω*Γ4)**.5 za = (α-ω4)/(2**.5*σ4) zb = (α+ω4)/(2**.5*σ4) ε += 1j*π**.5*f4*ωp**2 / (2**1.5*α*σ4) * (w(za)+w(zb)) #χ4 α = (ω**2+1j*ω*Γ5)**.5 za = (α-ω5)/(2**.5*σ5) zb = (α+ω5)/(2**.5*σ5) ε += 1j*π**.5*f5*ωp**2 / (2**1.5*α*σ5) * (w(za)+w(zb)) #χ5 return ε
Example #11
Source File: lineshape.py From typhon with MIT License | 5 votes |
def DopplerWind(Temp, FreqGrid, Para, wind_v, shift_direction='red'): u"""#doppler width #Para[transient Freq[Hz], relative molecular mass[g/mol]]""" # step1 = Para[0]/c*(2.*R*gct/(Para[1]*1.e-3))**0.5 # outy = np.exp(-(Freq-Para[0])**2/step1**2) / (step1*(np.pi**0.5)) #wind_v = speed[:,10] #Temp=temp[10] #FreqGrid = Fre_range_i[0] wind = wind_v.reshape(wind_v.size, 1) FreqGrid = FreqGrid.reshape(1, FreqGrid.size) deltav = Para[0]*wind/c if shift_direction.lower() == 'red': D_effect = (deltav) elif shift_direction.lower() == 'blue': D_effect = (-deltav) else: raise ValueError('Set shift direction to "red" or "blue".') # step1 = Para[0]/c*(2.*R*Temp*np.log(2.)/(Para[1]*1.e-3))**0.5 # HWHM # outy = np.exp(-np.log(2.)*(FreqGrid-Para[0])**2/step1**2) *\ # (np.log(2.)/np.pi)**0.5/step1 # outy_d = np.exp(-np.log(2.)*(FreqGrid+D_effect-Para[0])**2/step1**2) *\ # (np.log(2.)/np.pi)**0.5/step1 GD = np.sqrt(2*k*ac/Para[1]*Temp)/c*Para[0] step1 = GD outy_d = wofz((FreqGrid+D_effect-Para[0])/GD).real / np.sqrt(np.pi) / GD #plot(FreqGrid, outy) #plot(FreqGrid, outy_d[:,0]) return outy_d
Example #12
Source File: test_basic.py From GraphicDesignPatternByPython with MIT License | 5 votes |
def test_wofz_nan_inf(self): vals = [np.nan, -np.inf, np.inf] expected = [np.nan + np.nan * 1.j, 0.-0.j, 0.+0.j] assert_allclose(special.wofz(vals), expected, rtol=1e-15)
Example #13
Source File: test_gaussian_ellipse_kappa.py From lenstronomy with MIT License | 5 votes |
def test_w_f_approx(self): """ Test the `w_f_approx()` method with values computed using `scipy.special.wofz()`. :return: :rtype: """ x = np.logspace(-3., 3., 100) y = np.logspace(-3., 3., 100) X, Y = np.meshgrid(x, y) w_f_app = self.gaussian_kappa_ellipse.w_f_approx(X+1j*Y) w_f_scipy = wofz(X+1j*Y) npt.assert_allclose(w_f_app.real, w_f_scipy.real, rtol=4e-5, atol=0) npt.assert_allclose(w_f_app.imag, w_f_scipy.imag, rtol=4e-5, atol=0) # check `derivatives()` method with and without `scipy.special.wofz()` x = 1. y = 1. e1, e2 = 5e-5, 0 sigma = 1. amp = 2. # with `scipy.special.wofz()` gauss_scipy = GaussianEllipseKappa(use_scipy_wofz=True) f_x_sp, f_y_sp = gauss_scipy.derivatives(x, y, amp, sigma, e1, e2) # with `GaussEllipseKappa.w_f_approx()` gauss_approx = GaussianEllipseKappa(use_scipy_wofz=False) f_x_ap, f_y_ap = gauss_approx.derivatives(x, y, amp, sigma, e1, e2) npt.assert_almost_equal(f_x_sp, f_x_ap, decimal=4) npt.assert_almost_equal(f_y_sp, f_y_ap, decimal=4)
Example #14
Source File: test_basic.py From GraphicDesignPatternByPython with MIT License | 4 votes |
def test_wofz(self): z = [complex(624.2,-0.26123), complex(-0.4,3.), complex(0.6,2.), complex(-1.,1.), complex(-1.,-9.), complex(-1.,9.), complex(-0.0000000234545,1.1234), complex(-3.,5.1), complex(-53,30.1), complex(0.0,0.12345), complex(11,1), complex(-22,-2), complex(9,-28), complex(21,-33), complex(1e5,1e5), complex(1e14,1e14) ] w = [ complex(-3.78270245518980507452677445620103199303131110e-7, 0.000903861276433172057331093754199933411710053155), complex(0.1764906227004816847297495349730234591778719532788, -0.02146550539468457616788719893991501311573031095617), complex(0.2410250715772692146133539023007113781272362309451, 0.06087579663428089745895459735240964093522265589350), complex(0.30474420525691259245713884106959496013413834051768, -0.20821893820283162728743734725471561394145872072738), complex(7.317131068972378096865595229600561710140617977e34, 8.321873499714402777186848353320412813066170427e34), complex(0.0615698507236323685519612934241429530190806818395, -0.00676005783716575013073036218018565206070072304635), complex(0.3960793007699874918961319170187598400134746631, -5.593152259116644920546186222529802777409274656e-9), complex(0.08217199226739447943295069917990417630675021771804, -0.04701291087643609891018366143118110965272615832184), complex(0.00457246000350281640952328010227885008541748668738, -0.00804900791411691821818731763401840373998654987934), complex(0.8746342859608052666092782112565360755791467973338452, 0.), complex(0.00468190164965444174367477874864366058339647648741, 0.0510735563901306197993676329845149741675029197050), complex(-0.0023193175200187620902125853834909543869428763219, -0.025460054739731556004902057663500272721780776336), complex(9.11463368405637174660562096516414499772662584e304, 3.97101807145263333769664875189354358563218932e305), complex(-4.4927207857715598976165541011143706155432296e281, -2.8019591213423077494444700357168707775769028e281), complex(2.820947917809305132678577516325951485807107151e-6, 2.820947917668257736791638444590253942253354058e-6), complex(2.82094791773878143474039725787438662716372268e-15, 2.82094791773878143474039725773333923127678361e-15) ] assert_func_equal(cephes.wofz, w, z, rtol=1e-13)
Example #15
Source File: spectra.py From ElecSus with Apache License 2.0 | 4 votes |
def add_voigt(d,DoppTemp,atomMass,wavenumber,gamma,voigtwidth, ltransno,lenergy,lstrength, rtransno,renergy,rstrength, ztransno,zenergy,zstrength): xpts = len(d) npts = 2*voigtwidth+1 detune = 2.0*pi*1.0e6*(arange(npts)-voigtwidth) # Angular detuning (2pi Hz) wavenumber = wavenumber + detune/c # Allow the wavenumber to change (large detuning) u = sqrt(2.0*kB*DoppTemp/atomMass) ku = wavenumber*u # Fadeeva function: a = gamma/ku b = detune/ku y = 1.0j*(0.5*sqrt(pi)/ku)*wofz(b+0.5j*a) ab = y.imag disp = y.real #interpolate lineshape functions f_ab = interp1d(detune,ab) f_disp = interp1d(detune,disp) #Add contributions from all transitions to user defined detuning axis lab = zeros(xpts) ldisp = zeros(xpts) for line in range(ltransno+1): xc = lenergy[line] lab += lstrength[line]*f_ab(2.0*pi*(d-xc)*1.0e6) ldisp += lstrength[line]*f_disp(2.0*pi*(d-xc)*1.0e6) rab = zeros(xpts) rdisp = zeros(xpts) for line in range(rtransno+1): xc = renergy[line] rab += rstrength[line]*f_ab(2.0*pi*(d-xc)*1.0e6) rdisp += rstrength[line]*f_disp(2.0*pi*(d-xc)*1.0e6) zab = zeros(xpts) zdisp = zeros(xpts) for line in range(ztransno+1): xc = zenergy[line] zab += zstrength[line]*f_ab(2.0*pi*(d-xc)*1.0e6) zdisp += zstrength[line]*f_disp(2.0*pi*(d-xc)*1.0e6) return lab, ldisp, rab, rdisp, zab, zdisp
Example #16
Source File: spectra_energies.py From ElecSus with Apache License 2.0 | 4 votes |
def add_voigt(d,DoppTemp,atomMass,wavenumber,gamma,voigtwidth, ltransno,lenergy,lstrength, rtransno,renergy,rstrength, ztransno,zenergy,zstrength): xpts = len(d) npts = 2*voigtwidth+1 detune = 2.0*pi*1.0e6*(arange(npts)-voigtwidth) # Angular detuning (2pi Hz) wavenumber = wavenumber + detune/c # Allow the wavenumber to change (large detuning) u = sqrt(2.0*kB*DoppTemp/atomMass) ku = wavenumber*u # Fadeeva function: a = gamma/ku b = detune/ku y = 1.0j*(0.5*sqrt(pi)/ku)*wofz(b+0.5j*a) ab = y.imag disp = y.real #interpolate lineshape functions f_ab = interp1d(detune,ab) f_disp = interp1d(detune,disp) #Add contributions from all transitions to user defined detuning axis lab = zeros(xpts) ldisp = zeros(xpts) for line in range(ltransno+1): xc = lenergy[line] lab += lstrength[line]*f_ab(2.0*pi*(d-xc)*1.0e6) ldisp += lstrength[line]*f_disp(2.0*pi*(d-xc)*1.0e6) rab = zeros(xpts) rdisp = zeros(xpts) for line in range(rtransno+1): xc = renergy[line] rab += rstrength[line]*f_ab(2.0*pi*(d-xc)*1.0e6) rdisp += rstrength[line]*f_disp(2.0*pi*(d-xc)*1.0e6) zab = zeros(xpts) zdisp = zeros(xpts) for line in range(ztransno+1): xc = zenergy[line] zab += zstrength[line]*f_ab(2.0*pi*(d-xc)*1.0e6) zdisp += zstrength[line]*f_disp(2.0*pi*(d-xc)*1.0e6) return lab, ldisp, rab, rdisp, zab, zdisp
Example #17
Source File: spectra_idealatom.py From ElecSus with Apache License 2.0 | 4 votes |
def add_voigt(d,DoppTemp,atomMass,wavenumber,gamma,voigtwidth, ltransno,lenergy,lstrength, rtransno,renergy,rstrength, ztransno,zenergy,zstrength): xpts = len(d) npts = 2*voigtwidth+1 detune = 2.0*pi*1.0e6*(arange(npts)-voigtwidth) # Angular detuning (2pi Hz) wavenumber = wavenumber + detune/c # Allow the wavenumber to change (large detuning) u = sqrt(2.0*kB*DoppTemp/atomMass) ku = wavenumber*u # Fadeeva function: a = gamma/ku b = detune/ku y = 1.0j*(0.5*sqrt(pi)/ku)*wofz(b+0.5j*a) ab = y.imag disp = y.real #interpolate lineshape functions f_ab = interp1d(detune,ab) f_disp = interp1d(detune,disp) #Add contributions from all transitions to user defined detuning axis lab = zeros(xpts) ldisp = zeros(xpts) for line in range(ltransno+1): xc = lenergy[line] lab += lstrength[line]*f_ab(2.0*pi*(d-xc)*1.0e6) ldisp += lstrength[line]*f_disp(2.0*pi*(d-xc)*1.0e6) rab = zeros(xpts) rdisp = zeros(xpts) for line in range(rtransno+1): xc = renergy[line] rab += rstrength[line]*f_ab(2.0*pi*(d-xc)*1.0e6) rdisp += rstrength[line]*f_disp(2.0*pi*(d-xc)*1.0e6) zab = zeros(xpts) zdisp = zeros(xpts) for line in range(ztransno+1): xc = zenergy[line] zab += zstrength[line]*f_ab(2.0*pi*(d-xc)*1.0e6) zdisp += zstrength[line]*f_disp(2.0*pi*(d-xc)*1.0e6) return lab, ldisp, rab, rdisp, zab, zdisp