def action(index, folder): timeEf, eField = dP.getEField() timeEl, exe = dP.getExcitedElectrons() exe -= exe[0] timeEn, T, E_ks, E_tot, Vol, P = dP.getEnergyTemperaturePressure() deltaE = E_ks[start:,] - E_ks[2] return [(index, folder), (timeEf, eField), (timeEl, exe), (timeEn,deltaE)]
def action(index, folder): timeEf, eField = dP.getEField() timeEl, exe = dP.getExcitedElectrons() exe -= exe[0] timeEn, T, E_ks, E_tot, Vol, P = dP.getEnergyTemperaturePressure() deltaE = E_ks[start:, ] - E_ks[2] return [(index, folder), (timeEf, eField), (timeEl, exe), (timeEn, deltaE)]
def action(index, folder): #------------------------------------------------------------------------------ timeEf, eField = dP.getEField() timeEl, exe, exe1 = dP.getExcitedElectrons( comp = True) timeEn, T, E_ks, E_tot, Vol, P = dP.getEnergyTemperaturePressure(ave=True) deltaE = (E_ks[2:,] - E_ks[2]) return [(index, folder), (timeEf, eField), (timeEl, exe, exe1), (timeEn,deltaE)]
def action(index, folder): #------------------------------------------------------------------------------ timeEf, eField = dP.getEField() timeEl, exe, exe1 = dP.getExcitedElectrons(comp=True) timeEn, T, E_ks, E_tot, Vol, P = dP.getEnergyTemperaturePressure(ave=True) deltaE = (E_ks[2:, ] - E_ks[2]) return [(index, folder), (timeEf, eField), (timeEl, exe, exe1), (timeEn, deltaE)]
def action(index, folder): import os os.chdir('1') timeEf, eField = dP.getEField() timeEl, exe = dP.getExcitedElectrons() exe -= exe[0] timeEn, T, E_ks, E_tot, Vol, P = dP.getEnergyTemperaturePressure() deltaE = (E_tot[2:, ] - E_tot[2]) os.chdir('..') return [(index, folder), (timeEf, eField), (timeEl, exe), (timeEn, deltaE)]
def plotEField(ax, label=''): time, Efield = dp.getEField() directions = ['x', 'y', 'z'] for direct in range(3): if max(Efield[:,direct]) > 1E-10: ax.plot(time,Efield[:,direct], label=directions[direct], lw=2, alpha=1.0) kargs=ma.getPropertyFromPosition(ylabel=r'$\varepsilon$ (a.u.)',xlabel='Time(fs)', title='Electric Field') ma.setProperty(ax,**kargs)
def plotEField(ax, label=''): time, Efield = dp.getEField() directions = ['x', 'y', 'z'] for direct in range(3): if max(Efield[:, direct]) > 1E-10: ax.plot(time, Efield[:, direct], label=directions[direct], lw=2, alpha=1.0) kargs = ma.getPropertyFromPosition(ylabel=r'$\varepsilon$ (a.u.)', xlabel='Time(fs)', title='Electric Field') ma.setProperty(ax, **kargs)
def action(index,folder): ls = ['-','-','-','-'] ax = axs[0] time, Efield = dP.getEField() #directions = ['x', 'y', 'z'] for direct in range(3): if max(Efield[:,direct]) > 1E-10: ax.plot(time,Efield[:,direct], label=folder,lw=2,alpha=0.5) kargs=ma.getPropertyFromPosition(ylabel=r'$\varepsilon$(a.u.)',xlabel='Time(fs)', title='Electric Field') ma.setProperty(ax,**kargs) ax.ticklabel_format(style='sci',axis='y',scilimits=[0,0]) #------------------------------------------------------------------------------ ax = axs[1] time, T, E_ks, E_tot, Vol, P = dP.getEnergyTemperaturePressure(ave=True) # for i in range(2,E_ks.shape[0]-1): # if E_ks[i+1] - (E_ks[i] + E_ks[i-1])*0.5 > 2.0: # E_ks[i+1] = (E_ks[i] + E_ks[i-1])*0.5 ax.plot(time[2:], E_ks[2:] - E_ks[2],'-', lw=1, alpha=1, label=folder) kargs=ma.getPropertyFromPosition(ylabel=r'E(eV)',title='Excitation Energy') ma.setProperty(ax,**kargs)
option = tdapOptions() import numpy as np import matplotlib.pyplot as plt import pyramids.io.result as dp import pyramids.plot.setting as ma import pyramids.plot.PlotUtility as pu import os from ase.dft.kpoints import special_paths, special_points ax = axs[1] import pyramids.plot.PlotUtility as pu pu.plotEField(ax) timeE, Efield = dp.getEField() lightScat, = ax.plot(0, Efield[0, 0], 'o') kargs = ma.getPropertyFromPosition(xlabel=r'Time', ylabel=r'EField') ma.setProperty(ax, **kargs) ax = axs[0] kpath = np.arange(exe.shape[1]) x = kpath #print list(kpath+1) evolvingBands = range(exe.shape[2]) excited = np.abs(exe[1, kpath, :] - exe[0, kpath, :]) norm = 100.0 / np.max(exe[:, kpath, :] - exe[0, kpath, :]) eigenvalue = eigen[0, kpath, :] #print eigenvalue.shape, excited.shape, x.shape
def huskyOnTheFly(index, folder): count = 0 for i, direct in enumerate(['x', 'y', 'z']): #print os.listdir('.') if not os.path.exists(direct): continue os.chdir(direct) timeArray, efield = dp.getEField() option = tdapOptions() lengthTime = option.tdTimeStep[0] numStep = option.tdFinalStep - 2 timeArray = timeArray[2:] / option.tdTimeStep[0] time, dipole = dp.getDipolePython() dipole = dipole[2:, i] dipole *= np.exp(-dumping * timeArray) freqResolution = 1.0 / (lengthTime * numStep) freqArray = (timeArray - (numStep / 2.0)) * freqResolution energyArray0 = freqArray * 4.1356 energyArray = energyArray0[numStep / 2:] # energyArray1 = list(energyArray0[numStep/2:]) # energyArray2 = list(energyArray0[:numStep/2]) # energyArray1 +=energyArray2 # energyArray = np.array(energyArray1) epsilon = fft(dipole)[:numStep / 2] epsilon = (np.real(epsilon), np.imag(epsilon)) # print (energyArray) absorbanceimag = (epsilon[0] * energyArray * 0.0367 / 6.28) / (width * float(folder) * fieldE) absorbancereal = (epsilon[1] * energyArray * 0.0367 / 6.28) / (width * float(folder) * fieldE) # absorbanceimag = 3.334*(epsilon[0]*energyArray/4.1356)/0.25 # absorbancereal = 3.334*(epsilon[1]*energyArray/4.1356)/0.25 if count == 0: count += 1 absorbanceSumimag = absorbanceimag absorbanceSumreal = 0.25 / np.pi + absorbancereal else: absorbanceSumimag += absorbanceimag absorbanceSumreal += absorbancereal eels = absorbanceSumimag / (absorbanceSumimag**2 + absorbanceSumreal**2) os.chdir('..') peaks = [] # for j in range(1,len(absorbanceSum)-1): # if energyArray[j] > xlimits[0] and energyArray[j] < xlimits[1]: # if absorbanceSum[j] >= absorbanceSum[j-1] and absorbanceSum[j] >= absorbanceSum[j+1]: # if absorbanceSum[j] > 0.03 and energyArray[j] > 5 and energyArray[j] < 8: # energyArray[j] < 22.0 and # peaks.append(energyArray[j]) # print peaks return energyArray, absorbanceSumimag, folder, absorbanceSumreal, eels, peaks
colors = getColors(4) for i, direct in enumerate(['x', 'y', 'z']): if not os.path.exists(direct): continue # os.chdir(direct) # import pyramids.plot.PlotUtility as pu # rotation = [0,0,0] # rotation[i] = 90 # pu.insertStruct(axs, width="50%", height=1.5, loc=2, # rotation=rotation, # camera='perspective', cell=False) timeArray, efield = dp.getEField() option = tdapOptions() lengthTime = option.tdTimeStep[0] numStep = option.tdFinalStep - 2 timeArray = timeArray[2:] / option.tdTimeStep[0] time, dipole = dp.getDipolePython() dipole = -dipole[2:, i] freqResolution = 1.0 / (lengthTime * numStep) freqArray = (timeArray - (numStep / 2.0)) * freqResolution energyArray = freqArray * 4.1356 energyArray = energyArray[numStep / 2:]
slide = 27 dataAndAtoms = [ read_cube_data(str(i) + '/siesta.DRHO.cube') for i in selectedTimeSteps ] fig, axs = plt.subplots(1, 2, figsize=(12, 6)) pho0, atoms = dataAndAtoms[0] #atoms = xv_to_atoms('siesta.XV') X = np.arange(pho0.shape[1]) * atoms.cell[1, 1] / pho0.shape[1] Y = np.arange(pho0.shape[2]) * atoms.cell[2, 2] / pho0.shape[2] x, y = np.meshgrid(X, Y) import pyramids.io.result as dP time, light = dP.getEField() step = len(time) / len(dataAndAtoms) #print light.shape line, = axs[1].plot(time, light[:, 2]) scatter, = axs[1].plot(0, 0, 'o') def animate(i): i = i % len(dataAndAtoms) z = (dataAndAtoms[i][0] - pho0)[slide, :, :] atoms = dataAndAtoms[i][1] print z.min(), z.max() axs[0].contourf(x, y, z, 100, vmin=vmin, vmax=vmax, cmap=cm.jet) for pos, Z in zip(atoms.positions, atoms.numbers): axs[0].scatter(pos[2], pos[1],
fig, axs = plt.subplots(2, 1, sharex=True, sharey=False, figsize=(6, 8)) SaveName = __file__.split('/')[-1].split('.')[0] startStep = 10 c = ma.getColors(4) ax = axs[0] time, T, E_ks, E_tot, Vol, P = dp.getEnergyTemperaturePressure() time, dipoles = dp.getDipolePython() for i, direct in enumerate(('x', 'y', 'z')): ax.plot(time[2:], dipoles[2:, i], label=direct) ax.grid(which=u'major', axis='x') ax.grid(which=u'major', axis='y') kargs = ma.getPropertyFromPosition(ylabel=r'Dipole(a.u)', xlabel='Time(fs)') ma.setProperty(ax, **kargs) ax = axs[1] time, dipoles = dp.getEField() for i, direct in enumerate(('x', 'y', 'z')): ax.plot(time, dipoles[:, i] - dipoles[0, i], label=direct) ax.grid(which=u'major', axis='x') ax.grid(which=u'major', axis='y') kargs = ma.getPropertyFromPosition(ylabel=r'$\varepsilon$(a.u)', xlabel='Time(fs)') ma.setProperty(ax, **kargs) plt.tight_layout()
#!/usr/bin/python import numpy as np import matplotlib.pyplot as plt import pyramids.io.result as dP import pyramids.plot.setting as ma #------------------------------------------------------------------------------ fig, axs = plt.subplots(3, 1, sharex=True, sharey=False, figsize=(6, 8)) SaveName = __file__.split('/')[-1].split('.')[0] c = ['b', 'r', 'g', 'y'] ax = axs[2] time, Efield = dP.getEField() directions = ['x', 'y', 'z'] for direct in range(3): ax.plot(time, Efield[:, direct], c=c[direct], label=directions[direct], lw=2, alpha=0.8) kargs = ma.getPropertyFromPosition(ylabel=r'$\varepsilon$(a.u.)', xlabel='Time(fs)', title='Electric Field') ma.setProperty(ax, **kargs) ax.ticklabel_format(style='sci', axis='y', scilimits=[0, 0]) #------------------------------------------------------------------------------ ax = axs[0] Time, exe, exe1 = dP.getExcitedElectrons(comp=True) ax.plot(Time, exe - exe[0], '--', alpha=0.8, markerfacecolor='w', lw=2) ax.plot(Time, exe1 - exe1[0], '-', alpha=0.8, markerfacecolor='w', lw=2)
def huskyOnTheFly(index,folder): count = 0 for i, direct in enumerate(['x','y','z']): #print os.listdir('.') if not os.path.exists(direct): continue os.chdir(direct) timeArray, efield = dp.getEField() option = tdapOptions() lengthTime = option.tdTimeStep[0] numStep = option.tdFinalStep - 2 timeArray = timeArray[2:]/option.tdTimeStep[0] time, dipole = dp.getDipolePython() dipole = dipole[2:,i] dipole *= np.exp(-dumping*timeArray) freqResolution = 1.0/(lengthTime*numStep) freqArray = (timeArray-(numStep/2.0))*freqResolution energyArray0 = freqArray*4.1356 energyArray = energyArray0[numStep/2:] # energyArray1 = list(energyArray0[numStep/2:]) # energyArray2 = list(energyArray0[:numStep/2]) # energyArray1 +=energyArray2 # energyArray = np.array(energyArray1) epsilon = fft(dipole)[:numStep/2] epsilon = (np.real(epsilon),np.imag(epsilon)) # print (energyArray) absorbanceimag = (epsilon[0]*energyArray*0.0367/6.28)/(width*float(folder)*fieldE) absorbancereal = (epsilon[1]*energyArray*0.0367/6.28)/(width*float(folder)*fieldE) # absorbanceimag = 3.334*(epsilon[0]*energyArray/4.1356)/0.25 # absorbancereal = 3.334*(epsilon[1]*energyArray/4.1356)/0.25 if count == 0: count += 1 absorbanceSumimag = absorbanceimag absorbanceSumreal = 0.25/np.pi+absorbancereal else: absorbanceSumimag += absorbanceimag absorbanceSumreal += absorbancereal eels = absorbanceSumimag / (absorbanceSumimag**2 + absorbanceSumreal**2) os.chdir('..') peaks = [] # for j in range(1,len(absorbanceSum)-1): # if energyArray[j] > xlimits[0] and energyArray[j] < xlimits[1]: # if absorbanceSum[j] >= absorbanceSum[j-1] and absorbanceSum[j] >= absorbanceSum[j+1]: # if absorbanceSum[j] > 0.03 and energyArray[j] > 5 and energyArray[j] < 8: # energyArray[j] < 22.0 and # peaks.append(energyArray[j]) # print peaks return energyArray, absorbanceSumimag, folder, absorbanceSumreal, eels, peaks
colors = getColors(4) for i, direct in enumerate(['x','y','z']): if not os.path.exists(direct): continue # os.chdir(direct) # import pyramids.plot.PlotUtility as pu # rotation = [0,0,0] # rotation[i] = 90 # pu.insertStruct(axs, width="50%", height=1.5, loc=2, # rotation=rotation, # camera='perspective', cell=False) timeArray, efield = dp.getEField() option = tdapOptions() lengthTime = option.tdTimeStep[0] numStep = option.tdFinalStep - 2 timeArray = timeArray[2:]/option.tdTimeStep[0] time, dipole = dp.getDipolePython() dipole = dipole[2:,i] freqResolution = 1.0/(lengthTime*numStep) freqArray = (timeArray-(numStep/2.0))*freqResolution energyArray = freqArray*4.1356 energyArray = energyArray[numStep/2:]
#!/usr/bin/python import numpy as np import matplotlib.pyplot as plt import pyramids.io.result as dp import pyramids.plot.setting as ma time, Efield = dp.getEField() fig, axs = plt.subplots(1,1,sharex=True,sharey=True) ax = axs # print Efield # Plot Block # for i in range(3): if np.max(np.abs(Efield[:,i])) > 1E-7: ax.plot(time,Efield[:,i],label=i) #ax.plot(time,Efield[:,1],label='y') #ax.plot(time,Efield[:,2],label='z') #ax.plot(Efield) kargs=ma.getPropertyFromPosition(ylabel=r'E(a.u.)',xlabel='',title='', xticks=None, yticks=None, xticklabels=None, yticklabels=None, xlimits=None, ylimits=None) ma.setProperty(ax,**kargs) plt.tight_layout() SaveName = __file__.split('/')[-1].split('.')[0] for save_type in ['.pdf']: filename = SaveName + save_type
slide = 27 dataAndAtoms = [read_cube_data(str(i)+'/siesta.DRHO.cube') for i in selectedTimeSteps] fig, axs = plt.subplots(1,2,figsize=(12,6)) pho0,atoms = dataAndAtoms[0] #atoms = xv_to_atoms('siesta.XV') X = np.arange(pho0.shape[1])*atoms.cell[1,1]/pho0.shape[1] Y = np.arange(pho0.shape[2])*atoms.cell[2,2]/pho0.shape[2] x, y = np.meshgrid(X, Y) import pyramids.io.result as dP time, light = dP.getEField() step = len(time)/len(dataAndAtoms) #print light.shape line, = axs[1].plot(time,light[:,2]) scatter, = axs[1].plot(0,0,'o') def animate(i): i = i % len(dataAndAtoms) z = (dataAndAtoms[i][0]-pho0)[slide,:,:] atoms = dataAndAtoms[i][1] print z.min(), z.max() axs[0].contourf(x, y, z, 100,vmin = vmin,vmax =vmax, cmap = cm.jet) for pos, Z in zip(atoms.positions, atoms.numbers): axs[0].scatter(pos[2],pos[1],c=tuple(cpk_colors[Z]),s=400*covalent_radii[Z]) setProperty(axs[0],**getPropertyFromPosition(0,xlimits=[2,6],ylimits=[2,6], xlabel = r'distance($\AA$)',ylabel = r'distance($\AA$)'))
def action(index,folder): dataCurFolder = [] dataCurFolder.append([index, folder]) dataCurFolder.append(dp.getEnergyTemperaturePressure(ave=True)) dataCurFolder.append(dp.getEField()) return dataCurFolder
def action(index, folder): dataCurFolder = [] dataCurFolder.append([index, folder]) dataCurFolder.append(dp.getEnergyTemperaturePressure(ave=True)) dataCurFolder.append(dp.getEField()) return dataCurFolder
rotation=[-90,90,0], camera='perspective', cell=False) ma.setProperty(ax,**kargs) #------------------------------------------------------------------------------ Time, exe = dP.getExcitedElectrons() ax = axs[1] ax.plot(Time,exe,'-',alpha=0.8,c=c[0],markerfacecolor='w',lw=2) kargs=ma.getPropertyFromPosition(ylabel=r'n(e)', title='Excited Electrons', xlimits=None,) #ylimits=[exe.min(),exe.max()]) print exe[-1] ma.setProperty(ax,**kargs) #------------------------------------------------------------------------------ ax = axs[2] time, Efield = dP.getEField() directions = ['x', 'y', 'z'] c = ma.getColors(3,cmap='brg') for direct in range(3): ax.plot(time,Efield[:,direct] ,c=c[direct], label=directions[direct],lw=2,alpha=0.8) kargs=ma.getPropertyFromPosition(ylabel=r'$\varepsilon$(Ry/Bohr)', xlabel='Time(fs)', title='Electric Field', xlimits=[np.min(time),np.max(time)]) ma.setProperty(ax,**kargs) #------------------------------------------------------------------------------ plt.tight_layout() for save_type in ['.pdf','.png']: