当前位置: 首页>>代码示例>>Python>>正文


Python Vasp.get_atoms方法代码示例

本文整理汇总了Python中ase.calculators.vasp.Vasp.get_atoms方法的典型用法代码示例。如果您正苦于以下问题:Python Vasp.get_atoms方法的具体用法?Python Vasp.get_atoms怎么用?Python Vasp.get_atoms使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ase.calculators.vasp.Vasp的用法示例。


在下文中一共展示了Vasp.get_atoms方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: defect_strain_matrices

# 需要导入模块: from ase.calculators.vasp import Vasp [as 别名]
# 或者: from ase.calculators.vasp.Vasp import get_atoms [as 别名]
def defect_strain_matrices(label,conc,Latt):
	from ase.calculators.vasp import Vasp
	calc = Vasp(restart=1)
	atoms = calc.get_atoms()
	LattDef = numpy.array(atoms.get_cell())
	# LattDef = correct_lattice_matrix(numpy.array(atoms.get_cell()))
	dstrain = (1/conc)*numpy.dot(numpy.subtract(LattDef,Latt),numpy.linalg.inv(Latt))
	dstrain_vec = asetools.tensorise(dstrain)
	outfile = 'defect_strain.txt'
	fout = open(outfile,'w')
	print>>fout, label
	print>>fout, "concentration {:^10}".format(conc)
	print>>fout, "defect strain matrix"
	for item in dstrain:
		print>>fout, '   '.join(map(str, item))
	print>>fout, "defect strain vector"
	for item in dstrain_vec:
		print>>fout, item
	print>>fout, "Defect supercell lattice"
	for item in LattDef:
		print>>fout, '   '.join(map(str, item))
	print>>fout, "Perfect supercell lattice"
	for item in Latt:
		print>>fout, '   '.join(map(str, item))
	fout.close
开发者ID:ankoor7,项目名称:VASP-and-ASE-tools,代码行数:27,代码来源:aseroutines.py

示例2: run_energy_eval

# 需要导入模块: from ase.calculators.vasp import Vasp [as 别名]
# 或者: from ase.calculators.vasp.Vasp import get_atoms [as 别名]
def run_energy_eval(totalsol, calc_method='LAMMPS', fx_region=False, fit_scheme='totalenfit', STR='', static_calc=None):
    if calc_method=='VASP':
        en=totalsol.get_potential_energy()
        calcb=Vasp(restart=True)
        totalsol=calcb.get_atoms()
        stress=calcb.read_stress()
    else:
        totcop = totalsol.copy()
        OUT = totalsol.calc.calculate(totalsol)
        totalsol = OUT['atoms']
        totalsol.set_pbc(True)
        if fx_region:
            STR+='Energy of fixed region calc = {0}\n'.format(OUT['thermo'][-1]['pe'])
            totalsol.set_calculator(static_calc)
            OUT=totalsol.calc.calculate(totalsol)
            totalsol=OUT['atoms']
            totalsol.set_pbc(True)
            STR+='Energy of static calc = {0}\n'.format(OUT['thermo'][-1]['pe'])
        en=OUT['thermo'][-1]['pe']
        stress=numpy.array([OUT['thermo'][-1][i] for i in ('pxx','pyy','pzz','pyz','pxz','pxy')])*(-1e-4*GPa)
    if fit_scheme == 'enthalpyfit':
        pressure = totalsol.get_isotropic_pressure(stress)
    else:
        pressure = 0
    volume = totalsol.get_volume()
    energy=en
    STR+='Energy per atom = {0}\n'.format(energy/len(totalsol))
    return totalsol, energy, pressure, volume, STR
开发者ID:uw-cmg,项目名称:MAST,代码行数:30,代码来源:eval_energy_non_stem.py

示例3: calc_defect_strain_matrix

# 需要导入模块: from ase.calculators.vasp import Vasp [as 别名]
# 或者: from ase.calculators.vasp.Vasp import get_atoms [as 别名]
def calc_defect_strain_matrix(Latt):
	from ase.calculators.vasp import Vasp
	# defect lattice
	calc = Vasp(restart=1)
	atoms = calc.get_atoms()
	LattDef = numpy.array(atoms.get_cell())
	dstrain = conc*numpy.dot(numpy.subtract(LattDef,Latt.T),numpy.linalg.inv(Latt.T))
	dstrain=asetools.symmetrize(dstrain)
	return dstrain
开发者ID:ankoor7,项目名称:VASP-and-ASE-tools,代码行数:11,代码来源:asetools.py

示例4: get_locpot_array

# 需要导入模块: from ase.calculators.vasp import Vasp [as 别名]
# 或者: from ase.calculators.vasp.Vasp import get_atoms [as 别名]
def get_locpot_array(file):
	""" Returns the charge densities on the fine FFT-grid in a numpy array."""
	from ase.calculators.vasp import VaspChargeDensity
	from ase.calculators.vasp import Vasp
 	calc = Vasp(restart=True)
 	cell = calc.get_atoms()
 	vol = cell.get_volume()
	pot_array = numpy.vstack((VaspChargeDensity(file)).chg)
	numpy.divide(pot_array,vol)
	return pot_array
开发者ID:ankoor7,项目名称:VASP-and-ASE-tools,代码行数:12,代码来源:asetools.py

示例5: vasp_vol_relax

# 需要导入模块: from ase.calculators.vasp import Vasp [as 别名]
# 或者: from ase.calculators.vasp.Vasp import get_atoms [as 别名]
def vasp_vol_relax():
    Al = bulk("Al", "fcc", a=4.5, cubic=True)
    calc = Vasp(xc="LDA", isif=7, nsw=5, ibrion=1, ediffg=-1e-3, lwave=False, lcharg=False)
    calc.calculate(Al)

    # Explicitly parse atomic position output file from Vasp
    CONTCAR_Al = io.read("CONTCAR", format="vasp")

    print("Stress after relaxation:\n", calc.read_stress())

    print("Al cell post relaxation from calc:\n", calc.get_atoms().get_cell())
    print("Al cell post relaxation from atoms:\n", Al.get_cell())
    print("Al cell post relaxation from CONTCAR:\n", CONTCAR_Al.get_cell())

    # All the cells should be the same.
    assert (calc.get_atoms().get_cell() == CONTCAR_Al.get_cell()).all()
    assert (Al.get_cell() == CONTCAR_Al.get_cell()).all()

    return Al
开发者ID:jboes,项目名称:ase,代码行数:21,代码来源:vasp_Al_volrelax.py

示例6: vasp_vol_relax

# 需要导入模块: from ase.calculators.vasp import Vasp [as 别名]
# 或者: from ase.calculators.vasp.Vasp import get_atoms [as 别名]
def vasp_vol_relax():
    Al = bulk('Al', 'fcc', a=4.5, cubic=True)
    calc = Vasp(xc='LDA', isif=7, nsw=5,
                ibrion=1, ediffg=-1e-3, lwave=False, lcharg=False)
    calc.calculate(Al)

    # Explicitly parse atomic position output file from Vasp
    CONTCAR_Al = io.read('CONTCAR', format='vasp')

    print 'Stress after relaxation:\n', calc.read_stress()

    print 'Al cell post relaxation from calc:\n', calc.get_atoms().get_cell()
    print 'Al cell post relaxation from atoms:\n', Al.get_cell()
    print 'Al cell post relaxation from CONTCAR:\n', CONTCAR_Al.get_cell()

    # All the cells should be the same.
    assert (calc.get_atoms().get_cell() == CONTCAR_Al.get_cell()).all()
    assert (Al.get_cell() == CONTCAR_Al.get_cell()).all()

    return Al
开发者ID:JConwayAWT,项目名称:PGSS14CC,代码行数:22,代码来源:vasp_Al_volrelax.py

示例7: ase_vol_relax

# 需要导入模块: from ase.calculators.vasp import Vasp [as 别名]
# 或者: from ase.calculators.vasp.Vasp import get_atoms [as 别名]
def ase_vol_relax():
    Al = bulk('Al', 'fcc', a=4.5, cubic=True)
    calc = Vasp(xc='LDA')
    Al.set_calculator(calc)

    from ase.constraints import StrainFilter
    sf = StrainFilter(Al)
    qn = QuasiNewton(sf, logfile='relaxation.log')
    qn.run(fmax=0.1, steps=5)

    print 'Stress:\n', calc.read_stress()
    print 'Al post ASE volume relaxation\n', calc.get_atoms().get_cell()

    return Al
开发者ID:JConwayAWT,项目名称:PGSS14CC,代码行数:16,代码来源:vasp_Al_volrelax.py

示例8: ase_vol_relax

# 需要导入模块: from ase.calculators.vasp import Vasp [as 别名]
# 或者: from ase.calculators.vasp.Vasp import get_atoms [as 别名]
def ase_vol_relax():
    Al = bulk("Al", "fcc", a=4.5, cubic=True)
    calc = Vasp(xc="LDA")
    Al.set_calculator(calc)

    from ase.constraints import StrainFilter

    sf = StrainFilter(Al)
    qn = QuasiNewton(sf, logfile="relaxation.log")
    qn.run(fmax=0.1, steps=5)

    print("Stress:\n", calc.read_stress())
    print("Al post ASE volume relaxation\n", calc.get_atoms().get_cell())

    return Al
开发者ID:jboes,项目名称:ase,代码行数:17,代码来源:vasp_Al_volrelax.py

示例9: setup_dvol_corrections_evq

# 需要导入模块: from ase.calculators.vasp import Vasp [as 别名]
# 或者: from ase.calculators.vasp.Vasp import get_atoms [as 别名]
def setup_dvol_corrections_evq(self):
 from ase.calculators.vasp import Vasp
 calc = Vasp(restart=True)
 atoms = calc.get_atoms()
 cell = atoms.get_cell()
 #Create small and large lattice matrices
 small = cell*0.99
 large = cell*1.01
 # Setup the large and small POSCAR files
 atoms.set_cell(small, scale_atoms=True)
 ase.io.write('POSCAR99pc',atoms,format='vasp', direct=1)
 atoms.set_cell(large, scale_atoms=True)
 ase.io.write('POSCAR101pc',atoms,format='vasp', direct=1
 )
 # copy the basic VASP files to the new directories
 directories = ['0x99pc','1x00pc','1x01pc']
 files = ['KPOINTS','POTCAR','WAVECAR','CHGCAR']
 for dir in directories:
  if not os.path.exists(dir):
   os.makedirs(dir)
  for file in files:
   if os.path.exists(file):
    shutil.copy(file,dir)
 # copy the new POSCAR files to the new directories
 shutil.copy('POSCAR','1x00pc')
 shutil.copy('POSCAR99pc','0x99pc/POSCAR')
 shutil.copy('POSCAR101pc','1x01pc/POSCAR')
 # Edit INCAR to create a single point calculations, and save in new directories
 EVQ_INCAR = 'INCAR_EVQ'
 bad_words = ['NSW', 'LVTOT', 'NELM ', 'ISTART', 'ICHARG']
 with open('INCAR') as oldfile, open(EVQ_INCAR, 'w') as newfile:
  for line in oldfile:
   if not any(bad_word in line for bad_word in bad_words):
    newfile.write(line)
  newfile.write('ISTART = 0\nICHARGE = 2\nNSW  = 0\nLVTOT  = .TRUE.\nNELM  = 60\n')
 # Save the new INCAR in directories
 shutil.copy(EVQ_INCAR,'1x00pc/INCAR')
 shutil.copy(EVQ_INCAR,'0x99pc/INCAR')
 shutil.copy(EVQ_INCAR,'1x01pc/INCAR')
开发者ID:ankoor7,项目名称:VASP-and-ASE-tools,代码行数:41,代码来源:aseroutines.py

示例10: output_cell_params

# 需要导入模块: from ase.calculators.vasp import Vasp [as 别名]
# 或者: from ase.calculators.vasp.Vasp import get_atoms [as 别名]
def output_cell_params():
	import fnmatch
	from ase.calculators.vasp import Vasp
	outfile = 'cell_params.txt'
	fout = open(outfile,'w')
	prelim_matches = []
	matches = []
	for root, dirnames, filenames in os.walk('.'):
		for filename in fnmatch.filter(filenames, 'OUTCAR'):
			prelim_matches.append(os.path.abspath(root))
	for dir in prelim_matches:
		if os.path.isfile(os.path.join(dir,"CONTCAR")):
			matches.append(dir)
	for dir in matches:
		os.chdir(dir)
		label = os.path.abspath(".")
		print>>fout, label
		print>>fout, "{:<14} {:^14} {:^14} {:^14} {:^14} {:^14} {:^14} ".format('volume','a','b','c','alpha','beta','gamma')
		calc = Vasp(restart=1)
		atoms = calc.get_atoms()
		params = asetools.cellparam(atoms)
		volume = atoms.get_volume()
		print>>fout, "{:<14} {:^14} {:^14} {:^14} {:^14} {:^14} {:^14} ".format(volume,params[0],params[1],params[2],params[3],params[4],params[5])
	fout.close
