Source code for defermi.cli.inputs


import os
import numpy as np
import ast

from defermi import DefectsAnalysis

[docs] def setup_import(subparsers): parser_import = subparsers.add_parser('import',help='Import defect calculations') subparsers_import = parser_import.add_subparsers() parser_vasp = subparsers_import.add_parser('vasp',help='import from VASP directories') setup_import_vasp(parser_vasp) return
[docs] def setup_import_vasp(parser): parser.add_argument('-d','--path-defects', default=os.getcwd(), metavar='', type=str, help='Directory containing defects calculations', dest='path_defects') parser.add_argument('-b','--path-bulk', type=str, metavar='', help='Path of the bulk calculation (without defects)', dest='path_bulk') parser.add_argument('-C','--common-path', default=None, type=str, metavar='', help='Import only defects calculations that contain this string in the absolute path', dest='common_path') parser.add_argument('-co','--correction', default=None, type=str, metavar='', help='Compute finite-size charge correction. Available are "kumagai" or "freysoldt"', dest='get_charge_correction') parser.add_argument('-eps','--dielectric-tensor', default=None, type=str, metavar='', help='Dielectric tensor of the pristine material. float,3x1 array ("[1,2,3]") or 3x3 array ("[[1,2,3],[4,5,6],[7,8,9]]")', dest='dielectric_tensor') parser.add_argument('-m','--get-multiplicity', default=False, action='store_true', help='Automatically determine the multiplicity of the defect in the simulation cell. Not implemented for interstitials and defect complexes', dest='get_multiplicity') parser.add_argument('-bg','--band-gap', default=None, type=float, metavar='', help='Band gap of the pristine material. If not provided it is parsed from the bulk path', dest='band_gap') parser.add_argument('-vbm','--valence-band-max', default=None, type=float, metavar='', help='Valence band maximum of the pristine material. If not provided it is parsed from the bulk path', dest='vbm') parser.add_argument('-I','--initial-structure', default=False, action='store_true', help='Use the initial structure to determine the position of the defect', dest='initial_structure') parser.add_argument('-f','--filename', default='DA.csv', type=str, metavar='', help='Filename to save DefectsAnalysis object', dest='filename') parser.set_defaults(func=run_import_vasp)
[docs] def run_import_vasp(args): if args.dielectric_tensor: dielectric_tensor = ast.literal_eval(args.dielectric_tensor) else: dielectric_tensor = None da = DefectsAnalysis.from_vasp_directories( path_defects=args.path_defects, path_bulk=args.path_bulk, common_path=args.common_path, get_charge_correction=args.get_charge_correction, dielectric_tensor=dielectric_tensor, get_multiplicity=args.get_multiplicity, band_gap=args.band_gap, vbm=args.vbm, initial_structure=args.initial_structure ) da.to_file(args.filename) return