Exemplo n.º 1
0
def plot_smooth():
    df = pd.read_csv("VDOS.txt", sep=r"[ \t]", engine="python")
    freq, ave = getDos(df['Freq_THz'], df['vdos_av'])
    dp = pd.DataFrame()
    dp['Freq_THz'] = freq
    dp["vdos_av"] = ave
    dp.to_csv('smooth_dos.txt', sep='\t', index=False, float_format="%f")
    plot((freq, 'Frequency(THz)'), (ave, 'Phonon Density of states'),
         "smooth_dos.png",
         grid=True)

    alldos = [df['vdos_x'], df['vdos_y'], df['vdos_z']]
    filter = getFilter(alldos)
    dp = pd.DataFrame()
    freq, ave = getDos(df['Freq_THz'], df['vdos_x'], filter)
    dp['Freq_x'] = freq
    dp["vdos_x"] = ave
    freq, ave = getDos(df['Freq_THz'], df['vdos_y'], filter)
    dp['Freq_y'] = freq
    dp["vdos_y"] = ave
    freq, ave = getDos(df['Freq_THz'], df['vdos_z'], filter)
    dp['Freq_z'] = freq
    dp["vdos_z"] = ave
    dp.to_csv('smooth_dosxyz.txt', sep='\t', index=False, float_format="%f")
    series(xlabel='Frequency(THz)',
           ylabel='Phonon Density of States',
           datas=[(dp['Freq_x'], dp["vdos_x"], "dos_x"),
                  (dp['Freq_y'], dp["vdos_y"], "dos_y"),
                  (dp['Freq_z'], dp["vdos_z"], "dos_z")],
           filename='smooth_dosxyz.png',
           grid=True)
Exemplo n.º 2
0
	def sca(self,th=0.0):

		qpoints_full=np.loadtxt('BTE.qpoints_full')
		ks=qpoints_full[:,2:4]
		f=self.direction(ks,th)
		ids=qpoints_full[:,1].astype(np.int)[f]
		qpoints=np.loadtxt('BTE.qpoints')
		idx=qpoints[:,0].astype(np.int)
		u=[list(idx).index(i) for i in ids]

		w=np.loadtxt('BTE.w_final')
		omega=np.loadtxt('BTE.omega')/(2.0*np.pi)
		#w[omega<omega.flatten().max()*0.005]=float('nan')
		tao=1.0/w+1e-6

		rt=tao[u,:3]
		rom=omega[u,:3]
		data=[]
		n,m=rom.shape
		for i in range(m):

			data.append([rom[:,i],rt[:,i],'b'])
		series(xlabel='Frequency (THz)',
		ylabel='Relaxation Time (ps)',
		datas=data,
		filename='scaling-%f.png'%th,scatter=True,legend=False,logx=True,logy=True)
Exemplo n.º 3
0
    def sca(self, th=0.0):

        qpoints_full = np.loadtxt('BTE.qpoints_full')
        ks = qpoints_full[:, 2:4]
        f = filter_along_direction(ks, th, eps=0.5)
        ids = qpoints_full[:, 1].astype(np.int)[f]
        qpoints = np.loadtxt('BTE.qpoints')
        idx = qpoints[:, 0].astype(np.int)
        u = [list(idx).index(i) for i in ids]

        w = np.loadtxt('BTE.w_final')
        omega = np.loadtxt('BTE.omega') / (2.0 * np.pi)
        # w[omega<omega.flatten().max()*0.005]=float('nan')
        tao = 1.0 / w + 1e-6

        rt = tao[u, :3]
        rom = omega[u, :3]
        data = []
        n, m = rom.shape
        for i in range(m):

            data.append([rom[:, i], rt[:, i], 'b'])
        series(
            xlabel='Frequency (THz)',
            ylabel='Relaxation Time (ps)',
            datas=data,
            filename='scaling-%f.png' % th,
            scatter=True,
            legend=False,
            logx=True,
            logy=True)
Exemplo n.º 4
0
def plot_regiondos(regions, filename='region_dos.png'):
    import h5py
    db = h5py.File('velocity.hdf5')
    freq = db['/freq']
    datas = []
    alldos = []

    for region, rname in regions:
        dos = get_regiondos(region)
        alldos.append(dos)
    filter = getFilter(alldos)
    dp = pd.DataFrame()
    for region, rname in regions:
        dos = get_regiondos(region)
        x, y = getDos(freq, dos, filter)
        datas.append((x, y, "region:%s" % rname))
        dp['freq_%s' % rname] = x
        dp['dos_%s' % rname] = y
    dp.to_csv('region_dos.txt', sep='\t', index=False, float_format="%f")
    series(xlabel='Frequency (THz)',
           ylabel='Phonon Density of States',
           datas=datas,
           linewidth=1,
           filename=filename,
           legend=True)
Exemplo n.º 5
0
    def getTempProfile(self, begin, upP, deta, S, tcfactor, zfactor):
        fas = fixAveSpace('tempProfile.txt')
        quants = fas.getConvergence(upP + 1, begin)
        tools.to_txt(['Temperature(K)', 'Jx'], quants, 'convergenceT.txt')
        snapStep = fas.snapStep

        dto = dict(log="step\tkappa\n", plots=[])
        coord, aveN, aveQuants = fas.iterate(begin, self.kappaConverge,
                                             snapStep, upP, deta, S, tcfactor,
                                             zfactor, dto)
        tools.write(dto['log'], 'convergenceK.txt')
        series(
            'x(Augstrom)',
            'temperature(K)',
            dto['plots'],
            'convergenceT.png',
            linewidth=1,
            legend=False)
        filter = aveN[:] > 1  # at least 1 atom in the bin
        aveC = coord[filter]
        aveN = aveN[filter]
        aveTemp = aveQuants[filter, 0]
        avejx = aveQuants[filter, 1]
        nbin = len(avejx)
        data = np.c_[np.arange(nbin) + 1, aveC, aveN, aveTemp, avejx]

        tools.to_txt(['id', 'Coord', 'Count', 'Temp', 'Jx'], data,
                     'tempAve.txt')
        drawTempAve()
        return (aveC, aveN, aveTemp, avejx)
Exemplo n.º 6
0
	def drawDos(self):
		freq,pdos=self.getpdos()
		datas=[(freq,p,'') for p in pdos.T]
		series('Frequency (THz)','Partial Density of States',
		datas=datas,
		filename='partial_dos.png',legend=False,grid=True)
		
		plot((freq,'Frequency (THz)'),(np.sum(pdos,axis=1),'Density of States'),filename='total_dos.png')
Exemplo n.º 7
0
def plot_dos():
    df = pd.read_csv("VDOS.txt", sep=r"[ \t]", engine="python")
    freq, dosx, dosy, dosz = df['Freq_THz'], df['vdos_x'], df['vdos_y'], df[
        'vdos_z']
    series(xlabel='Frequency(THz)',
           ylabel='Phonon Density of States',
           datas=[(freq, dosx, "dos_x"), (freq, dosy, "dos_y"),
                  (freq, dosz, "dos_z")],
           linewidth=0.3,
           filename='VDOS.png')
Exemplo n.º 8
0
    def modefit(self, iqp, ibr, k, freq, q):
        totalStep = self.totalStep
        x = np.linspace(0, 1, totalStep / 2 + 1) * 1 / 2.0 / self.timestep
        q1 = q
        x1 = x
        df = 1.0 / (2.0 * self.timestep) / (self.totalStep / 2)
        span = int(1.5 / df)
        ori = q.argmax()  # int(freq/df)
        low = max(ori - 1 * span, 0)
        hi = min(ori + 1 * span, len(q) - 1)
        filter = range(low, hi)
        x = x[filter]
        q = q[filter] / 1e10
        # q=self.lowess(x,q)
        # q=self.smo(q,3)
        p0 = np.array([x[q.argmax()], 0.01, q[q.argmax()]])  # Initial guess
        p = self.fitLife(x, q, p0)
        p = np.abs(p)
        # to_txt(['Freq','dos'],np.c_[x,q],'SED/single%s%s.txt'%(str(k),freq))

        if self.partsed:
            xv = x  # np.linspace(x.min(),x.max(),1000)
            series(
                xlabel='Frequency (THz)', ylabel='Single Phonon Power Spectrum', datas=[
                    (x, q, "origin"), (xv, self.lorentz(
                        p, xv), "fitting")], linewidth=1, filename='NMA/nmapart_%s_%s_%s_%s.png' %
                (iqp, ibr, str(k), freq))
        if self.totalsed:
            xv = np.linspace(x.min(), x.max(), 100)
            series(
                xlabel='Frequency (THz)',
                ylabel='Single Phonon Power Spectrum',
                datas=[
                    (x1,
                     q1 /
                     1e10,
                     "origin"),
                    (xv,
                     self.lorentz(
                         p,
                         xv),
                        "fitting")],
                linewidth=1,
                filename='NMA/nma_%s_%s_%s_%s.png' %
                (iqp,
                 ibr,
                 str(k),
                 freq))

        v = map(str, list(k) + [freq, p[0], p[1], 1.0 / p[1]])

        c = '\t'.join(v)
        print("[nma]", c)
        return c, q1
Exemplo n.º 9
0
def plot_vacf():
    df = pd.read_csv("VACF.txt", sep=r"[ \t]", engine="python")
    time, vx, vy, vz = df['correlation_time(ps)'], df['vcaf_x'], df[
        'vcaf_y'], df['vcaf_z']
    xx = select(time)
    time = time[xx]
    vx, vy, vz = vx[xx], vy[xx], vz[xx]
    series(xlabel='Correlation Time (ps)',
           ylabel='Normalized Velocity Auto Correlation Function',
           datas=[(time, vx, "vcf_x"), (time, vy, "vcf_y"),
                  (time, vz, "vcf_z")],
           linewidth=0.3,
           filename='VACF.png')
Exemplo n.º 10
0
def plot_atomdos(atoms=range(24), filename='atom_dos.png'):
    import h5py
    db = h5py.File('velocity.hdf5')
    freq = db['/freq']
    datas = []
    for i in atoms:
        dos = db['/dos_atom/%d' % i]
        x, y = getDos(freq, dos)
        datas.append((x, y, "dos_atom_%d" % i))
    series(xlabel='Frequency (THz)',
           ylabel='Phonon Density of States',
           datas=datas,
           linewidth=0.3,
           filename=filename,
           legend=False)
Exemplo n.º 11
0
    def drawDos(self):
        freq, pdos = self.getpdos()
        datas = [(freq, p, '') for p in pdos.T]
        series(
            'Frequency (THz)',
            'Partial Density of States',
            datas=datas,
            filename='partial_dos.png',
            legend=False,
            grid=True)

        plot(
            (freq, 'Frequency (THz)'), (np.sum(pdos, axis=1),
                                        'Density of States'),
            filename='total_dos.png')
Exemplo n.º 12
0
	def sca2(self):
		w=np.loadtxt('BTE.w_final')
		omega=np.loadtxt('BTE.omega')/(2.0*np.pi)
		w[omega<omega.flatten().max()*0.005]=float('nan')
		tao=1.0/w+1e-6
		rt=tao[50:55,:]
		rom=omega[50:55,:]
		data=[]

		n,m=rom.shape
		for i in range(n):

			data.append([rom[i,:],rt[i,:],'b'])
		series(xlabel='Frequency (THz)',
		ylabel='Relaxation Time (ps)',
		datas=data,
		filename='k.png',scatter=True,legend=False,logx=True,logy=True)
Exemplo n.º 13
0
    def reduce(self, n=1, name0=500000):
        name = 'ac' + str(name0) + '.dat'
        m = self.m
        xs = []
        for i in range(n):
            dir = '../%d/' % i
            print dir
            x = np.loadtxt(dir + name)
            xs.append(x[:, 1])
        ts = x[:, 0]
        xs = np.array(xs)
        avexs = xs.mean(axis=0)
        np.savetxt('aveac.txt', np.c_[ts, avexs])

        plot([ts, 'Correlation Time (ps)'],
             [avexs, 'Heat Flut Correlation Function'], 'aveac.png')
        datas = []
        for i in range(n):
            datas.append([ts, xs[i], 'b'])
        series(xlabel='Correlation Time (ps)',
               ylabel='Heat Flut Correlation Function',
               datas=datas,
               filename='ac.png',
               legend=False)
        name = 'tc' + str(name0) + '.dat'
        xs = []
        for i in range(n):
            dir = '../%d/' % i
            print dir
            x = np.loadtxt(dir + name)
            xs.append(x[:, 1])
        ts = x[:, 0]
        xs = np.array(xs)
        avexs = xs.mean(axis=0)
        np.savetxt('avetc.txt', np.c_[ts, avexs])
        plot([ts, 'Correlation Time (ps)'],
             [avexs, 'Thermal Conductivity (W/mK)'], 'avetc.png')
        datas = []
        for i in range(n):
            datas.append([ts, xs[i], 'b'])
        series(xlabel='Correlation Time (ps)',
               ylabel='Thermal Conductivity (W/mK)',
               datas=datas,
               filename='tc.png',
               legend=False)
Exemplo n.º 14
0
    def modefit(self, iqp, ibr, k, freq, q):
        totalStep = self.totalStep
        x = np.linspace(0, 1, totalStep / 2 + 1) * 1 / 2.0 / self.timestep
        q1 = q
        x1 = x
        df = 1.0 / (2.0 * self.timestep) / (self.totalStep / 2)
        span = int(1.5 / df)
        ori = q.argmax()  #int(freq/df)
        low = max(ori - 1 * span, 0)
        hi = min(ori + 1 * span, len(q) - 1)
        filter = range(low, hi)
        x = x[filter]
        q = q[filter] / 1e10
        #q=self.lowess(x,q)
        #q=self.smo(q,3)
        p0 = np.array([x[q.argmax()], 0.01, q[q.argmax()]])  #Initial guess
        p = self.fitLife(x, q, p0)
        p = np.abs(p)
        #to_txt(['Freq','dos'],np.c_[x,q],'SED/single%s%s.txt'%(str(k),freq))

        if self.partsed:
            xv = x  #np.linspace(x.min(),x.max(),1000)
            series(xlabel='Frequency (THz)',
                   ylabel='Single Phonon Power Spectrum',
                   datas=[(x, q, "origin"), (xv, self.lorentz(p,
                                                              xv), "fitting")],
                   linewidth=1,
                   filename='NMA/nmapart_%s_%s_%s_%s.png' %
                   (iqp, ibr, str(k), freq))
        if self.totalsed:
            xv = np.linspace(x.min(), x.max(), 100)
            series(xlabel='Frequency (THz)',
                   ylabel='Single Phonon Power Spectrum',
                   datas=[(x1, q1 / 1e10, "origin"),
                          (xv, self.lorentz(p, xv), "fitting")],
                   linewidth=1,
                   filename='NMA/nma_%s_%s_%s_%s.png' %
                   (iqp, ibr, str(k), freq))

        v = map(str, list(k) + [freq, p[0], p[1], 1.0 / p[1]])

        c = '\t'.join(v)
        print "[nma]", c
        return c, q1
Exemplo n.º 15
0
    def calculateSED(self, k, natom_unitcell):
        totalStep = self.totalStep

        phase = self.getPhase(k, natom_unitcell)
        # phase1=self.getPhase(-np.array(k),natom_unitcell)
        nd = 1
        d = totalStep - nd + 1
        phi = np.zeros(d)
        # print phase
        for j in range(natom_unitcell):
            q = np.zeros([totalStep, 3], dtype=np.complex)
            # q1=np.zeros([totalStep,3],dtype=np.complex)
            for i in range(j, self.natom, natom_unitcell):
                fv = self.velocity_atom(i)
                q += np.array(fv) * phase[i]
                # q+=np.array(fv)*phase1[i]
            for k0 in range(nd):
                u0 = k0 + d
                # if u0>len(q):
                #	u0=len(q)
                u1 = u0 - d
                q0 = fft(q[u1:u0], axis=0)
                # q0=q0[:totalStep/2+1]
                phi += (q0 * q0.conjugate()).real.sum(axis=1)
        phi = phi[:d / 2 + 1] / nd
        # df = 1.0 / (2.0 * self.timestep) / (self.totalStep / 2)
        phi = self.smo(phi, 50)
        if self.totalsed:
            x = np.linspace(0, 1, d / 2 + 1) * 1 / 2.0 / self.timestep

            series(
                xlabel='Frequency (THz)',
                ylabel='Phonon Energy Spectrum',
                datas=[
                    (x,
                     phi,
                     "origin")],
                linewidth=1,
                filename='NMA/sed%s.png' %
                (str(k)),
                logy=True)
        return phi
Exemplo n.º 16
0
 def draw_branch_scatter(self):
     try:
         w = get_w_final('..')
         q = get_qpoints('..')
         qnorm = np.linalg.norm(q, axis=1)
         data = []
         n, m = w.shape
         for i in range(m):
             data.append([qnorm, w[:, i], 'b'])
         series(
             xlabel='|q| (1/nm)',
             ylabel='Scatter Rate (THz)',
             datas=data,
             filename='branchscatter.png',
             scatter=True,
             legend=False,
             logx=True,
             logy=True)
     except Exception as e:
         pass
Exemplo n.º 17
0
    def calculateSED(self, k, natom_unitcell):
        totalStep = self.totalStep

        phase = self.getPhase(k, natom_unitcell)
        phase1 = self.getPhase(-np.array(k), natom_unitcell)
        nd = 1
        d = totalStep - nd + 1
        phi = np.zeros(d)
        #print phase
        for j in range(natom_unitcell):
            q = np.zeros([totalStep, 3], dtype=np.complex)
            #q1=np.zeros([totalStep,3],dtype=np.complex)
            for i in range(j, self.natom, natom_unitcell):
                fv = self.velocity_atom(i)
                q += np.array(fv) * phase[i]
                #q+=np.array(fv)*phase1[i]
            for k0 in range(nd):
                u0 = k0 + d
                #if u0>len(q):
                #	u0=len(q)
                u1 = u0 - d
                q0 = fft(q[u1:u0], axis=0)
                #q0=q0[:totalStep/2+1]
                phi += (q0 * q0.conjugate()).real.sum(axis=1)
        phi = phi[:d / 2 + 1] / nd
        s = np.zeros_like(phi)
        df = 1.0 / (2.0 * self.timestep) / (self.totalStep / 2)
        span = int(1.0 / df)
        phi = self.smo(phi, 50)
        if self.totalsed:
            x = np.linspace(0, 1, d / 2 + 1) * 1 / 2.0 / self.timestep

            series(xlabel='Frequency (THz)',
                   ylabel='Phonon Energy Spectrum',
                   datas=[(x, phi, "origin")],
                   linewidth=1,
                   filename='NMA/sed%s.png' % (str(k)),
                   logy=True)
        return phi
Exemplo n.º 18
0
    def sca2(self):
        w = np.loadtxt('BTE.w_final')
        omega = np.loadtxt('BTE.omega') / (2.0 * np.pi)
        w[omega < omega.flatten().max() * 0.005] = float('nan')
        tao = 1.0 / w + 1e-6
        rt = tao[50:55, :]
        rom = omega[50:55, :]
        data = []

        n, m = rom.shape
        for i in range(n):

            data.append([rom[i, :], rt[i, :], 'b'])
        series(
            xlabel='Frequency (THz)',
            ylabel='Relaxation Time (ps)',
            datas=data,
            filename='k.png',
            scatter=True,
            legend=False,
            logx=True,
            logy=True)
Exemplo n.º 19
0
import pandas as pd
df = pd.read_csv("region_dos.txt", sep=r"[ \t]", engine="python")
npair = len(df.columns) / 2
datas = []
for i in range(npair):
    rname = df.columns[i * 2][5:]
    datas.append((df['freq_' + rname], df['dos_' + rname], "region:" + rname))
dc = pd.read_csv("graphenedos.txt", sep=r"[ \t]", engine="python")
datas.append((dc[dc.columns[0]], dc[dc.columns[1]], 'GNR'))
from aces.graph import series
series(xlabel='Frequency (THz)',
       ylabel='Phonon Density of States',
       datas=datas,
       linewidth=1,
       filename='camparedos.png',
       legend=True,
       xmax=60)
Exemplo n.º 20
0
    def cal_lc(self, r, dr, m):
        from aces.lammpsdata import lammpsdata
        atoms = lammpsdata().set_src('correlation_structure')
        atoms.set_pbc([m.xp, m.yp, m.zp])
        nw = self.totalStep / 2 + 1
        nr = int(r / dr) + 1
        n = len(atoms)
        dis = atoms.get_all_distances(mic=True)
        pos = atoms.positions
        cell = atoms.cell
        symbols = atoms.get_chemical_symbols()
        masses = self.getMassFromLabel(symbols)
        if not exists('g.npz'):
            g = np.zeros([nw, nr], dtype=np.complex)
            ng = np.zeros(nr, dtype=np.int)
            c = self.get_nei(r, dr, pos, cell)
            for i, j, q in c:
                if j == 0:
                    print "center atom:%d/%d" % (i, n)
                aij = np.einsum('ij,ij->i',
                                self.fourier_atom(i).conjugate(),
                                self.fourier_atom(j))
                aii = np.einsum('ij,ij->i',
                                self.fourier_atom(i).conjugate(),
                                self.fourier_atom(i))
                ajj = np.einsum('ij,ij->i',
                                self.fourier_atom(j).conjugate(),
                                self.fourier_atom(j))
                x = aij / np.sqrt(aii * ajj) * np.sqrt(masses[i] * masses[j])
                for ir in q:
                    g[:, ir] += x
                    ng[ir] += 1
            np.savez('g.npz', g=g, ng=ng)
        npz = np.load('g.npz')
        g = npz['g']
        ng = npz['ng']
        rs = (np.arange(nr)) * dr
        rs = rs[:-1]

        def aa(x):
            if x > 0: return 1.0 / x
            else: return 0.0

        ivr = [aa(x) for x in ng]  #1.0/4.0/np.pi/rs**2
        g = np.einsum('ij,j->ij', g, ivr)[:, :-1]
        g = (g.conjugate() * g).real
        imshow(g, 'g.png', extent=[0, 1, 0, 1])
        data = []
        for i in range(0, self.totalStep / 2 + 1, self.totalStep / 20):
            data.append([rs, g[i, :], str(i)])
        series(xlabel='length (A)',
               ylabel='Cross Phonon Energy Spectrum',
               datas=data,
               linewidth=2,
               filename='cpes.png')
        cg = g.cumsum(axis=1)
        imshow(cg, 'cg.png', extent=[0, 1, 0, 1])
        cg = np.einsum('ij,i->ij', cg, 1.0 / cg[:, -1])
        data = []
        for i in range(0, self.totalStep / 2 + 1, self.totalStep / 10):
            data.append([rs, cg[i, :], str(i)])
        series(xlabel='length (A)',
               ylabel='Cross Phonon Energy Spectrum',
               datas=data,
               linewidth=2,
               filename='cges.png')
        lc = ((cg < 0.80).sum(axis=1)) * dr
        x = np.linspace(0, 1, self.totalStep / 2 + 1) * 1 / 2.0 / self.timestep
        plot([x, 'Frequency (THz)'], [lc, 'Coherence length(A)'],
             'coherence.png')
        return lc
