Ejemplo n.º 1
0
def structure2aSys(structure,idoffset=1):
    """
    Converts Structure object of pymatgen to NAPSystem object in nap.

    Args:
        structure (Structure): pymatgen Structure object to be converted
        to NAPSystem object..

    Returns:
        aSys (NAPSystem): 
    """
    lattice= structure.lattice
    alc= 1.0
    a1= np.array(lattice.matrix[0])
    a2= np.array(lattice.matrix[1])
    a3= np.array(lattice.matrix[2])
    #... rescale a? vectors
    a1= a1/alc
    a2= a2/alc
    a3= a3/alc
    aSys= NAPSystem()
    aSys.set_lattice(alc,a1,a2,a3)
    for ia in range(structure.num_sites):
        ai= Atom()
        si= structure[ia]
        crd= si.frac_coords
        ai.set_pos(crd[0],crd[1],crd[2])
        sid= structure.symbol_set.index(si.species_string)+idoffset
        ai.set_sid(sid)
        ai.set_id(ia+1)
        aSys.add_atom(ai)
    return aSys
Ejemplo n.º 2
0
def make_sc(latconst=1.0):
    """
    Make a cell of simple cubic structure.
    """
    s= NAPSystem(specorder=_default_specorder)
    #...lattice
    a1= np.array([ 1.0, 0.0, 0.0 ])
    a2= np.array([ 0.0, 1.0, 0.0 ])
    a3= np.array([ 0.0, 0.0, 1.0 ])
    s.set_lattice(latconst,a1,a2,a3)
    p=[0.00, 0.00, 0.00]
    atom= Atom()
    atom.set_pos(p[0],p[1],p[2])
    atom.set_symbol(_default_specorder[0])
    s.add_atom(atom)
    return s
Ejemplo n.º 3
0
def make_bcc(latconst=1.0):
    """
    Make a cell of bcc structure.
    """
    s= NAPSystem(specorder=_default_specorder)
    #...lattice
    a1= np.array([ 1.0, 0.0, 0.0 ])
    a2= np.array([ 0.0, 1.0, 0.0 ])
    a3= np.array([ 0.0, 0.0, 1.0 ])
    s.set_lattice(latconst,a1,a2,a3)
    positions=[(0.00, 0.00, 0.00),
               (0.50, 0.50, 0.50)]
    for p in positions:
        atom= Atom()
        atom.set_pos(p[0],p[1],p[2])
        atom.set_symbol(_default_specorder[0])
        s.add_atom(atom)
    return s
Ejemplo n.º 4
0
def doc_to_pos(doc,conf):
    """
    Make a pos file, which has pmd format, from a document in MongoDB.
    """
    psys= NAPSystem()
    matrix=doc['calculations'][-1]['output']['crystal']['lattice']['matrix']
    a1= matrix[0]
    a2= matrix[1]
    a3= matrix[2]
    psys.set_lattice(1.0,a1,a2,a3)

    species_ids=conf['species_ids']

    sites= doc['calculations'][-1]['output']['crystal']['sites']
    for site in sites:
        ra= site['abc']
        ai= Atom()
        ai.set_pos(ra[0],ra[1],ra[2])
        ai.set_sid(species_ids[site['species'][0]['element']])
        psys.add_atom(ai)
    return psys
Ejemplo n.º 5
0
def structure2aSys(structure, idoffset=1):
    """
    Converts Structure object of pymatgen to NAPSystem object in nap.

    Args:
        structure (Structure): pymatgen Structure object to be converted
        to NAPSystem object..

    Returns:
        aSys (NAPSystem): 
    """
    lattice = structure.lattice
    alc = 1.0
    a1 = np.array(lattice.matrix[0])
    a2 = np.array(lattice.matrix[1])
    a3 = np.array(lattice.matrix[2])
    #... rescale a? vectors
    a1 = a1 / alc
    a2 = a2 / alc
    a3 = a3 / alc
    aSys = NAPSystem()
    aSys.set_lattice(alc, a1, a2, a3)
    for ia in range(structure.num_sites):
        ai = Atom()
        si = structure[ia]
        crd = si.frac_coords
        ai.set_pos(crd[0], crd[1], crd[2])
        sid = structure.symbol_set.index(si.species_string) + idoffset
        ai.set_sid(sid)
        ai.set_id(ia + 1)
        aSys.add_atom(ai)
    return aSys
