本文整理汇总了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
示例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
示例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
示例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
示例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
示例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
示例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
示例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
示例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')
示例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
示例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:
示例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]
示例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()