import numpy as np
data = []
kapitza = []
i = -1
for dT in range(0, 60, 10):
    i += 1
    p = np.loadtxt(str(i) + '/tempAve.txt', skiprows=1)
    data.append([p[:, 1], p[:, 3], 'dT=' + str(dT)])
    dataT = p[30, 3] - p[20, 3]
    j = (p[:, 4] * p[:, 2]).sum() / p[:, 2].sum()
    kapitza.append([dT, np.abs(j) / dataT])
kapitza = np.array(kapitza)
from aces.graph import series, plot, fig, pl
series(xlabel='x (Angstrom)',
       ylabel='Temperature (K)',
       datas=data,
       filename='profile.png')
with fig('kapitza.png'):
    x = kapitza[:, 0]
    y = kapitza[:, 1]
    pl.plot(x,
            y,
            marker='v',
            ms=12,
            mec='b',
            mfc='w',
            mfcalt="w",
            mew=1.5,
            linewidth=1)
    pl.xlabel('dT(K)')
    pl.ylabel('Kapitza Conductance (W/m2K)')
Exemplo n.º 22
0
    def postold(self):
        try:
            df = pd.read_csv(
                "BTE.kappa_scalar",
                sep=r"[ \t]+",
                header=None,
                names=['step', 'kappa'],
                engine='python')
            ks = np.array(df['kappa'])
            plot(
                (np.array(df['step']), 'Iteration Step'),
                (ks, 'Thermal Conductivity (W/mK)'),
                'kappa_scalar.png',
                grid=True,
                linewidth=2)
        except Exception as e:
            print(e)

        try:
            df = pd.read_csv(
                "BTE.cumulative_kappa_scalar",
                sep=r"[ \t]+",
                header=None,
                names=['l', 'kappa'],
                engine='python')
            ks = np.array(df['kappa'])
            plot(
                (np.array(df['l']),
                 'Cutoff Mean Free Path for Phonons (Angstrom)'),
                (ks, 'Thermal Conductivity (W/mK)'),
                'cumulative_kappa_scalar.png',
                grid=True,
                linewidth=2,
                logx=True)
        except Exception as e:
            print(e)
        try:
            omega = np.loadtxt('BTE.omega') / (2.0 * np.pi)
            kappa = np.loadtxt('BTE.kappa')[-1, 1:]
            kappa = np.einsum('jji', kappa.reshape([3, 3, -1])) / 3.0
            plot(
                (np.arange(len(omega[0])), 'Band'),
                (kappa, 'Thermal Conductivity (W/mK)'),
                'kappa_band.png',
                grid=True,
                linewidth=2)
            plot(
                (np.arange(len(omega[0])), 'Band'),
                (kappa.cumsum(), 'Thermal Conductivity (W/mK)'),
                'cumulative_kappa_band.png',
                grid=True,
                linewidth=2)
        except Exception as e:
            print(e)
        try:
            w = np.loadtxt('BTE.w_final')
            w = np.abs(w)
            w[omega < omega.flatten().max() * 0.005] = float('nan')
            plot(
                (omega.flatten(), 'Frequency (THz)'), (w.flatten(),
                                                       'Scatter Rate (THz)'),
                'scatter_freq.png',
                grid=True,
                scatter=True,
                logy=True)
            tao = 1.0 / w + 1e-6
            with fig('tao_freq.png'):
                pl.semilogy(
                    omega.flatten(),
                    tao.flatten(),
                    linestyle='.',
                    marker='.',
                    color='r',
                    markersize=5)
                pl.xlabel('Frequency (THz)')
                pl.ylabel('Relaxation Time (ps)')
                pl.grid(True)
                pl.xlim([0, omega.max()])
                # pl.ylim([0,tao.flatten().max()])
            to_txt(['freq', 'tao'],
                   np.c_[omega.flatten(), tao.flatten()], 'tao_freq.txt')
        except Exception as e:
            print(e)
        """
        if not exists('relaxtime'):mkdir('relaxtime')
        cd('relaxtime')
        for i,om in enumerate(omega[:6]):
            print "q : ",i
            plot((om,'Frequency (THz)'),(tao[i],'Relaxation Time (ps)'),
            'tao_freq_q%d.png'%i,grid=True,scatter=True,logx=True,logy=True)
        cd('..')
        """

        try:
            v = np.loadtxt(open('BTE.v'))
            n, m = v.shape
            v = v.reshape([n, 3, m / 3])
            v = np.linalg.norm(v, axis=1)
            y = (v.flatten(), 'Group Velocity (nm/ps)')
            plot(
                (omega.flatten(), 'Frequency (THz)'),
                y,
                'v_freq.png',
                grid=True,
                scatter=True)
            to_txt(['freq', 'vg'],
                   np.c_[omega.flatten(), v.flatten()], 'v_freq.txt')
        except Exception as e:
            print(e)
        try:
            l = v * tao
            l[l < 1e-6] = None
            plot(
                (omega.flatten(), 'Frequency (THz)'), (l.flatten(),
                                                       'Mean Free Path (nm)'),
                'lamda_freq.png',
                grid=True,
                scatter=True,
                logy=True,
                logx=True,
                xmin=0)
            to_txt(['freq', 'mfp'],
                   np.c_[omega.flatten(), l.flatten()], 'lamda_freq.txt')
        except Exception as e:
            print(e)
        try:
            q = np.loadtxt(open('BTE.qpoints'))
            qnorm = np.linalg.norm(q[:, -3:], axis=1)
            data = []
            n, m = w.shape
            for i in range(m):
                data.append([qnorm, w[:, i], 'b'])
            series(
                xlabel='|q| (1/nm)',
                ylabel='Scatter Rate (THz)',
                datas=data,
                filename='branchscatter.png',
                scatter=True,
                legend=False,
                logx=True,
                logy=True)
        except Exception as e:
            print(e)
Exemplo n.º 23
0
	def postnew(self):
		cd('T300K')
		try:
			df=pd.read_csv("BTE.kappa_scalar",sep=r"[ \t]+",header=None,names=['step','kappa'],engine='python');
			ks=np.array(df['kappa'])
			plot((np.array(df['step']),'Iteration Step'),(ks,'Thermal Conductivity (W/mK)'),'kappa_scalar.png',grid=True,linewidth=2)
		except Exception as e:
			print e

		try:
			df=pd.read_csv("BTE.cumulative_kappa_scalar",sep=r"[ \t]+",header=None,names=['l','kappa'],engine='python');
			ks=np.array(df['kappa'])
			plot((np.array(df['l']),'Cutoff Mean Free Path for Phonons (Angstrom)'),(ks,'Thermal Conductivity (W/mK)'),'cumulative_kappa_scalar.png',grid=True,linewidth=2,logx=True)	
		except Exception as e:
			print e
		try:
			omega=np.loadtxt('../BTE.omega')/(2.0*np.pi)
			kappa=np.loadtxt('BTE.kappa')[-1,1:]
			kappa=np.einsum('jji',kappa.reshape([3,3,-1]))/3.0
			plot((np.arange(len(omega[0])),'Band'),(kappa,'Thermal Conductivity (W/mK)'),'kappa_band.png',grid=True,linewidth=2)
			plot((np.arange(len(omega[0])),'Band'),(kappa.cumsum(),'Thermal Conductivity (W/mK)'),'cumulative_kappa_band.png',grid=True,linewidth=2)
		except Exception as e:
			print e
		try:
			w=np.loadtxt('BTE.w_final')[:,1]
			w=np.abs(w)
			q=np.loadtxt(open('../BTE.qpoints'))
			n=len(q)
			w=w.T.reshape([-1,n])
			w=np.einsum('jk->kj',w)
			w.flags.writeable = True
			print w.shape,omega.shape
			w[omega<omega.flatten().max()*0.005]=float('nan')
			plot((omega.flatten(),'Frequency (THz)'),(w.flatten(),'Scatter Rate (THz)'),'scatter_freq.png',grid=True,scatter=True,logy=True)
			tao=1.0/w+1e-6
			plot((omega.flatten(),'Frequency (THz)'),(tao.flatten(),'Relaxation Time (ps)'),'tao_freq.png',grid=True,scatter=True,logy=True)
			to_txt(['freq','tao'],np.c_[omega.flatten(),tao.flatten()],'tao_freq.txt')
		except Exception as e:
			print e
		try:
	
			v=np.loadtxt(open('../BTE.v'))
			q=np.loadtxt(open('../BTE.qpoints'))
			n=len(q)
			v=v.T.reshape([3,-1,n])
			v=np.einsum('ijk->kji',v)
			v=np.linalg.norm(v,axis=-1)
			plot((omega.flatten(),'Frequency (THz)'),(v.flatten(),'Group Velocity (nm/ps)'),'v_freq.png',grid=True,scatter=True)
			to_txt(['freq','vg'],np.c_[omega.flatten(),v.flatten()],'v_freq.txt')
	
			
			l=v*tao
			plot((omega.flatten(),'Frequency (THz)'),(l.flatten(),'Mean Free Path (nm)'),'lamda_freq.png',grid=True,scatter=True)
			to_txt(['freq','mfp'],np.c_[omega.flatten(),l.flatten()],'lamda_freq.txt')
		except Exception as e:
			print e
		try:
			g=np.loadtxt('../BTE.gruneisen')
			plot((omega.flatten(),'Frequency (THz)'),(g.flatten(),'Gruneisen'),'gruneisen_freq.png',grid=True,scatter=True)
			with fig('gruneisen_freq.png'):
				pl.scatter(omega.flatten(),g.flatten(),marker='.',color='r',s =50)
				pl.xlabel('Frequency (THz)')
				pl.ylabel('Gruneisen Coeffecient')
				#pl.grid(True)
				pl.xlim([0,omega.max()])
				pl.ylim([-10,5])
				#pl.tick_params(axis='both', which='major', labelsize=14)
			to_txt(['freq','gruneisen'],np.c_[omega.flatten(),g.flatten()],'gruneisen_freq.txt')
			g=np.loadtxt('../BTE.P3')

			with fig('p3_freq.png'):
				pl.scatter(omega.flatten(),g.flatten()*1e6,marker='.',color='r',s =50)
				pl.xlabel('Frequency (THz)')
				pl.ylabel('P3 $(\\times 10^{-6})$')
				#pl.grid(True)
				pl.xlim([0,omega.max()])
				pl.ylim([0,g.max()*1e6])

			to_txt(['freq','p3'],np.c_[omega.flatten(),g.flatten()],'p3_freq.txt')
		except Exception as e:
			print e
		try:	
			q=np.loadtxt(open('../BTE.qpoints'))
			qnorm=np.linalg.norm(q[:,-3:],axis=1)
			data=[]
			n,m=w.shape
			for i in range(m):
				data.append([qnorm,w[:,i],'b'])
			series(xlabel='|q| (1/nm)',
			ylabel='Scatter Rate (THz)',
			datas=data,
			filename='branchscatter.png',scatter=True,legend=False,logx=True,logy=True)
		except Exception as e:
			pass
		cd('..')
Exemplo n.º 24
0
	def postsheng(self):
		try:
			df=pd.read_csv("BTE.kappa_scalar",sep=r"[ \t]+",header=None,names=['step','kappa'],engine='python');
			ks=np.array(df['kappa'])
			plot((np.array(df['step']),'Iteration Step'),(ks,'Thermal Conductivity (W/mK)'),'kappa_scalar.png',grid=True,linewidth=2)
		except Exception as e:
			print e	

		try:
			df=pd.read_csv("BTE.cumulative_kappa_scalar",sep=r"[ \t]+",header=None,names=['l','kappa'],engine='python');
			ks=np.array(df['kappa'])
			plot((np.array(df['l']),'Cutoff Mean Free Path for Phonons (Angstrom)'),(ks,'Thermal Conductivity (W/mK)'),'cumulative_kappa_scalar.png',grid=True,linewidth=2,logx=True)	
		except Exception as e:
			print e	
		try:
			omega=np.loadtxt('BTE.omega')/(2.0*np.pi)
			kappa=np.loadtxt('BTE.kappa')[-1,1:]
			kappa=np.einsum('jji',kappa.reshape([3,3,-1]))/3.0
			plot((np.arange(len(omega[0])),'Band'),(kappa,'Thermal Conductivity (W/mK)'),'kappa_band.png',grid=True,linewidth=2)
			plot((np.arange(len(omega[0])),'Band'),(kappa.cumsum(),'Thermal Conductivity (W/mK)'),'cumulative_kappa_band.png',grid=True,linewidth=2)
		except Exception as e:
			print e	
		try:
			w=np.loadtxt('BTE.w_final')
			w=np.abs(w)
			w[omega<omega.flatten().max()*0.005]=float('nan')
			plot((omega.flatten(),'Frequency (THz)'),(w.flatten(),'Scatter Rate (THz)'),'scatter_freq.png',grid=True,scatter=True,logy=True)
			tao=1.0/w+1e-6
			with fig('tao_freq.png'):
				pl.semilogy(omega.flatten(),tao.flatten(),linestyle='.',marker='.',color='r',markersize =5)
				pl.xlabel('Frequency (THz)')
				pl.ylabel('Relaxation Time (ps)')
				pl.grid(True)
				pl.xlim([0,omega.max()])
				#pl.ylim([0,tao.flatten().max()])
			to_txt(['freq','tao'],np.c_[omega.flatten(),tao.flatten()],'tao_freq.txt')
		except Exception as e:
			print e	
		"""
		if not exists('relaxtime'):mkdir('relaxtime')
		cd('relaxtime')
		for i,om in enumerate(omega[:6]):
			print "q : ",i
			plot((om,'Frequency (THz)'),(tao[i],'Relaxation Time (ps)'),'tao_freq_q%d.png'%i,grid=True,scatter=True,logx=True,logy=True)
		cd('..')
		"""

		try:
			v=np.loadtxt(open('BTE.v'))
			n,m=v.shape
			v=v.reshape([n,3,m/3])
			v=np.linalg.norm(v,axis=1)
			plot((omega.flatten(),'Frequency (THz)'),(v.flatten(),'Group Velocity (nm/ps)'),'v_freq.png',grid=True,scatter=True)
			to_txt(['freq','vg'],np.c_[omega.flatten(),v.flatten()],'v_freq.txt')
		except Exception as e:
			print e	
		try:	
			l=v*tao
			l[l<1e-6]=None
			plot((omega.flatten(),'Frequency (THz)'),(l.flatten(),'Mean Free Path (nm)'),'lamda_freq.png',grid=True,scatter=True,logy=True,logx=True,xmin=0)
			to_txt(['freq','mfp'],np.c_[omega.flatten(),l.flatten()],'lamda_freq.txt')
		except Exception as e:
			print e	
		try:	
			q=np.loadtxt(open('BTE.qpoints'))
			qnorm=np.linalg.norm(q[:,-3:],axis=1)
			data=[]
			n,m=w.shape
			for i in range(m):
				data.append([qnorm,w[:,i],'b'])
			series(xlabel='|q| (1/nm)',
			ylabel='Scatter Rate (THz)',
			datas=data,
			filename='branchscatter.png',scatter=True,legend=False,logx=True,logy=True)
		except Exception as e:
			print e	
