コード例 #1
0
def load_species_mnte_dummy_fe(vasp : Vasp, structure):
    # See vasp/functional.py:  elementName, fileName, max or min oxidation state
    pseudoDir = '$PSEUDO_DIR'
    vasp.add_specie = "Te", pseudoDir + "/Te"
    vasp.add_specie = "Mn", pseudoDir + "/Mn_pv"
    vasp.add_specie = "Fe", pseudoDir + "/Mn_pv"
    return(vasp)
コード例 #2
0
ファイル: default_chains.py プロジェクト: rtrottie/chain
def set_ncore_auto(vasp: Vasp, structure=None):
    vasp.npar = None
    try:
        vasp.add_keyword('ncore', int(os.environ['PBS_NUM_PPN']))
    except:
        vasp.add_keyword('ncore', int(os.environ['SLURM_CPUS_ON_NODE']))

    return vasp
コード例 #3
0
ファイル: default_chains.py プロジェクト: rtrottie/chain
def set_kpar_per_node(vasp: Vasp, structure=None):
    try:
        nodes = int(os.environ['PBS_NUM_NODES'])
    except:
        nodes = int(os.environ['SLURM_JOB_NUM_NODES'])

    vasp.add_keyword('kpar', nodes)
    return vasp
コード例 #4
0
ファイル: default_chains.py プロジェクト: rtrottie/chain
def set_333(vasp: Vasp, structure=None):
    x = 3
    y = 3
    z = 3
    packing = 'Gamma'
    vasp.kpoints = "Gamma_Mesh\n0\n{}\n{} {} {}".format(packing, x, y, z)
    vasp.add_keyword('auto_gamma', False)
    return vasp
コード例 #5
0
ファイル: default_chains.py プロジェクト: rtrottie/chain
def set_gamma(vasp: Vasp, structure=None):
    x = 1
    y = 1
    z = 1
    packing = 'Gamma'
    vasp.kpoints = "Gamma_Mesh\n0\n{}\n{} {} {}".format(packing, x, y, z)
    vasp.ismear = 0
    vasp.add_keyword('kpar', 1)
    return vasp
コード例 #6
0
ファイル: default_chains.py プロジェクト: rtrottie/chain
def set_algo_normal_optimal_converge(vasp: Vasp, structure=None):
    '''

    :param vasp: Vasp
    :param structure:
    :return:
    '''
    vasp.algo = "Normal"
    vasp.add_keyword('nsim', 1)
    return vasp
コード例 #7
0
ファイル: default_chains.py プロジェクト: rtrottie/chain
        def set_kpoint(vasp: Vasp, structure):
            lengths = [
                sum([x**2 for x in structure.cell.transpose()[i]])**(1 / 2)
                for i in range(3)
            ]  # using distance formula to get vector lengths
            kpoints = [math.ceil(min(lengths) / x * kpoint) for x in lengths
                       ]  # scaling number of kpoints for shorter vectors

            packing = 'Gamma'
            vasp.kpoints = "Gamma_Mesh\n0\n{}\n{} {} {}".format(
                packing, kpoints[0], kpoints[1], kpoints[2])
            vasp.ediff = convergence_value / 1000
            return vasp
コード例 #8
0
ファイル: default_chains.py プロジェクト: rtrottie/chain
def vibrations_disp(vasp: Vasp, structure: Structure):
    vasp.ibrion = 5
    vasp.istart = 1
    vasp.icharg = 1
    vasp.nelmin = 3
    vasp.nsw = 1
    vasp.potim = 0.015
    vasp.ediff = 1e-8
    vasp.add_keyword('iopt', 0)
    return vasp
コード例 #9
0
ファイル: default_chains.py プロジェクト: rtrottie/chain
def get_eigen(vasp: Vasp, structure=None):
    # Start
    vasp.istart = 1
    vasp.icharg = 1
    # Electronic
    vasp.prec = "Accurate"
    vasp.nelm = 200
    vasp.ediff = 1e-5
    vasp.nelmdl = 0
    # Ionic
    vasp.nsw = 5000
    vasp.ediffg = -0.05
    # Output
    vasp.lwave = True
    vasp.lcharg = True
    return vasp
コード例 #10
0
ファイル: default_chains.py プロジェクト: rtrottie/chain
def set_441(vasp: Vasp, structure=None):
    x = 4
    y = 4
    z = 1
    packing = 'Gamma'
    vasp.kpoints = "Gamma_Mesh\n0\n{}\n{} {} {}".format(packing, x, y, z)
    return vasp
コード例 #11
0
ファイル: default_chains.py プロジェクト: rtrottie/chain
def full_converge(vasp: Vasp, structure=None):
    # Start
    vasp.istart = 1
    vasp.icharg = 1
    # Electronic
    vasp.prec = "Accurate"
    vasp.nelm = 200
    vasp.ediff = 1e-6
    vasp.nelmdl = 0
    # Ionic
    vasp.nsw = 5000
    vasp.ediffg = -0.02
    # Output
    vasp.lwave = True
    vasp.lcharg = True
    return vasp
コード例 #12
0
ファイル: default_chains.py プロジェクト: rtrottie/chain
def set_kpoints_auto_20(vasp: Vasp, structure=None):
    x = 20
    packing = 'Auto'
    vasp.kpoints = "Automatic\n0\n{}\n{}".format(packing, x)
    kpoint_str = vasp.kpoints.split('\n')[3]
    kpoints = [int(x) for x in kpoint_str.split()]
    if len(kpoints) > 1:
        num_kpoints = kpoints[0] * kpoints[1] * kpoints[2]
    else:
        density = kpoints[0]
        num_kpoints = math.ceil(
            density / np.linalg.norm(structure.cell[:, 0])) * math.ceil(
                density / np.linalg.norm(structure.cell[:, 1])) * math.ceil(
                    density / np.linalg.norm(structure.cell[:, 2]))
    if num_kpoints < 4:
        vasp.ismear = 0
    return vasp
コード例 #13
0
ファイル: default_chains.py プロジェクト: rtrottie/chain
def set_algo_normal(vasp: Vasp, structure=None):
    '''

    :param vasp: Vasp
    :param structure:
    :return:
    '''
    vasp.algo = "Normal"
    return vasp
コード例 #14
0
ファイル: default_chains.py プロジェクト: rtrottie/chain
def set_nospin(vasp: Vasp, structure=None):
    '''

    :param vasp: Vasp
    :param structure:
    :return:
    '''
    vasp.ispin = 1
    return vasp
コード例 #15
0
ファイル: default_chains.py プロジェクト: rtrottie/chain
def cell_relax(vasp: Vasp, structure=None):
    vasp.isif = 3
    vasp.ibrion = 1
    vasp.potim = 0.4
    vasp.ediffg = -0.005
    vasp.add_keyword('iopt', 0)
    return vasp
コード例 #16
0
ファイル: default_chains.py プロジェクト: rtrottie/chain
def scan(vasp: Vasp, structure=None):
    vasp.add_keyword('metagga', 'SCAN')
    vasp.add_keyword('lhfcalc', False)
    vasp.algo = 'Normal'
    vasp.ldau = False
    no_U(vasp, structure)
    return vasp
コード例 #17
0
ファイル: default_chains.py プロジェクト: rtrottie/chain
def set_kpar_by_core(vasp: Vasp, structure=None):
    try:
        np = int(os.environ['PBS_NP'])
    except:
        np = int(os.environ['SLURM_NTASKS'])
    atoms = len(structure)
    if np / atoms > 1:
        kpar = math.ceil(np / math.sqrt(atoms))
        print(vasp.kpoints)
        print(vasp.kpoints)
        print(vasp.kpoints)
        print(vasp.kpoints)
        print(vasp.kpoints)
        kpoint_str = vasp.kpoints.split('\n')[3]
        kpoints = [int(x) for x in kpoint_str.split()]
        num_kpoints = kpoints[0] * kpoints[1] * kpoints[2]
        while kpar > 1:
            if (num_kpoints % kpar == 0) and (np % kpar == 0):
                vasp.add_keyword('kpar', kpar)
                return vasp
            else:
                kpar = kpar - 1
    vasp.add_keyword('kpar', 1)
    return vasp
コード例 #18
0
def load_species(vasp : Vasp, structure):
    # See vasp/functional.py:  elementName, fileName, max or min oxidation state
    pseudoDir = '$PSEUDO_DIR'
    vasp.add_specie = "Zn", pseudoDir + "/Zn"
    vasp.add_specie = "O",  pseudoDir + "/O"
    vasp.add_specie = "Al", pseudoDir + "/Al"
    vasp.add_specie = "Cd", pseudoDir + "/Cd"
    vasp.add_specie = "Te", pseudoDir + "/Te"
    vasp.add_specie = "Ga", pseudoDir + "/Ga"
    vasp.add_specie = "As", pseudoDir + "/As"
    vasp.add_specie = "In", pseudoDir + "/In"
    vasp.add_specie = "P", pseudoDir + "/P"
    vasp.add_specie = "Te", pseudoDir + "/Te"
    vasp.add_specie = "Bi", pseudoDir + "/Bi_d"
    vasp.add_specie = "Mn_+", pseudoDir + "/Mn_pv"
    vasp.add_specie = "Mn_-", pseudoDir + "/Mn_pv"
    return(vasp)
コード例 #19
0
ファイル: default_chains.py プロジェクト: rtrottie/chain
def set_kpar_auto(vasp: Vasp, structure=None):
    try:
        nodes = int(os.environ['PBS_NUM_NODES'])
        procs = int(os.environ['PBS_NP'])
    except:
        nodes = int(os.environ['SLURM_JOB_NUM_NODES'])
        procs = int(os.environ['SLURM_NTASKS'])

    atoms = len(structure)
    if procs / atoms > 1:
        kpar = math.ceil(procs / atoms) * 2
        print(vasp.kpoints)
        print(vasp.kpoints)
        print(vasp.kpoints)
        print(vasp.kpoints)
        print(vasp.kpoints)
        kpoint_str = vasp.kpoints.split('\n')[3]
        kpoints = [int(x) for x in kpoint_str.split()]
        if len(kpoints) > 1:
            num_kpoints = kpoints[0] * kpoints[1] * kpoints[2]
        else:
            density = kpoints[0]
            num_kpoints = math.ceil(
                density / np.linalg.norm(structure.cell[:, 0])) * math.ceil(
                    density /
                    np.linalg.norm(structure.cell[:, 1])) * math.ceil(
                        density / np.linalg.norm(structure.cell[:, 2]))
        while kpar > 1:
            if num_kpoints % kpar == 0 and nodes % kpar == 0:
                vasp.add_keyword('kpar', kpar)
                vasp.npar = int(nodes / kpar)
                return vasp
            else:
                kpar = kpar - 1
    vasp.add_keyword('kpar', 1)
    vasp.npar = int(nodes)
    return vasp
コード例 #20
0
ファイル: encut.py プロジェクト: rtrottie/chain
def set_900(vasp: Vasp, structure=None):
    vasp.encut = 900
    return vasp
コード例 #21
0
ファイル: encut.py プロジェクト: rtrottie/chain
def set_850(vasp: Vasp, structure=None):
    vasp.encut = 850
    return vasp
コード例 #22
0
ファイル: default_chains.py プロジェクト: rtrottie/chain
def set_npar_1(vasp: Vasp, structure=None):
    vasp.npar = 1
    return vasp
コード例 #23
0
ファイル: default_chains.py プロジェクト: rtrottie/chain
def set_ncore_12(vasp: Vasp, structure=None):
    vasp.npar = None
    vasp.add_keyword('ncore', 12)
    return vasp
コード例 #24
0
ファイル: default_chains.py プロジェクト: rtrottie/chain
def tetrahedron(vasp: Vasp, structure=None):
    vasp.ismear = -5
    return vasp
コード例 #25
0
ファイル: default_chains.py プロジェクト: rtrottie/chain
def set_npar_2(vasp: Vasp, structure=None):
    vasp.npar = 2
    return vasp
コード例 #26
0
ファイル: default_chains.py プロジェクト: rtrottie/chain
def set_dos(vasp: Vasp, structure=None):
    vasp.algo = 'None'
    return vasp
コード例 #27
0
ファイル: default_chains.py プロジェクト: rtrottie/chain
def ggau(vasp: Vasp, structure=None):
    vasp.add_keyword('metagga', None)
    vasp.add_keyword('lhfcalc', False)
    vasp.algo = 'Normal'
    vasp.ldau = True
    return vasp
コード例 #28
0
ファイル: default_chains.py プロジェクト: rtrottie/chain
def set_algo_damp025(vasp: Vasp, structure=None):
    vasp.algo = "Damped"
    vasp.add_keyword('time', 0.25)
    return vasp
コード例 #29
0
ファイル: default_chains.py プロジェクト: rtrottie/chain
def no_hse06(vasp: Vasp, structure=None):
    vasp.add_keyword('lhfcalc', False)
    vasp.algo = 'Normal'
    vasp.ldau = True
    return vasp
コード例 #30
0
ファイル: default_chains.py プロジェクト: rtrottie/chain
def hse06(vasp: Vasp, structure=None):
    vasp.nelmdl = 0
    vasp.nelm = 1000
    vasp.add_keyword('lhfcalc', True)
    vasp.precfock = 'Fast'
    vasp.add_keyword('hfscreen', 0.2)
    vasp.algo = 'All'
    vasp.npar = None
    vasp.ldau = False
    vasp.lwave = True
    vasp.lcharg = True
    vasp.ismear = 0
    vasp.add_keyword('metagga', False)
    vasp.add_keyword('ncore', 8)
    return vasp