def __init__(self,directory_path,seedname): r""" Initialises an instance of the :class:`~effmass.inputs.DataCastep` class. Args: directory_path (str): The path to a directory containing seedname.cell, seedname.out and seedname.bands seedname (str): The name (without suffix) of the input and output files Returns: None. """ Castep_calculator = Castep(directory_path) Castep_calculator.atoms = io.read(directory_path+"./"+seedname+".cell", format='castep-cell') ASE_bandstructure = Castep_calculator.band_structure(directory_path+"./"+seedname+".bands") ASE_atoms = Castep_calculator.atoms super().__init__(ASE_bandstructure, ASE_atoms)
def save_muonconf_castep(a, folder, params): # Muon mass and gyromagnetic ratio mass_block = 'AMU\n{0} 0.1138' gamma_block = 'radsectesla\n{0} 851586494.1' if isinstance(a.calc, Castep): ccalc = a.calc else: ccalc = Castep() ccalc.cell.kpoint_mp_grid.value = list_to_string(params['k_points_grid']) ccalc.cell.species_mass = mass_block.format( params['mu_symbol']).split('\n') ccalc.cell.species_gamma = gamma_block.format( params['mu_symbol']).split('\n') ccalc.cell.fix_all_cell = True # To make sure for older CASTEP versions a.set_calculator(ccalc) name = os.path.split(folder)[-1] io.write(os.path.join(folder, '{0}.cell'.format(name)), a) ccalc.atoms = a if params['castep_param'] is not None: castep_params = yaml.load(open(params['castep_param'], 'r')) else: castep_params = {} # Parameters from .yaml will overwrite parameters from .param castep_params['task'] = "GeometryOptimization" castep_params['geom_max_iter'] = params['geom_steps'] castep_params['geom_force_tol'] = params['geom_force_tol'] castep_params['max_scf_cycles'] = params['max_scc_steps'] parameter_file = os.path.join(folder, '{0}.param'.format(name)) yaml.safe_dump(castep_params, open(parameter_file, 'w'), default_flow_style=False)