Add ZnTe example

This commit is contained in:
Atsushi Togo 2021-01-24 22:14:19 +09:00
parent 855d9a34cd
commit 6e38395615
3 changed files with 122 additions and 0 deletions

View File

@ -0,0 +1,3 @@
Zincblende ZnTe
Forces and NAC params were calculated using VASP code.
PBEsol, 500eV PW-cutoff, 2x2x2 supercell and 2x2x2 off-Gamma k-point mesh for supercells.

View File

@ -0,0 +1,119 @@
import copy
from phonopy.interface.vasp import read_vasp_from_strings
from aiida.manage.configuration import load_profile
from aiida.orm import Int, Float, Bool, Str, load_node, QueryBuilder
from aiida.plugins import DataFactory, WorkflowFactory
from aiida.engine import run, submit
from aiida_phonopy.common.utils import phonopy_atoms_to_structure
load_profile()
Dict = DataFactory('dict')
def get_settings(cutoff_energy, is_nac=False):
unitcell_str = """ Zn Te
1.0
6.0653118499999996 0.0000000000000000 0.0000000000000000
0.0000000000000000 6.0653118499999996 0.0000000000000000
0.0000000000000000 0.0000000000000000 6.0653118499999996
Zn Te
4 4
Direct
0.0000000000000000 0.0000000000000000 0.0000000000000000
0.0000000000000000 0.5000000000000000 0.5000000000000000
0.5000000000000000 0.0000000000000000 0.5000000000000000
0.5000000000000000 0.5000000000000000 0.0000000000000000
0.2500000000000000 0.2500000000000000 0.7500000000000000
0.2500000000000000 0.7500000000000000 0.2500000000000000
0.7500000000000000 0.2500000000000000 0.2500000000000000
0.7500000000000000 0.7500000000000000 0.7500000000000000"""
cell = read_vasp_from_strings(unitcell_str)
structure = phonopy_atoms_to_structure(cell)
base_incar_dict = {
'PREC': 'Accurate',
'IBRION': -1,
'EDIFF': 1e-8,
'NELMIN': 5,
'NELM': 100,
'ENCUT': cutoff_energy,
'IALGO': 38,
'ISMEAR': 0,
'SIGMA': 0.01,
'GGA' : 'PS',
'LREAL': False,
'lcharg': False,
'lwave': False,
}
code_string = 'vasp544mpi@nancy'
resources = {'parallel_env': 'mpi*', 'tot_num_mpiprocs': 24}
base_config = {'code_string': code_string,
'potential_family': 'PBE.54',
'potential_mapping': {'Zn': 'Zn', 'Te': 'Te'},
'options': {'resources': resources,
'max_wallclock_seconds': 3600 * 10}}
base_parser_settings = {'add_energies': True,
'add_forces': True,
'add_stress': True}
forces_config = base_config.copy()
kpoints_mesh = [2, 2, 2]
forces_config.update({'kpoints_mesh': kpoints_mesh,
'kpoints_offset': [0.5, 0.5, 0.5],
'parser_settings': base_parser_settings,
'parameters': {'incar': base_incar_dict.copy()}})
forces_config['parameters']['incar']['NPAR'] = 4
nac_config = {'code_string': code_string,
'potential_family': 'PBE.54',
'potential_mapping': {'Zn': 'Zn', 'Te': 'Te'},
'options': {'resources': resources,
'max_wallclock_seconds': 3600 * 10}}
nac_parser_settings = {'add_born_charges': True,
'add_dielectrics': True}
nac_parser_settings.update(base_parser_settings)
nac_incar_dict = {'lepsilon': True}
nac_incar_dict.update(base_incar_dict.copy())
nac_config.update({'kpoints_mesh': [8, 8, 8],
'kpoints_offset': [0.5, 0.5, 0.5],
'parser_settings': nac_parser_settings,
'parameters': {'incar': nac_incar_dict}})
phonon_settings = {'supercell_matrix': [2, 2, 2],
'distance': 0.03}
if is_nac:
phonon_settings['is_nac'] = is_nac
return structure, forces_config, nac_config, phonon_settings
def launch_phono3py(cutoff_energy=350, is_nac=False):
structure, forces_config, nac_config, phonon_settings = get_settings(
cutoff_energy, is_nac)
Phono3pyWorkChain = WorkflowFactory('phonopy.phono3py')
builder = Phono3pyWorkChain.get_builder()
builder.structure = structure
builder.calculator_settings = Dict(dict={'forces': forces_config,
'nac': nac_config})
builder.run_phono3py = Bool(False)
builder.remote_phono3py = Bool(False)
builder.code_string = Str('phonopy@nancy')
builder.phonon_settings = Dict(dict=phonon_settings)
builder.symmetry_tolerance = Float(1e-5)
builder.options = Dict(dict=forces_config['options'])
dim = phonon_settings['supercell_matrix']
kpoints_mesh = forces_config['kpoints_mesh']
label = ("ZnTe phono3py %dx%dx%d kpt %dx%dx%d PBEsol %d eV"
% (tuple(dim) + tuple(kpoints_mesh) + (cutoff_energy, )))
builder.metadata.label = label
builder.metadata.description = label
future = submit(builder)
print(label)
print(future)
print('Running workchain with pk={}'.format(future.pk))
if __name__ == '__main__':
launch_phono3py(cutoff_energy=500, is_nac=True)

Binary file not shown.