Example #1
0
    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)
Example #2
0
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)