开发者ID:ankoor7,项目名称:VASP-and-ASE-tools,代码行数:26,代码来源:aseroutines.py

示例11: eval_energy

# 需要导入模块: from ase.calculators.vasp import Vasp [as 别名]
# 或者: from ase.calculators.vasp.Vasp import get_atoms [as 别名]

#.........这里部分代码省略.........
                    cell=cell_max-cell_min
                    volume=cell[0]*cell[1]*cell[2]
                else:
                    pressure=0
                    volume=0
                na=totalsol.get_number_of_atoms()
                ena=en/na
                energy=en
                individ[0]=totalsol[0:nat]
                bul=totalsol[(nat):len(totalsol)]
                STR+='Number of positions = '+repr(len(bul)+len(individ[0]))+'\n'
                individ[0].set_cell(csize)
                indiv=individ[0]
            else:
                en=indiv.get_potential_energy()
                if Optimizer.fitness_scheme == 'enthalpyfit':
                    pressure=indiv.get_isotropic_pressure(indiv.get_stress())
                    cell_max=numpy.maximum.reduce(indiv.get_positions())
                    cell_min=numpy.minimum.reduce(indiv.get_positions())
                    cell=cell_max-cell_min
                    volume=cell[0]*cell[1]*cell[2]
                else: 
                    pressure=0
                    volume=0
                na=indiv.get_number_of_atoms()
                ena=en/na
                energy=ena
                individ[0]=indiv
                bul=0
        else:
            if Optimizer.structure=='Defect' or Optimizer.structure=='Surface':
                if Optimizer.calc_method=='VASP':
                    en=totalsol.get_potential_energy()
                    calcb=Vasp(restart=True)
                    totalsol=calcb.get_atoms()
                    stress=calcb.read_stress()
                else:
                    try:
                        totcop=totalsol.copy()
                        if debug: write_xyz(Optimizer.debugfile,totcop,'Individual sent to lammps')
                        OUT=totalsol.calc.calculate(totalsol)
                        totalsol=OUT['atoms']
                        totalsol.set_pbc(True)
                        if Optimizer.fixed_region:
                            if debug:
                                print 'Energy of fixed region calc = ', OUT['thermo'][-1]['pe']
                            totalsol.set_calculator(Optimizer.static_calc)
                            OUT=totalsol.calc.calculate(totalsol)
                            totalsol=OUT['atoms']
                            totalsol.set_pbc(True)
                            if debug:
                                print 'Energy of static calc = ', OUT['thermo'][-1]['pe']
                        en=OUT['thermo'][-1]['pe']
                        stress=numpy.array([OUT['thermo'][-1][i] for i in ('pxx','pyy','pzz','pyz','pxz','pxy')])*(-1e-4*GPa)
                        #force=numpy.maximum.reduce(abs(totalsol.get_forces()))
                        if debug:
                            write_xyz(Optimizer.debugfile,totalsol,'After Lammps Minimization')
                            Optimizer.debugfile.flush()
                    except Exception, e:
                        os.chdir(cwd)
                        STR+='WARNING: Exception during energy eval:\n'+repr(e)+'\n'
                        f=open('problem-structures.xyz','a')
                        write_xyz(f,totcop,data='Starting structure hindex='+individ.history_index)
                        write_xyz(f,totalsol,data='Lammps Min structure')
                        en=10
                        stress=0
                        f.close()
                if Optimizer.fitness_scheme == 'enthalpyfit':
                    pressure=totalsol.get_isotropic_pressure(stress)
                    cell_max=numpy.maximum.reduce(totalsol.get_positions())
                    cell_min=numpy.minimum.reduce(totalsol.get_positions())
                    cell=cell_max-cell_min
                    volume=cell[0]*cell[1]*cell[2]
                else:
                    pressure=totalsol.get_isotropic_pressure(stress)
                    volume=0
                na=totalsol.get_number_of_atoms()
                ena=en/na
                energy=en
                if Optimizer.structure=='Defect':
                    if Optimizer.fixed_region==True or Optimizer.finddefects==False:
                        individ[0]=totalsol[0:nat]
                        bul=totalsol[(nat):len(totalsol)]
                        individ[0].set_cell(csize)
                    else:
                        if 'FI' in Optimizer.debug:
                            outt=find_defects(totalsol,Optimizer.solidbulk,Optimizer.sf,atomlistcheck=Optimizer.atomlist,trackvacs=Optimizer.trackvacs,trackswaps=Optimizer.trackswaps,debug=Optimizer.debugfile)
                        else:
                            outt=find_defects(totalsol,Optimizer.solidbulk,Optimizer.sf,atomlistcheck=Optimizer.atomlist,trackvacs=Optimizer.trackvacs,trackswaps=Optimizer.trackswaps,debug=False)
                        individ[0]=outt[0]
                        bul=outt[1]
                        individ.vacancies = outt[2]
                        individ.swaps = outt[3]
                        STR += outt[4]
                    indiv=individ[0]
                else:
                    top,bul=find_top_layer(totalsol,Optimizer.surftopthick)
                    indiv=top.copy()
                    individ[0]=top.copy()
            else:
