Ejemplo n.º 1
0
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)]
Ejemplo n.º 2
0
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)]
Ejemplo n.º 3
0
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)]
Ejemplo n.º 4
0
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)]
Ejemplo n.º 5
0
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)]
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
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)
Ejemplo n.º 8
0
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
Ejemplo n.º 11
0
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:]
Ejemplo n.º 12
0
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],
Ejemplo n.º 13
0
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()
Ejemplo n.º 14
0
#!/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:]
Ejemplo n.º 17
0
#!/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
Ejemplo n.º 18
0
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$)')) 
Ejemplo n.º 19
0
def action(index,folder):
  dataCurFolder = []
  dataCurFolder.append([index, folder])
  dataCurFolder.append(dp.getEnergyTemperaturePressure(ave=True))
  dataCurFolder.append(dp.getEField())
  return dataCurFolder
Ejemplo n.º 20
0
def action(index, folder):
    dataCurFolder = []
    dataCurFolder.append([index, folder])
    dataCurFolder.append(dp.getEnergyTemperaturePressure(ave=True))
    dataCurFolder.append(dp.getEField())
    return dataCurFolder
Ejemplo n.º 21
0
                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']: