示例#1
0
 def prepareBand(self):
     tl.mkcd('band')
     # run vasp
     tl.cp('../minimize/POSCAR', '.')
     self.m.ismear = -1
     self.getVaspRun_vasp()
     tl.cd('..')
示例#2
0
 def getvasprun(self, files):
     m = self.m
     maindir = pwd()
     if m.engine == "vasp":
         calculator = self.getVaspRun_vasp
     elif m.engine == "lammps":
         calculator = self.getVaspRun_lammps
     self.jm = jobManager()
     for file in files:
         print(file)
         dir = "dirs/dir_" + file
         mkdir(dir)
         mv(file, dir + '/POSCAR')
         cd(dir)
         calculator()
         cd(maindir)
     self.jm.run()
     if m.th:
         mkdir(m.pbsname)
         self.thcode(files, m.pbsname)
         cp("dirs", m.pbsname)
         passthru("tar zcf %s.tar.gz %s" % (m.pbsname, m.pbsname))
     print('start check')
     self.jm.check()
     if m.engine == "lammps1":
         from multiprocessing.dummy import Pool
         pool = Pool()
         pool.map_async(lammpsvasprun, files)
         pool.close()
         pool.join()
示例#3
0
 def getvasprun(self, files):
     m = self.m
     maindir = pwd()
     if m.engine == "vasp":
         calculator = self.getVaspRun_vasp
     elif m.engine == "lammps":
         calculator = self.getVaspRun_lammps
     self.jm = jobManager()
     for file in files:
         print(file)
         dir = "dirs/dir_" + file
         mkdir(dir)
         mv(file, dir + '/POSCAR')
         cd(dir)
         calculator()
         cd(maindir)
     self.jm.run()
     if m.th:
         mkdir(m.pbsname)
         self.thcode(files, m.pbsname)
         cp("dirs", m.pbsname)
         passthru("tar zcf %s.tar.gz %s" % (m.pbsname, m.pbsname))
     print('start check')
     self.jm.check()
     if m.engine == "lammps1":
         from multiprocessing.dummy import Pool
         pool = Pool()
         pool.map_async(lammpsvasprun, files)
         pool.close()
         pool.join()
示例#4
0
    def minimizePOSCAR(self):
        m = self.m
        if m.engine == "lammps":

            m.dump2POSCAR(m.home + '/minimize/range', rotate=True)

        elif m.engine == "vasp":
            cp(m.home + '/minimize/CONTCAR', 'POSCAR')
示例#5
0
    def minimizePOSCAR(self):
        m = self.m
        if m.engine == "lammps":

            m.dump2POSCAR(m.home + '/minimize/range', rotate=True)

        elif m.engine == "vasp":
            cp(m.home + '/minimize/CONTCAR', 'POSCAR')
示例#6
0
    def generate(self):
        m = self.m
        coordination = self.phontsAtoms()
        content0 = "species %d\n" % (len(m.elements)) + m.phontsmasses + """
D3_cutoff %f
kpoints %s 1
delta 0.005
numerical_2der T
numerical_3der T
iter_steps 3
pdos 0. 70. 200 10.
temp 60. 400. 10
AbInitio  T F
FP_interface LAMMPS
#phonons_only T
Lattice  1.0
%s
end
""" % (m.shengcut, m.toString(m.kpoints), coordination)
        tl.write(content0, 'phonons_input.dat')
        tl.passthru(config.phonts)  # generate many displacement files
        tl.mkdir('lammps')
        tl.cd('lammps')
        content = "units %s\n" % m.units
        content += """atom_style      charge
dimension       3
boundary        p p p
read_data       GENERIC
%s
%s
neighbor        1.1 bin
neigh_modify    every 1 delay 1 check yes
dump 1 all custom 1 *.dump id  fx fy fz
dump_modify 1 format "%%d %%30.20f %%30.20f %%30.20f"
dump_modify  1 sort id
run 0
""" % (m.masses, m.potential)
        tl.shell_exec("mv ../*.str .")
        strs = tl.shell_exec("ls *.str").split("\n")
        for str in strs:
            dir = str.replace("str", "dir")
            tl.mkdir(dir)
            tl.write(content.replace("GENERIC", str), dir + "/in")
            tl.mv(str, "%s/%s" % (dir, str))
            tl.cd(dir)
            tl.passthru(config.lammps + " <in >out.dat")
            tl.cd('..')
        dirs = tl.shell_exec("ls |grep dir").split("\n")
        for dir in dirs:
            print(dir)
            tl.cp(dir + "/0.dump", "../" + dir.replace("dir", "out"))
        tl.cp("1.0000.dir/out.dat", "../1.0000.out")
        tl.cd('..')
        content0 = content0.replace('AbInitio  T F', 'AbInitio  F T')
        tl.write(content0, 'phonons_input.dat')
        tl.passthru(config.phonts)
示例#7
0
    def generate(self):
        m = self.m
        coordination = self.phontsAtoms()
        content0 = "species %d\n" % (len(m.elements)) + m.phontsmasses + """
D3_cutoff %f
kpoints %s 1
delta 0.005
numerical_2der T
numerical_3der T
iter_steps 3
pdos 0. 70. 200 10.
temp 60. 400. 10
AbInitio  T F
FP_interface LAMMPS
#phonons_only T
Lattice  1.0
%s
end
""" % (m.shengcut, m.toString(m.kpoints), coordination)
        tl.write(content0, 'phonons_input.dat')
        tl.passthru(config.phonts)  # generate many displacement files
        tl.mkdir('lammps')
        tl.cd('lammps')
        content = "units %s\n" % m.units
        content += """atom_style      charge
dimension       3
boundary        p p p
read_data       GENERIC
%s
%s
neighbor        1.1 bin
neigh_modify    every 1 delay 1 check yes
dump 1 all custom 1 *.dump id  fx fy fz
dump_modify 1 format "%%d %%30.20f %%30.20f %%30.20f"
dump_modify  1 sort id
run 0
""" % (m.masses, m.potential)
        tl.shell_exec("mv ../*.str .")
        strs = tl.shell_exec("ls *.str").split("\n")
        for str in strs:
            dir = str.replace("str", "dir")
            tl.mkdir(dir)
            tl.write(content.replace("GENERIC", str), dir + "/in")
            tl.mv(str, "%s/%s" % (dir, str))
            tl.cd(dir)
            tl.passthru(config.lammps + " <in >out.dat")
            tl.cd('..')
        dirs = tl.shell_exec("ls |grep dir").split("\n")
        for dir in dirs:
            print(dir)
            tl.cp(dir + "/0.dump", "../" + dir.replace("dir", "out"))
        tl.cp("1.0000.dir/out.dat", "../1.0000.out")
        tl.cd('..')
        content0 = content0.replace('AbInitio  T F', 'AbInitio  F T')
        tl.write(content0, 'phonons_input.dat')
        tl.passthru(config.phonts)
示例#8
0
 def prepareBand(self):
     tl.mkcd('band')
     # run vasp
     tl.cp('../POSCAR', '.')
     self.getVaspRun_vasp()
     # cp('/home1/xggong/zhouy/tcscripts/sis/
     # sis1.1/0/secondorder/dirs/dir_POSCAR-002/EIGENVAL','.')
     # cp('/home1/xggong/zhouy/tcscripts/
     # sis/sis1.1/0/secondorder/dirs/dir_POSCAR-002/OUTCAR','.')
     tl.cd('..')
示例#9
0
 def prepareBand(self):
     tl.mkcd('band')
     # run vasp
     tl.cp('../POSCAR', '.')
     self.getVaspRun_vasp()
     # cp('/home1/xggong/zhouy/tcscripts/sis/
     # sis1.1/0/secondorder/dirs/dir_POSCAR-002/EIGENVAL','.')
     # cp('/home1/xggong/zhouy/tcscripts/
     # sis/sis1.1/0/secondorder/dirs/dir_POSCAR-002/OUTCAR','.')
     tl.cd('..')
示例#10
0
 def optimize(self):
     mkcd('optimize')
     cp('../minimize/POSCAR', '.')
     atoms = io.read('POSCAR')
     for i in range(100):
         dir = "%i" % i
         mkcd(dir)
         writevasp(atoms)
         forces, stress, energy = self.energyForce()
         pos = atoms.get_scaled_positions()
         pos += forces * 0.01
示例#11
0
 def run(self):
     m = self.m
     dir0 = 'minimize'
     atoms = m.dump2POSCAR('%s/range' % dir0)
     tl.cp("POSCAR", "POSCAR_minimize")
     cell = atoms.get_cell()
     r = np.arange(1.0, 0.5, -0.01) * cell[2][2]
     for i, lz in enumerate(r):
         dir = 'minimize%d' % i
         self.run_next(dir0, dir, lz)
         dir0 = dir
示例#12
0
 def run(self):
     m = self.m
     dir0 = 'minimize'
     atoms = m.dump2POSCAR('%s/range' % dir0)
     tl.cp("POSCAR", "POSCAR_minimize")
     cell = atoms.get_cell()
     r = np.arange(1.0, 0.5, -0.01) * cell[2][2]
     for i, lz in enumerate(r):
         dir = 'minimize%d' % i
         self.run_next(dir0, dir, lz)
         dir0 = dir
示例#13
0
 def optimize(self):
     mkcd('optimize')
     cp('../minimize/POSCAR', '.')
     atoms = io.read('POSCAR')
     for i in range(100):
         dir = "%i" % i
         mkcd(dir)
         writevasp(atoms)
         forces, stress, energy = self.energyForce()
         pos = atoms.get_scaled_positions()
         pos += forces * 0.01
示例#14
0
文件: App.py 项目: vanceeasleaf/aces
 def minimize(self):
     if (self.m.copyN == -1):
         copymini = False
     else:
         copymini = True
     if copymini:
         while not tl.exists('../%d/minimize/done' % self.m.copyN):
             tl.sleep(30)
         print('copymini')
         tl.cp('../%d/minimize' % self.m.copyN, '.')
     else:
         self.creatmini()
示例#15
0
 def runSPOSCAR(self):
     m = self.m
     maindir = pwd()
     file = "SPOSCAR"
     dir = "dir_" + file
     mkdir(dir)
     cp(file, dir + '/POSCAR')
     cd(dir)
     if m.engine == "vasp":
         self.getVaspRun_vasp()
     if m.engine == "lammps":
         self.getVaspRun_lammps()
     cd(maindir)
示例#16
0
 def runSPOSCAR(self):
     m = self.m
     maindir = pwd()
     file = "SPOSCAR"
     dir = "dir_" + file
     mkdir(dir)
     cp(file, dir + '/POSCAR')
     cd(dir)
     if m.engine == "vasp":
         self.getVaspRun_vasp()
     if m.engine == "lammps":
         self.getVaspRun_lammps()
     cd(maindir)
示例#17
0
    def sheng(self):

        self.writeFC()
        m = self.m
        from aces.runners.shengbte import runner as shengbte
        a = shengbte(m)
        tl.mkcd('SHENG')
        tl.cp('../FORCE_CONSTANTS_2ND', '.')
        tl.cp('../FORCE_CONSTANTS_3RD', '.')
        a.getControl()
        # Thermal conductivity calculation
        print("START SHENGBTE...")
        # passthru(config.mpirun+" %s "%m.cores+config.shengbte)
        tl.passthru(config.shengbte)
示例#18
0
    def generate(self):
        m = self.m
        self.minimizePOSCAR()
        a = time.time()
        self.generate_supercells()
        tl.debug('generate_supercells:%f s' % (time.time() - a))
        tl.shell_exec("rm *-*")
        tl.cp("SPOSCAR", "POSCAR001")
        a = time.time()
        files = ['POSCAR001']
        self.getvasprun(files)
        tl.debug('getvasprun:%f s' % (time.time() - a))
        a = time.time()
        self.force_constant()
        tl.debug('force_constant:%f s' % (time.time() - a))

        if m.phofc:
            return self
        self.postp()
示例#19
0
    def generate(self):
        m = self.m
        self.minimizePOSCAR()
        a = time.time()
        self.generate_supercells()
        tl.debug('generate_supercells:%f s' % (time.time() - a))
        tl.shell_exec("rm *-*")
        tl.cp("SPOSCAR", "POSCAR001")
        a = time.time()
        files = ['POSCAR001']
        self.getvasprun(files)
        tl.debug('getvasprun:%f s' % (time.time() - a))
        a = time.time()
        self.force_constant()
        tl.debug('force_constant:%f s' % (time.time() - a))

        if m.phofc:
            return self
        self.postp()