开发者ID:uw-cmg,项目名称:MAST,代码行数:104,代码来源:eval_energy2.py

示例12: in

# 需要导入模块: from ase.calculators.vasp import Vasp [as 别名]
# 或者: from ase.calculators.vasp.Vasp import get_atoms [as 别名]
                 outt=find_defects(totalsol,Optimizer.solidbulk,Optimizer.sf,atomlistcheck=Optimizer.atomlist,trackvacs=Optimizer.trackvacs,trackswaps=Optimizer.trackswaps,debug=False)
             individ[0]=outt[0]
             bul=outt[1]
             individ.vacancies = outt[2]
             individ.swaps = outt[3]
             STR += outt[4]
         indiv=individ[0]
     else:
         top,bul=find_top_layer(totalsol,Optimizer.surftopthick)
         indiv=top.copy()
         individ[0]=top.copy()
 else:
     if Optimizer.calc_method=='VASP':
         en=totalsol.get_potential_energy()
         calcb=Vasp(restart=True)
         totalsol=calcb.get_atoms()
         stress=calcb.read_stress()
     else:
         OUT=indiv.calc.calculate(indiv)
         en=OUT['thermo'][-1]['pe']
         #indiv.set_positions(OUT['atoms'].get_positions())
         #indiv.set_cell(OUT['atoms'].get_cell())
         indiv=OUT['atoms']
         indiv.set_pbc(True)
         stress=numpy.array([OUT['thermo'][-1][i] for i in ('pxx','pyy','pzz','pyz','pxz','pxy')])*(-1e-4*GPa)
     if Optimizer.fitness_scheme == 'enthalpyfit':
         pressure=indiv.get_isotropic_pressure(stress)
         cell_max=numpy.maximum.reduce(indiv.get_positions())
         cell_min=numpy.minimum.reduce(indiv.get_positions())
         cell=cell_max-cell_min
         volume=cell[0]*cell[1]*cell[2]
开发者ID:uw-cmg,项目名称:MAST,代码行数:33,代码来源:eval_energy2.py

示例13: abs

# 需要导入模块: from ase.calculators.vasp import Vasp [as 别名]
# 或者: from ase.calculators.vasp.Vasp import get_atoms [as 别名]
            prec = 'Low',
            algo = 'Fast',
            ismear= 0,
            sigma = 1.,
            istart = 0,
            lwave = False,
            lcharg = False)

co.set_calculator(calc)
en = co.get_potential_energy()
assert abs(en + 14.918933) < 1e-4

# Secondly, check that restart from the previously created VASP output works

calc2 = Vasp(restart=True)
co2 = calc2.get_atoms()

# Need tolerance of 1e-14 because VASP itself changes coordinates
# slightly between reading POSCAR and writing CONTCAR even if no ionic
# steps are made.
assert array_almost_equal(co.positions, co2.positions, 1e-14)

assert en - co2.get_potential_energy() == 0.
assert array_almost_equal(calc.get_stress(co), calc2.get_stress(co2))
assert array_almost_equal(calc.get_forces(co), calc2.get_forces(co2))
assert array_almost_equal(calc.get_eigenvalues(), calc2.get_eigenvalues())
assert calc.get_number_of_bands() == calc2.get_number_of_bands()
assert calc.get_xc_functional() == calc2.get_xc_functional()

# Cleanup
calc.clean()
开发者ID:JConwayAWT,项目名称:PGSS14CC,代码行数:33,代码来源:vasp_co.py


注:本文中的ase.calculators.vasp.Vasp.get_atoms方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。