Ejemplo n.º 6
0
def rdf_average(infiles,nspcs,nr,ffmt=None,dr=0.1,rmax=3.0,average=True,
                normalize=True):
    agr= np.zeros((nspcs+1,nspcs+1,nr),dtype=float)
    nsum= 0
    for infname in infiles:
        if not os.path.exists(infname):
            print("[Error] File, {0}, does not exist !!!".format(infname))
            sys.exit()
        asys= NAPSystem(fname=infname,ffmt=ffmt)
        print(' File =',infname)
        rd,gr,n= rdf(asys,nspcs,dr,rmax,normalize=normalize)
        nsum += n
        agr += gr
    # agr /= len(infiles)
    if average:
        agr /= nsum
    return rd,agr
Ejemplo n.º 7
0
def adf_average(infiles, ffmt='akr', dang=1.0, rcut=3.0, id0=0, id1=0, id2=0):
    na = int(180.0 / dang) + 1
    df = np.zeros(na, dtype=float)
    aadf = np.zeros(na, dtype=float)
    nsum = 0
    for infname in infiles:
        if not os.path.exists(infname):
            print "[Error] File, {0}, does not exist !!!".format(infname)
            sys.exit()
        asys = NAPSystem(fname=infname, ffmt=ffmt)
        print ' infname=', infname
        angd, df, n = adf(asys, dang, rcut, id0, id1, id2)
        aadf += df
        nsum += n
    #aadf /= len(infiles)
    aadf /= nsum
    return angd, aadf
Ejemplo n.º 8
0
def doc_to_pos(doc, conf):
    """
    Make a pos file, which has pmd format, from a document in MongoDB.
    """
    psys = NAPSystem()
    matrix = doc['calculations'][-1]['output']['crystal']['lattice']['matrix']
    a1 = matrix[0]
    a2 = matrix[1]
    a3 = matrix[2]
    psys.set_lattice(1.0, a1, a2, a3)

    species_ids = conf['species_ids']

    sites = doc['calculations'][-1]['output']['crystal']['sites']
    for site in sites:
        ra = site['abc']
        ai = Atom()
        ai.set_pos(ra[0], ra[1], ra[2])
        ai.set_sid(species_ids[site['species'][0]['element']])
        psys.add_atom(ai)
    return psys
Ejemplo n.º 9
0
#!/bin/env python

import sys,os
from napsys import NAPSystem

infname= sys.argv[1]
print 'input file: ',infname
aSys= NAPSystem()
aSys.read_akr(infname)
natm= len(aSys.atoms)

outfname= infname+".voro"
f= open(outfname,'w')
alc= aSys.alc
ax= aSys.a1[0]
ay= aSys.a2[1]
az= aSys.a3[2]
for ia in range(natm):
    pos= aSys.atoms[ia].pos
    f.write(' {0:4d}'.format(ia+1))
    f.write(' {0:10.3f}'.format(alc*ax*pos[0]))
    f.write(' {0:10.3f}'.format(alc*ay*pos[1]))
    f.write(' {0:10.3f}'.format(alc*az*pos[2]))
    f.write('\n')
f.close()

print 'Use voro++ as follows:'
cmd= 'voro++ -p -c " %i %q %v %s %A"' \
    +' 0.0 {0:5.1f}'.format(alc*ax) \
    +' 0.0 {0:5.1f}'.format(alc*ay) \
    +' 0.0 {0:5.1f}'.format(alc*az) \
Ejemplo n.º 10
0
write_banner()

nsmpl = options.nsmpl
print ' num of points = ', nsmpl
rcut = options.rcut
print ' rcut          = ', rcut, ' Ang.'
rmin = options.rmin
print ' rmin          = ', rmin, ' Ang.'
sid1 = options.sid1
print ' sid1          = ', sid1
sid2 = options.sid2
print ' sid2          = ', sid2
pmdexec = options.pmdexec

asys = NAPSystem()
# system size is bigger than 2*rcut
a1 = np.array([2.0, 0.0, 0.0])
a2 = np.array([0.0, 1.0, 0.0])
a3 = np.array([0.0, 0.0, 1.0])
alc = rcut
asys.set_lattice(alc, a1, a2, a3)

atom1 = Atom()
atom2 = Atom()
atom1.set_pos(0.0, 0.0, 0.0)
atom1.set_id(1)
atom1.set_sid(sid1)
asys.add_atom(atom1)
atom2.set_pos(0.5, 0.0, 0.0)
atom2.set_id(2)
Ejemplo n.º 11
0
    print(' [Error] ntwindow <= 0 !!!')
    print('  Chech the parameters nmeasure and nshift, and input files.')
    sys.exit()

#...make output data files
outfname = 'dat.msd-{0}'.format(id)
outfile = open(outfname, 'w')

p0 = np.zeros((nmeasure, 3))
pp = np.zeros(3)
msd = np.zeros((len(infiles), nmeasure, 3))
npbc = np.zeros((3, ), dtype=int)
hmat = np.zeros((3, 3))
for ifile in range(len(infiles)):
    file = infiles[ifile]
    system = NAPSystem()
    system.read_akr(file)
    hmat[0] = system.a1 * system.alc
    hmat[1] = system.a2 * system.alc
    hmat[2] = system.a3 * system.alc
    #...human-readable ID to computer-oriented ID
    i = id - 1
    ai = system.atoms[i]
    pi = ai.pos
    if ifile == 0:
        pp = pi
    else:
        #...correct periodic motion
        dev = pi - pp
        if dev[0] > 0.5:
            npbc[0] += -1
Ejemplo n.º 12
0
for file in args:
    infiles.append(file)
infiles.sort()

#...compute sampling time-window from nmeasure and nshift
ntwindow= len(infiles) -(nmeasure-1)*nshift
print ' ntwindow=',ntwindow
if ntwindow <= 0:
    print ' [Error] ntwindow <= 0 !!!'
    print '  Chech the parameters nmeasure and nshift, and input files.'
    sys.exit()


#...set global values
infile= infiles[0]
system=NAPSystem()
system.read_akr(infile)
natm= len(system.atoms)
psid= np.zeros((natm,),dtype=np.int8)
nas= 0
for ia in range(natm):
    if sid == 0:
        psid[ia] = 1
        nas += 1
    elif system.atoms[ia].sid == sid:
        psid[ia] = 1
        nas += 1
print ' num of all atoms = ',natm
print ' num of atoms to be considered = ',nas

print ' accumurating data',
Ejemplo n.º 13
0
                  help="cutoff radius of the potential.")
parser.add_option("--pmdexec",
                  dest="pmdexec",
                  type="string",
                  default='../pmd/pmd',
                  help="path to the pmd executable.")
(options, args) = parser.parse_args()

displace = options.displace
print ' displacement = ', displace, ' Ang.'
rcut = options.rcut
print ' rcut         = ', rcut, ' Ang.'
pmdexec = options.pmdexec
infname = args[0]

sys0 = NAPSystem()
sys0.read_pmd(infname)
sys0.write_POSCAR()
print ' POSCAR was written.'

natm0 = sys0.num_atoms()

h0 = np.zeros((3, 3))
h0[0] = sys0.a1 * sys0.alc
h0[1] = sys0.a2 * sys0.alc
h0[2] = sys0.a3 * sys0.alc
n1, n2, n3 = calc_extention_ratio(h0, rcut)

r1 = 2 * n1 + 1
r2 = 2 * n2 + 1
r3 = 2 * n3 + 1
Ejemplo n.º 14
0
if __name__ == "__main__":

    args = docopt(__doc__)

    infmt = args['--in-format']
    outfmt = args['--out-format']
    infname = args['INFILE']
    outfname = args['OUTFILE']
    specorder = args['--specorder'].split(',')
    strain = float(args['--strain'])

    print('args:')
    print(args)

    psys0 = NAPSystem(fname=infname, ffmt=infmt, specorder=specorder)

    if not outfmt == None:
        outfmt = parse_filename(outfname)

    if args['isotropic']:
        psys = isotropic(psys0, strain)
    elif args['uniaxial']:
        psys = uniaxial(psys0, strain)[0]
    elif args['shear']:
        psys = shear(psys0, strain)[0]

    if outfmt == 'pmd':
        psys.write_pmd(outfname)
    elif outfmt == 'smd':
        psys.write_pmd(outfname)
Ejemplo n.º 15
0
import numpy as np

sys.path.append(__file__)
from atom import Atom
from napsys import NAPSystem

__author__ = 'Ryo KOBAYASHI'
__version__ = '160510'

if __name__ == '__main__':
    
    args = docopt(__doc__,version=__version__)
    infile = args['INFILE']
    specorder = args['--specorder'].split(',')

    psys = NAPSystem(fname=infile,specorder=specorder)
    psys.assign_pbc()
    psys.a1 = psys.a1 *psys.alc
    psys.a2 = psys.a2 *psys.alc
    psys.a3 = psys.a3 *psys.alc
    psys.alc = 1.0
    print('a1  = ',psys.a1)
    print('a2  = ',psys.a2)
    print('a3  = ',psys.a3)
    
    pos = psys.get_real_positions()
    spos = psys.get_scaled_positions()
    for i in range(min(len(psys.atoms),100)):
        a = psys.atoms[i]
        print('{0:5d} {1:s}'.format(a.id,a.symbol)
              +' {0:12.5f} {1:12.5f} {2:12.5f}'.format(spos[i,0],
Ejemplo n.º 16
0
    n3= int(2.0*rcut/vol*area12)+1
    return n1,n2,n3


################################################ Main routine ##########
if __name__ == "__main__":

    args= docopt(__doc__)
    rcut= float(args['--cutoff'])
    pmddir= args['--pmddir']
    execname= args['--exec']
    infname= args['PMDFILE']
    plot= args['--plot']
    #print(args)
    
    sys0= NAPSystem()
    sys0.read_pmd(infname)
    sys0.write_POSCAR()
    print(' POSCAR was written.')
    
    natm0= sys0.num_atoms()
    
    h0=np.zeros((3,3))
    h0[0]= sys0.a1 *sys0.alc
    h0[1]= sys0.a2 *sys0.alc
    h0[2]= sys0.a3 *sys0.alc
    n1,n2,n3= calc_extention_ratio(h0,rcut)
    print("n1,n2,n3 = {0:d} {1:d} {2:d}".format(n1,n2,n3))

    # Make displaced POSCARS via phonopy
    os.system("phonopy -d --dim=\"{0:d} {1:d} {2:d}\"".format(n1,n2,n3))
Ejemplo n.º 17
0
write_banner()

nsmpl = options.nsmpl
print " num of points = ", nsmpl
rcut = options.rcut
print " rcut          = ", rcut, " Ang."
rmin = options.rmin
print " rmin          = ", rmin, " Ang."
sid1 = options.sid1
print " sid1          = ", sid1
sid2 = options.sid2
print " sid2          = ", sid2
pmdexec = options.pmdexec

asys = NAPSystem()
# system size is bigger than 2*rcut
a1 = np.array([2.0, 0.0, 0.0])
a2 = np.array([0.0, 1.0, 0.0])
a3 = np.array([0.0, 0.0, 1.0])
alc = rcut
asys.set_lattice(alc, a1, a2, a3)

atom1 = Atom()
atom2 = Atom()
atom1.set_pos(0.0, 0.0, 0.0)
atom1.set_id(1)
atom1.set_sid(sid1)
asys.add_atom(atom1)
atom2.set_pos(0.5, 0.0, 0.0)
atom2.set_id(2)
Ejemplo n.º 18
0
parser.add_option("-r",dest="rcut",type="float",
                  default=3.772,
                  help="cutoff radius of the potential.")
parser.add_option("--pmdexec",dest="pmdexec",type="string",
                  default='../pmd/pmd',
                  help="path to the pmd executable.")
(options,args)= parser.parse_args()

displace= options.displace
print ' displacement = ',displace,' Ang.'
rcut= options.rcut
print ' rcut         = ',rcut,' Ang.'
pmdexec= options.pmdexec
infname= args[0]

sys0= NAPSystem()
sys0.read_pmd(infname)
sys0.write_POSCAR()
print ' POSCAR was written.'

natm0= sys0.num_atoms()

h0=np.zeros((3,3))
h0[0]= sys0.a1 *sys0.alc
h0[1]= sys0.a2 *sys0.alc
h0[2]= sys0.a3 *sys0.alc
n1,n2,n3= calc_extention_ratio(h0,rcut)

r1= 2*n1+1
r2= 2*n2+1
r3= 2*n3+1
Ejemplo n.º 19
0
    print '  Chech the parameters nmeasure and nshift, and input files.'
    sys.exit()


#...make output data files
outfname='dat.msd-{0}'.format(id)
outfile= open(outfname,'w')

p0= np.zeros((nmeasure,3))
pp= np.zeros(3)
msd= np.zeros((len(infiles),nmeasure,3))
npbc= np.zeros((3,),dtype=int)
hmat= np.zeros((3,3))
for ifile in range(len(infiles)):
    file= infiles[ifile]
    system= NAPSystem()
    system.read_akr(file)
    hmat[0]= system.a1 *system.alc
    hmat[1]= system.a2 *system.alc
    hmat[2]= system.a3 *system.alc
    #...human-readable ID to computer-oriented ID
    i= id-1
    ai= system.atoms[i]
    pi= ai.pos
    if ifile == 0:
        pp= pi
    else:
        #...correct periodic motion
        dev= pi -pp
        if dev[0] > 0.5:
            npbc[0] += -1
Ejemplo n.º 20
0
write_banner()

nsmpl= options.nsmpl
print(' num of points = ',nsmpl)
rcut= options.rcut
print(' rcut          = ',rcut,' Ang.')
amin= options.amin
print(' amin          = ',amin)
amax= options.amax
print(' amax          = ',amax)
distance= options.distance
print(' distance      = ',distance,' Ang.')
pmdexec= options.pmdexec

asys= NAPSystem()
a1= np.array([2.0, 0.0, 0.0])
a2= np.array([0.0, 2.0, 0.0])
a3= np.array([0.0, 0.0, 1.0])
alc= rcut
asys.set_lattice(alc,a1,a2,a3)

atom1= Atom()
atom1.set_pos(0.0,0.0,0.0)
atom1.set_id(1)
asys.add_atom(atom1)

hd= distance/(alc*2)
atom2= Atom()
atom2.set_pos(hd,0.0,0.0)
atom2.set_id(2)
Ejemplo n.º 21
0
#!/bin/env python

from __future__ import print_function

import sys, os
from napsys import NAPSystem

infname = sys.argv[1]
print('input file: ', infname)
aSys = NAPSystem()
aSys.read_akr(infname)
natm = len(aSys.atoms)

outfname = infname + ".voro"
f = open(outfname, 'w')
alc = aSys.alc
ax = aSys.a1[0]
ay = aSys.a2[1]
az = aSys.a3[2]
for ia in range(natm):
    pos = aSys.atoms[ia].pos
    f.write(' {0:4d}'.format(ia + 1))
    f.write(' {0:10.3f}'.format(alc * ax * pos[0]))
    f.write(' {0:10.3f}'.format(alc * ay * pos[1]))
    f.write(' {0:10.3f}'.format(alc * az * pos[2]))
    f.write('\n')
f.close()

print('Use voro++ as follows:')
cmd= 'voro++ -p -c " %i %q %v %s %A"' \
    +' 0.0 {0:5.1f}'.format(alc*ax) \