示例#20
0
    def getVaspRun_vasp(self):

        self.writeINCAR()
        m = self.m
        writePOTCAR(m, m.elements)

        if (m.kpointspath):
            cp(m.kpointspath, "KPOINTS")
        else:
            from aces.io.vasp import writeKPOINTS
            writeKPOINTS(m.ekpoints)
        if 'jm' in self.__dict__:
            if not m.th:
                path = pwd()
                if m.queue == "q3.4":
                    pb = pbs(
                        queue=m.queue,
                        nodes=12,
                        procs=1,
                        disp=m.pbsname,
                        path=path,
                        content=config.mpirun + " 12 " + config.vasp +
                        ' >log.out')
                else:
                    pb = pbs(
                        queue=m.queue,
                        nodes=1,
                        procs=12,
                        disp=m.pbsname,
                        path=path,
                        content=config.mpirun + " 12 " + config.vasp +
                        ' >log.out')
            else:
                path = pwd()
                pb = th(disp=m.pbsname, path=path)
            self.jm.reg(pb)

        else:
            shell_exec(config.mpirun + " %s " % m.cores + config.vasp +
                       ' >log.out')
示例#21
0
    def prepareet(self):
        fermi = self.get_fermi()
        nelect = self.get_nelect()
        tl.mkcd('et')
        tl.cp('../band/SYMMETRY', '.')
        tl.cp('../band/EIGENVAL', '.')
        tl.cp('../band/POSCAR', '.')
        lpfac = 5
        if(self.m.soc):
            lpfac = 20
        s = """VASP
0 1 0 0.0
%f 0.0005 0.40  %f
CALC
%d
BOLTZ
.15
800. 50.
0.
""" % (fermi, nelect, lpfac)
        # Format of DOS
        # iskip (not presently used) idebug setgap shiftgap
        # Fermilevel (eV, please note), energygrid (Ry),\
        # 	 energy span around Fermilevel (Ry), No of electrons
        # CALC (calculate expansion coeff), NOCALC read from file
        # lpfac, number of latt-points per k-point
        # run mode (only BOLTZ is supported)
        # (efcut) energy range of chemical potential (Ry)
        # Tmax, temperature grid
        # energyrange of bands given individual \
        # 	DOS output sig_xxx and dos_xxx (xxx is band number)
        tl.write(s, "et.intrans")
        tl.cd('..')
示例#22
0
    def getVaspRun_vasp(self):

        self.writeINCAR()
        m = self.m
        writePOTCAR(m, m.elements)

        if (m.kpointspath):
            cp(m.kpointspath, "KPOINTS")
        else:
            from aces.io.vasp import writeKPOINTS
            writeKPOINTS(m.ekpoints)
        if 'jm' in self.__dict__:
            if not m.th:
                path = pwd()
                if m.queue == "q3.4":
                    pb = pbs(queue=m.queue,
                             nodes=12,
                             procs=1,
                             disp=m.pbsname,
                             path=path,
                             content=config.mpirun + " 12 " + config.vasp +
                             ' >log.out')
                else:
                    pb = pbs(queue=m.queue,
                             nodes=1,
                             procs=12,
                             disp=m.pbsname,
                             path=path,
                             content=config.mpirun + " 12 " + config.vasp +
                             ' >log.out')
            else:
                path = pwd()
                pb = th(disp=m.pbsname, path=path)
            self.jm.reg(pb)

        else:
            shell_exec(config.mpirun + " %s " % m.cores + config.vasp +
                       ' >log.out')
示例#23
0
 def getV(self):
     if not exists('groupv'):
         mkdir('groupv')
     cd('groupv')
     cp('../FORCE_CONSTANTS', '.')
     cp('../POSCAR', '.')
     cp('../disp.yaml', '.')
     self.generate_vconf()
     passthru(config.phonopy + "--tolerance=1e-4    v.conf")
     self.drawV()
     cd('..')
示例#24
0
 def getV(self):
     if not exists('groupv'):
         mkdir('groupv')
     cd('groupv')
     cp('../FORCE_CONSTANTS', '.')
     cp('../POSCAR', '.')
     cp('../disp.yaml', '.')
     self.generate_vconf()
     passthru(config.phonopy + "--tolerance=1e-4    v.conf")
     self.drawV()
     cd('..')
示例#25
0
    def vfc(self):
        c = self.m.correlation_supercell
        q = []
        u = [int(x / 2) * 2 + 1 for x in c]
        for i in range(u[0]):
            for j in range(u[1]):
                for k in range(u[2]):
                    b = np.array([
                        float(i - c[0] / 2) / c[0],
                        float(j - c[1] / 2) / c[1],
                        float(k - c[2] / 2) / c[2]
                    ])
                    q.append(b)
        m = self.m

        tl.mkcd('vqpoints')
        tl.cp('../FORCE_CONSTANTS', '.')
        tl.cp('../disp.yaml', '.')
        tl.cp('../POSCAR', '.')
        Prun(m).getvqpoints(q)
        tl.cd('..')
示例#26
0
    def vfc(self):
        c = self.m.correlation_supercell
        q = []
        u = [int(x / 2) * 2 + 1 for x in c]
        for i in range(u[0]):
            for j in range(u[1]):
                for k in range(u[2]):
                    b = np.array([
                        float(i - c[0] / 2) / c[0],
                        float(j - c[1] / 2) / c[1],
                        float(k - c[2] / 2) / c[2]
                    ])
                    q.append(b)
        m = self.m

        tl.mkcd('vqpoints')
        tl.cp('../FORCE_CONSTANTS', '.')
        tl.cp('../disp.yaml', '.')
        tl.cp('../POSCAR', '.')
        Prun(m).getvqpoints(q)
        tl.cd('..')
示例#27
0
 def pSecond(self):
     cp('../POSCAR', '.')
     self.generate_supercells()
     files = shell_exec("ls *-*").split('\n')
     assert len(files) > 0
     self.getvasprun(files)
示例#28
0
 def generate(self):
     tl.cp('minimize/POSCAR', '.')
     self.getVaspRun_vasp()
示例#29
0
文件: scf.py 项目: vanceeasleaf/aces
 def generate(self):
     tl.cp('minimize/POSCAR', '.')
     self.getVaspRun_vasp()
示例#30
0
 def generate(self):
     tl.cp('minimize/CONTCAR', 'POSCAR')
     self.prepareBand()
     self.prepareet()
     self.runet()
示例#31
0
 def pSheng(self):
     mkdir('SHENG')
     cd('SHENG')
     cp('../secondorder/FORCE_CONSTANTS', 'FORCE_CONSTANTS_2ND')
     cp('../thirdorder/FORCE_CONSTANTS_3RD', '.')
     self.getControl()
示例#32
0
 def third(self):
     mkdir('thirdorder')
     cd('thirdorder')
     cp('../POSCAR', '.')
     self.generate_supercells3()
示例#33
0
def minimize_vasp(m):
    npar = 1
    for i in range(1, int(np.sqrt(m.cores)) + 1):
        if m.cores % i == 0:
            npar = i
    if m.ispin:
        ispin = "ISPIN=2"
    else:
        ispin = ""
    if m.soc:
        soc = "LSORBIT=T"
    else:
        soc = ""
    if m.isym:
        sym = "ISYM = 1"
    else:
        sym = "ISYM = 0"
    s = """SYSTEM = - local optimisation
	PREC = high
	ENCUT=%f
	EDIFF = 1e-8
	IBRION = 2
	NSW=100
	ISIF = 3
	ISMEAR = 0 ; SIGMA = 0.1
	POTIM=0.01
	ISTART = 0
	LWAVE = FALSE
	LCHARG = FALSE
	EDIFFG = -0.01
	LREAL=FALSE
	NPAR = %d
	%s
	%s
	%s
	""" % (m.ecut, npar, sym, ispin, soc)
    if m.vdw:
        s += """\nIVDW = 1
		VDW_RADIUS = 50
		VDW_S6 = 0.75
		VDW_SR = 1.00
		VDW_SCALING = 0.75
		VDW_D = 20.0
		VDW_C6 = 63.540 31.50
		VDW_R0 = 1.898 1.892
		"""
    tl.write(s, 'INCAR')
    m.structure()
    from aces.io.vasp import writePOTCAR
    writePOTCAR(m, m.elements)
    s = """A
	0
	Monkhorst-Pack
	%s
	0  0  0
	""" % ' '.join(map(str, m.mekpoints))
    tl.write(s, 'KPOINTS')
    vasp = [config.vasp, config.vasp_2d][m.d2]
    if m.useMini:
        tl.shell_exec(config.mpirun + " %s " % m.cores + vasp + ' >log.out')
    else:
        tl.cp('POSCAR', 'CONTCAR')