Quick simulation of peaks in CMDS


In [14]:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
%matplotlib inline
matplotlib.rcParams['figure.figsize'] = (10,10)

Generate a "spectrum" of just the detuning


In [15]:
wag = 20000
wbg = 25000
gag = 500
gbg = 5000

points = 500
w1 = np.linspace(15000,30000,points)
w2 = np.linspace(15000,30000,points)

def peak(w1,w2):
    a_diagonal = 1.0/(gag*gag*(w1-wag)*(w1-wag)*gag*gag*(w2-wag)*(w2-wag))
    b_diagonal = 1.0/(gbg*gbg*(w1-wbg)*(w1-wbg)*gbg*gbg*(w2-wbg)*(w2-wbg))
    cross = 1.0/(gag*gag*(w1-wag)*(w1-wag)*gbg*gbg*(w2-wbg)*(w2-wbg))
    return a_diagonal + b_diagonal + cross

zvals = np.empty([points,points])
for i,color1 in enumerate(w1):
    for j,color2 in enumerate(w2):
        zvals[i][j]=peak(color1,color2)
# Take the log to see trends over orders of magnitude
zvals = np.log(zvals)

Plot it


In [18]:
levels = np.linspace(np.min(zvals),np.max(zvals),200)

plt.contourf(w1,w2,zvals,levels=levels)
plt.contour(w1,w2,zvals,8,colors='K')
plt.xlabel("w1 (cm^-1)")
plt.ylabel("w2 (cm^-1)")
plt.show()


Now plot slices - diagonal is blue, horizontal at 20000 is green


In [19]:
diagonal = np.empty(points)
for i in range(points):
    diagonal[i] = zvals[i][i]
    
horizontal = zvals[len(zvals)/3]

plt.plot(w1,diagonal, color='b')
plt.plot(w1,horizontal, color='g')
plt.xlabel("w1 or w1=w2 (cm^-1)")
plt.ylabel("Log of Detuning")
plt.show()



In [ ]: