Beispiel #1
0
    def showZMat(self,s,sel):
        view=self.treeview
        s=Structure(s)
        s.setCarthesian()
        view.set_model(ZMatTreeModel(s,sel))
        for x in self.treeview.get_columns():
            view.remove_column(x)

        renderer = gtk.CellRendererText()
        column = gtk.TreeViewColumn("#", renderer, markup=0)
        view.append_column(column)

        renderer = gtk.CellRendererText()
        column = gtk.TreeViewColumn("distance", renderer, markup=1)
        view.append_column(column)

        renderer = gtk.CellRendererText()
        column = gtk.TreeViewColumn("angle", renderer, markup=2)
        view.append_column(column)

        renderer = gtk.CellRendererText()
        column = gtk.TreeViewColumn("dihedral", renderer, markup=3)
        view.append_column(column)

        view.show()
Beispiel #2
0
 def showDistances(self,s,sel):
     view=self.treeview
     s=Structure(s)
     s.setCarthesian()
     view.set_model(DistanceTreeModel(s,sel))
     for x in self.treeview.get_columns():
         view.remove_column(x)
     renderer = gtk.CellRendererText()
     column = gtk.TreeViewColumn("#", renderer, markup=0)
     view.append_column(column)
     renderer = gtk.CellRendererText()
     for i in range(len(sel)):
         n,nx,ny,nz=sel[i]
         column = gtk.TreeViewColumn("%d (%d %d %d)"%(n+1,nx,ny,nz), renderer, markup=i+1)
         view.append_column(column)
     view.show()
Beispiel #3
0
    def updateCreation(self):
        s = getCurrentSystemPM()
        self.creation = SetupPM(s)
        name = self.nameentry.get_text()
        self.creation.INCAR["SYSTEM"] = name
        if self.import_button.get_active():
            self.creation = SetupPM(s)
            name = self.nameentry.get_text()
            self.creation.INCAR["SYSTEM"] = name
            self.updateImportDescription()
            #      print "updateCreation",self.creation.NAME
            se = strip(self.step_entry.get_text())
            buff = self.description_textview.get_buffer()
            start = buff.get_start_iter()
            end = buff.get_end_iter()
            self.creation.DESCRIPTION = str(buff.get_text(start, end))
            try:
                n = int(se)
                try:
                    struct = s.STRUCTURE_SEQUENCE_L[n]
                    if n is not None:
                        self.creation.INITIAL_STRUCTURE.setStructure(struct)
                except:
                    msg().exception()
                    self.creation.INITIAL_STRUCTURE = Structure()
            except:
                if len(se):
                    if upper(se[0]) == "I":
                        if s.INITIAL_STRUCTURE is not None:
                            self.creation.INITIAL_STRUCTURE.setStructure(
                                s.INITIAL_STRUCTURE)
                        else:
                            self.creation.INITIAL_STRUCTURE = Structure()

                    elif upper(se[0]) == "F":
                        if s.FINAL_STRUCTURE is not None:
                            self.creation.INITIAL_STRUCTURE.setStructure(
                                s.FINAL_STRUCTURE)
                        else:
                            self.creation.INITIAL_STRUCTURE = Structure()
        else:
            self.creation = SetupPM()
            name = self.nameentry.get_text()
            self.creation.INCAR["SYSTEM"] = name
Beispiel #4
0
    def textview2struct(self):
        #    print "before tv2s",len(self.getCurrentStructure())
        try:
            b = self.textview.get_buffer()
            t = b.get_text(b.get_start_iter(), b.get_end_iter(), True)
            s = Structure()
            s.parse(t)
            self.getCurrentStructure().setStructure(s)

            self.no_coord_upd = 1
            if s.isCarthesian():
                self.carthesian_button.set_active(True)
            else:
                self.direct_button.set_active(True)
#      systemlist().notifySystemChanged()
        except ParseException:
            msg().error(str(sys.exc_info()[1]))
        except:
            msg().exception()
        else:
            msg().status("OK")
        self.no_coord_upd = 0
Beispiel #5
0
def makeZigzag(nn,aCC=1.419398,r=None,x_shift=0.0,y_shift=0.0,z_shift=0.0):
  s=Structure()
  s.setCartesian()
  s.comment="zigzag (%d,0), aCC=%f"%(nn,aCC)
  
  shift = 0.0
  fi   = 2*pi/nn
  if r is None:
    r = aCC*sqrt(3.0)/4/sin(fi/4)

  for i in range(0,nn):
    ffi=fi*i
    s.appendAtom(0,Vector(x_shift+r*cos(ffi),y_shift+r*sin(ffi),z_shift+shift))

  shift = shift + aCC/2
  for i in range(0,nn):
    ffi=fi*(i+0.5)
    s.appendAtom(0,Vector(x_shift+r*cos(ffi),y_shift+r*sin(ffi),z_shift+shift))

  shift = shift + aCC
  for i in range(0,nn):
    ffi=fi*(i+0.5)
    s.appendAtom(0,Vector(x_shift+r*cos(ffi),y_shift+r*sin(ffi),z_shift+shift))

  shift = shift + aCC/2
  for i in range(0,nn):
    ffi=fi*(i)
    s.appendAtom(0,Vector(x_shift+r*cos(ffi),y_shift+r*sin(ffi),z_shift+shift))

  s.basis[0][0] = 2*r+7
  s.basis[1][1] = 2*r+7
  s.basis[2][2] = shift
  s.R           = r
  return s
Beispiel #6
0
def makeZigzag(nn,
               aCC=1.419398,
               r=None,
               x_shift=0.0,
               y_shift=0.0,
               z_shift=0.0):
    s = Structure()
    s.setCartesian()
    s.comment = "zigzag (%d,0), aCC=%f" % (nn, aCC)

    shift = 0.0
    fi = 2 * pi / nn
    if r is None:
        r = aCC * sqrt(3.0) / 4 / sin(fi / 4)

    for i in range(0, nn):
        ffi = fi * i
        s.appendAtom(
            0,
            Vector(x_shift + r * cos(ffi), y_shift + r * sin(ffi),
                   z_shift + shift))

    shift = shift + aCC / 2
    for i in range(0, nn):
        ffi = fi * (i + 0.5)
        s.appendAtom(
            0,
            Vector(x_shift + r * cos(ffi), y_shift + r * sin(ffi),
                   z_shift + shift))

    shift = shift + aCC
    for i in range(0, nn):
        ffi = fi * (i + 0.5)
        s.appendAtom(
            0,
            Vector(x_shift + r * cos(ffi), y_shift + r * sin(ffi),
                   z_shift + shift))

    shift = shift + aCC / 2
    for i in range(0, nn):
        ffi = fi * (i)
        s.appendAtom(
            0,
            Vector(x_shift + r * cos(ffi), y_shift + r * sin(ffi),
                   z_shift + shift))

    s.basis[0][0] = 2 * r + 7
    s.basis[1][1] = 2 * r + 7
    s.basis[2][2] = shift
    s.R = r
    return s
Beispiel #7
0
######################################################################
# This is a selection script example.                                #
# The purpose of this script is to select (in the sense of the       #
# "Selective dynamics") certain atom group.                          #
#                                                                    #
# It is very simple and it is easier to modify this source           #
# to do what you want, than to write a sophisticated user interface. #
# (see the comments)                                                 #
######################################################################

from p4vasp.Structure import *
from p4vasp.sellang import *
from p4vasp.SystemPM import *

# Read the structure.

p=Structure("POSCAR")

# Alternative:
#p=XMLSystemPM("vasprun.xml").FINAL_STRUCTURE

l=decode("#4",p)                # Select the 4th specie
p.setSelective()                # Selective mode.
for i in range(len(p)):
    if i in l:
        p.selective[i]=(1,1,1)
    else:
        p.selective[i]=(0,0,0)

p.write("POSCAR.selected")      # Write the output.
#!/usr/bin/env python
import os
import time
import sys
import re
from p4vasp.Structure import *

if len(sys.argv) < 2:
    print "Usage: "+sys.argv[0]+" <poscar file>"
    print "           outputs the direct coords to stdout"
    sys.exit(1)

space = re.compile(r'\s+')

file = sys.argv[1]

p=Structure(file)
p.setDirect()
p.write(sys.stdout)

Beispiel #9
0
#  (see http://cms.mpi.univie.ac.at/vasp/Welcome.html)
#  
#  Copyright (C) 2003  Orest Dubay <*****@*****.**>
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA


from p4vasp.Structure import *
from sys import *

s=Structure("POSCAR")
s.setSelective(0)
nx=int(argv[1])
ny=int(argv[2])
nz=int(argv[3])
s.replicateCell(nx,ny,nz)
s.write("POSCAR_%d-%d-%d"%(nx,ny,nz))

Beispiel #10
0
######################################################################
# This is a selection script example.                                #
# The purpose of this script is to select (in the sense of the       #
# "Selective dynamics") certain atom group.                          #
#                                                                    #
# It is very simple and it is easier to modify this source           #
# to do what you want, than to write a sophisticated user interface. #
# (see the comments)                                                 #
######################################################################

from p4vasp.Structure import *
from p4vasp.sellang import *
from p4vasp.SystemPM import *

# Read the structure.

p=Structure("POSCAR")

# Alternative:
#p=XMLSystemPM("vasprun.xml").FINAL_STRUCTURE

l=decode("#4",p)                # Select the 4th specie
p.setSelective()                # Selective mode.
for i in range(len(p)):
  if i in l:
    p.selective[i]=(1,1,1)
  else:
    p.selective[i]=(0,0,0)

p.write("POSCAR.selected")      # Write the output.
Beispiel #11
0
#!/usr/bin/env python
import os
import time
import sys
import re
from p4vasp.Structure import *

if len(sys.argv) < 2:
    print "Usage: "+sys.argv[0]+" <poscar file>"
    print "           outputs the cartesian coords to stdout"
    sys.exit(1)

space = re.compile(r'\s+')

file = sys.argv[1]

p=Structure(file)
p.setCarthesian()
p.write(sys.stdout)

Beispiel #12
0
#  Vienna Ab-inition Simulation Package (VASP)
#  (see http://cms.mpi.univie.ac.at/vasp/Welcome.html)
#  
#  Copyright (C) 2003  Orest Dubay <*****@*****.**>
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA


from p4vasp.Structure import *
from sys import *

s=Structure("POSCAR")
s.setCarthesian()
for i in range(len(s)):
  s[i][1]*=-1
s.toUnitCell()  
s.write("POSCAR.Y-mirror")

Beispiel #13
0
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

######################################################################
# DESCRIPTION:                                                       #
######################################################################
# This is a removes all but selected atoms.                          #
# Selection is given by selection language at the                    #
# line with decode("...").                                           #
#                                                                    #
# It is very simple and it is easier to modify this source           #
# to do what you want, than to write a sophisticated user interface. #
# (see the comments)                                                 #
######################################################################

from p4vasp.Structure import *
from p4vasp.sellang import *
from p4vasp.SystemPM import *

# Read the structure.

p=Structure("POSCAR")
# Alternative:
#p=XMLSystemPM("vasprun.xml").FINAL_STRUCTURE

#del p[59]
#Now remove specie 2
p.remove("#2")
#Finally write the output.
p.write("POSCAR.removed")      # Write the output.
Beispiel #14
0
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

######################################################################
# DESCRIPTION:                                                       #
######################################################################
# Removes the selective dynamics from the inputfile                  #
######################################################################

from p4vasp.Structure import *
from p4vasp.sellang import *
from p4vasp.SystemPM import *
from sys import *

# Read the structure.

p=Structure(argv[1])
p.setSelective(0)                       # Selective mode.
p.write("%s.notselective"%argv[1])      # Write the output.
Beispiel #15
0
 def clone(self):
     return Structure(pointer=_cp4vasp.Structure_clone(self.this))
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

from p4vasp.Structure import *
from p4vasp.sellang import *
#from p4vasp.SystemPM import *
#s=XMLSystemPM('vasprun.xml')
#p=s.INITIAL_STRUCTURE

p=Structure("CONTCAR")
p.setCarthesian()
l1=decode("-160",p)
l2=decode("161-",p)
print "Group 1 has %3d elements."%len(l1)
print "Group 2 has %3d elements."%len(l2)

d=[]
for i in l1:
  for j in l2:
    if i==j:
      print "Substructures have a common atom %d."%(i+1)
    else:
      d.append((p.mindistCartVectors(p[i],p[j]),i,j))

m,i,j=min(d)
Beispiel #17
0
#!/usr/bin/python

from p4vasp.Structure import *
from sys import argv

p = Structure(argv[1])
#p.setSelective(0)

for i in range(p.types):
    f = p.info.firstAtomIndexForSpecie(i)
    l = []
    if p.isSelective():
        for j in range(p.atomspertype[i]):
            l.append((p[j][2], p[j], p.selective[j]))
        l.sort()
        for j in range(p.atomspertype[i]):
            p[j] = l[j][1]
            p.selective[j] = l[j][2]
    else:
        for j in range(p.atomspertype[i]):
            l.append((p[j][2], p[j]))
        l.sort()
        for j in range(p.atomspertype[i]):
            p[j] = l[j][1]
p.write(argv[1] + ".sorted")
Beispiel #18
0
 def __init__(self, a):
     '''constructor for the model.'''
     gtk.GenericTreeModel.__init__(self)
     self.a = a
     self.struct = Structure()
Beispiel #19
0
#!/usr/bin/python2
#  p4vasp is a GUI-program and a library for processing outputs of the
#  Vienna Ab-inition Simulation Package (VASP)
#  (see http://cms.mpi.univie.ac.at/vasp/Welcome.html)
#
#  Copyright (C) 2003  Orest Dubay <*****@*****.**>
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

from p4vasp.Structure import *
from sys import *

s = Structure("POSCAR")
s.setCarthesian()
for i in range(len(s)):
    s[i][1] *= -1
s.toUnitCell()
s.write("POSCAR.Y-mirror")
Beispiel #20
0
#  p4vasp is a GUI-program and a library for processing outputs of the
#  Vienna Ab-inition Simulation Package (VASP)
#  (see http://cms.mpi.univie.ac.at/vasp/Welcome.html)
#
#  Copyright (C) 2003  Orest Dubay <*****@*****.**>
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

from p4vasp.Structure import *
from sys import *

s = Structure("POSCAR")
s.setSelective(0)
nx = int(argv[1])
ny = int(argv[2])
nz = int(argv[3])
s.replicateCell(nx, ny, nz)
s.write("POSCAR_%d-%d-%d" % (nx, ny, nz))
import sys
import re
from p4vasp.Structure import *

if len(sys.argv) < 7:
    print "Usage: "+sys.argv[0]+" <poscar file> <n> <m> <x> <y> <z>"
    print "           <poscar file> is the input POSCAR"
    print "           <n> <m> species the range of atoms to move (by index)"
    print "           <x> <y> <z> is the translation vector to add to those atoms (cartesian)."
    print "           The new POSCAR is output to stdout."
    sys.exit(1)

space = re.compile(r'\s+')

file = sys.argv[1]
p=Structure(file)
p.setCarthesian()

n = int(sys.argv[2])
m = int(sys.argv[3])
x = float(sys.argv[4])
y = float(sys.argv[5])
z = float(sys.argv[6])

# do the move
p.translate(Vector(x,y,z),range(n,m))

# convert back to direct
p.setDirect()

# write it out.
Beispiel #22
0
def makeArmchair(nn,
                 aCC=1.419398,
                 r=None,
                 x_shift=0.0,
                 y_shift=0.0,
                 z_shift=0.0):
    s = Structure()
    s.setCartesian()

    s.comment = "armchair (%d,%d), aCC=%f" % (nn, nn, aCC)

    shift = 0.0

    fi = 2 * pi / nn
    al = 2 * atan(2 * sin(fi / 4) / (1 + 2 * cos(fi / 4)))
    be = fi / 2 - al

    if r is None:
        r = aCC / 2 / sin(al / 2)

    for i in range(0, nn):
        ffi = fi * i
        s.appendAtom(
            0,
            Vector(x_shift + r * cos(ffi), y_shift + r * sin(ffi),
                   z_shift + shift))

    for i in range(0, nn):
        ffi = al + fi * i
        s.appendAtom(
            0,
            Vector(x_shift + r * cos(ffi), y_shift + r * sin(ffi),
                   z_shift + shift))

    shift = shift + aCC * sqrt(3.0) / 2

    for i in range(0, nn):
        ffi = al + be + fi * (i)
        s.appendAtom(
            0,
            Vector(x_shift + r * cos(ffi), y_shift + r * sin(ffi),
                   z_shift + shift))

    for i in range(0, nn):
        ffi = 2 * al + be + fi * (i)
        s.appendAtom(
            0,
            Vector(x_shift + r * cos(ffi), y_shift + r * sin(ffi),
                   z_shift + shift))

    shift = shift + aCC * sqrt(3.0) / 2

    s.basis[0][0] = 2 * r + 7
    s.basis[1][1] = 2 * r + 7
    s.basis[2][2] = shift
    s.R = r
    return s
Beispiel #23
0
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

######################################################################
# DESCRIPTION:                                                       #
######################################################################
# This is a removes all but selected atoms.                          #
# Selection is given by selection language at the                    #
# line with decode("...").                                           #
#                                                                    #
# It is very simple and it is easier to modify this source           #
# to do what you want, than to write a sophisticated user interface. #
# (see the comments)                                                 #
######################################################################

from p4vasp.Structure import *
from p4vasp.sellang import *
from p4vasp.SystemPM import *

# Read the structure.

p=Structure("POSCAR")
# Alternative:
#p=XMLSystemPM("vasprun.xml").FINAL_STRUCTURE

#del p[59]
#Now remove specie 2
p.remove("#2")
#Finally write the output.
p.write("POSCAR.removed")      # Write the output.
Beispiel #24
0
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

######################################################################
# DESCRIPTION:                                                       #
######################################################################
# Removes the selective dynamics from the inputfile                  #
######################################################################

from p4vasp.Structure import *
from p4vasp.sellang import *
from p4vasp.SystemPM import *
from sys import *

# Read the structure.

p=Structure(argv[1])
p.setSelective(0)                       # Selective mode.
p.write("%s.notselective"%argv[1])      # Write the output.
Beispiel #25
0
def makeArmchair(nn,aCC=1.419398,r=None,x_shift=0.0,y_shift=0.0,z_shift=0.0):
  s=Structure()
  s.setCartesian()

  s.comment="armchair (%d,%d), aCC=%f"%(nn,nn,aCC)
  
  shift = 0.0

  fi   = 2*pi/nn
  al   = 2*atan(2*sin(fi/4)/(1+2*cos(fi/4)))
  be   = fi/2-al

  if r is None:
    r    = aCC/2/sin(al/2)

  for i in range(0,nn):
    ffi=fi*i
    s.appendAtom(0,Vector(x_shift+r*cos(ffi),y_shift+r*sin(ffi),z_shift+shift))

  for i in range(0,nn):
    ffi=al+fi*i
    s.appendAtom(0,Vector(x_shift+r*cos(ffi),y_shift+r*sin(ffi),z_shift+shift))

  shift = shift + aCC*sqrt(3.0)/2

  for i in range(0,nn):
    ffi=al+be+fi*(i)
    s.appendAtom(0,Vector(x_shift+r*cos(ffi),y_shift+r*sin(ffi),z_shift+shift))

  for i in range(0,nn):
    ffi=2*al+be+fi*(i)
    s.appendAtom(0,Vector(x_shift+r*cos(ffi),y_shift+r*sin(ffi),z_shift+shift))

  shift = shift + aCC*sqrt(3.0)/2

  s.basis[0][0] = 2*r+7
  s.basis[1][1] = 2*r+7
  s.basis[2][2] = shift
  s.R           = r
  return s