Exemplo n.º 25
0
import pandas as pd
df=pd.read_csv("region_dos.txt",sep=r"[ \t]",engine="python");
npair=len(df.columns)/2
datas=[]
for i in range(npair):
	rname=df.columns[i*2][5:]
	datas.append((df['freq_'+rname],df['dos_'+rname],"region:"+rname))
dc=pd.read_csv("graphenedos.txt",sep=r"[ \t]",engine="python");
datas.append((dc[dc.columns[0]],dc[dc.columns[1]],'GNR'))
from aces.graph import series
series(xlabel='Frequency (THz)',
	ylabel='Phonon Density of States',
	datas=datas
	,linewidth=1
	,filename='camparedos.png',legend=True,xmax=60)
Exemplo n.º 26
0
datas=[]
import pandas as pd
import numpy as np
from aces.tools import *
youngs=[]
temps=range(200,300,10)
for i in range(10):
	print i
	cd(str(i))
	from aces.App import App
	App().runner.post()
	
	df=pd.read_csv("cal_stress.txt",sep=r"[ \t]",engine="python");
	datas.append([df['Strain'],df['Stress_GPa'],str(temps[i])+'K'	])
	youngs.append(float(read("YoungsModulus.txt")))
	cd('..')
from aces.graph import series,plot
plot((np.array(temps),'Temperature (K)'),(np.array(youngs),'Young\'s Modulus (GPa)'),'youngs.png')
series(xlabel='Strain',
	ylabel='Stress (GPa)',
	datas=datas
	,linewidth=1
	,filename='stress_strain.png',legend=True)
import pandas as pd
import numpy as np
from aces.tools import *
youngs = []
temps = np.arange(100, 300, 20)
sel = np.arange(0, 10, 2)
for i in sel:
    print i
    cd(str(i * 2 + 1))
    #from aces.App import App
    #App().runner.post()

    df = pd.read_csv("cal_stress.txt", sep=r"[ \t]", engine="python")
    datas.append([df['Strain'], df['Stress_GPa'], str(temps[i]) + 'K'])
    cd('..')
for i in np.arange(0, 10):
    print i
    cd(str(i * 2))
    youngs.append(float(read("YoungsModulus.txt")))
    cd('..')
from aces.graph import series, plot

series(xlabel='Strain',
       ylabel='Stress (GPa)',
       datas=datas,
       linewidth=1,
       filename='stress_strain.png',
       legend=True,
       grid=True)
plot((np.array(temps), 'Temperature (K)'),
     (np.array(youngs), 'Young\'s Modulus (GPa)'), 'youngs.png')
Exemplo n.º 28
0
    def cal_lc(self, r, dr, m):
        from aces.lammpsdata import lammpsdata
        atoms = lammpsdata().set_src('correlation_structure')
        atoms.set_pbc([m.xp, m.yp, m.zp])
        nw = self.totalStep / 2 + 1
        nr = int(r / dr) + 1
        n = len(atoms)
        pos = atoms.positions
        cell = atoms.cell
        symbols = atoms.get_chemical_symbols()
        masses = self.getMassFromLabel(symbols)
        if not tl.exists('g.npz'):
            g = np.zeros([nw, nr], dtype=np.complex)
            ng = np.zeros(nr, dtype=np.int)
            c = self.get_nei(r, dr, pos, cell)
            for i, j, q in c:
                if j == 0:
                    print("center atom:%d/%d" % (i, n))
                aij = np.einsum(
                    'ij,ij->i',
                    self.fourier_atom(i).conjugate(),
                    self.fourier_atom(j))
                aii = np.einsum(
                    'ij,ij->i',
                    self.fourier_atom(i).conjugate(),
                    self.fourier_atom(i))
                ajj = np.einsum(
                    'ij,ij->i',
                    self.fourier_atom(j).conjugate(),
                    self.fourier_atom(j))
                x = aij / np.sqrt(aii * ajj) * np.sqrt(masses[i] * masses[j])
                for ir in q:
                    g[:, ir] += x
                    ng[ir] += 1
            np.savez('g.npz', g=g, ng=ng)
        npz = np.load('g.npz')
        g = npz['g']
        ng = npz['ng']
        rs = (np.arange(nr)) * dr
        rs = rs[:-1]

        def aa(x):
            if x > 0:
                return 1.0 / x
            else:
                return 0.0
        ivr = [aa(x) for x in ng]  # 1.0/4.0/np.pi/rs**2
        g = np.einsum('ij,j->ij', g, ivr)[:, :-1]
        g = (g.conjugate() * g).real
        imshow(g, 'g.png', extent=[0, 1, 0, 1])
        data = []
        for i in range(0, self.totalStep / 2 + 1, self.totalStep / 20):
            data.append([rs, g[i, :], str(i)])
        series(xlabel='length (A)',
               ylabel='Cross Phonon Energy Spectrum',
               datas=data, linewidth=2, filename='cpes.png')
        cg = g.cumsum(axis=1)
        imshow(cg, 'cg.png', extent=[0, 1, 0, 1])
        cg = np.einsum('ij,i->ij', cg, 1.0 / cg[:, -1])
        data = []
        for i in range(0, self.totalStep / 2 + 1, self.totalStep / 10):
            data.append([rs, cg[i, :], str(i)])
        series(xlabel='length (A)',
               ylabel='Cross Phonon Energy Spectrum',
               datas=data, linewidth=2, filename='cges.png')
        lc = ((cg < 0.80).sum(axis=1)) * dr
        x = np.linspace(0, 1, self.totalStep / 2 + 1) * 1 / 2.0 / self.timestep
        plot([x, 'Frequency (THz)'], [lc, 'Coherence length(A)'], 'coherence.png')
        return lc