Esempio n. 1
0
def get_machine_info(mdata, task_type):
    if task_type == "vasp":
        vasp_exec = mdata['fp_command']
        group_size = mdata['fp_group_size']
        resources = mdata['fp_resources']
        machine = mdata['fp_machine']
        command = vasp_exec
        command = cmd_append_log(command, "log")
    elif task_type in lammps_task_type:
        lmp_exec = mdata['lmp_command']
        group_size = mdata['model_devi_group_size']
        resources = mdata['model_devi_resources']
        machine = mdata['model_devi_machine']
        command = lmp_exec + " -i lammps.in"
        command = cmd_append_log(command, "model_devi.log")
    return machine, resources, command, group_size
Esempio n. 2
0
def run_phonon(task_type, jdata, mdata, ssh_sess):
    conf_dir = jdata['conf_dir']
    fp_params = jdata['vasp_params']
    kspacing = fp_params['kspacing']

    conf_path = os.path.abspath(conf_dir)
    task_path = re.sub('confs', '06.phonon', conf_path)
    if task_type == "vasp":
        work_path = os.path.join(task_path, 'vasp-k%.2f' % kspacing)
    elif task_type in lammps_task_type:
        work_path = os.path.join(task_path, task_type)
    assert (os.path.isdir(work_path))

    all_task = glob.glob(os.path.join(work_path, '.'))

    #vasp
    if task_type == "vasp":
        mdata = decide_fp_machine(mdata)
        vasp_exec = mdata['fp_command']
        group_size = mdata['fp_group_size']
        resources = mdata['fp_resources']
        machine = mdata['fp_machine']
        machine_type = mdata['fp_machine']['machine_type']
        command = vasp_exec
        command = cmd_append_log(command, "log")

        run_tasks_ = []
        for ii in all_task:
            fres = os.path.join(ii, 'OUTCAR')
            if os.path.isfile(fres):
                if not vasp.check_finished(fres):
                    run_tasks_.append(ii)
            else:
                run_tasks_.append(ii)

        run_tasks = [os.path.basename(ii) for ii in run_tasks_]
        forward_files = ['INCAR', 'POTCAR', 'KPOINTS']
        backward_files = ['OUTCAR', 'OSZICAR', 'vasprun.xml']
        common_files = ['POSCAR']

        _run(machine, machine_type, ssh_sess, resources, command, work_path,
             run_tasks, group_size, common_files, forward_files,
             backward_files)
    #lammps
    elif task_type in lammps_task_type:
        None
    else:
        raise RuntimeError("unknow task %s, something wrong" % task_type)
Esempio n. 3
0
File: run.py Progetto: obaica/dpgen
def run_phonon(task_type, jdata, mdata, ssh_sess):
    user = ('user_incar' in jdata.keys())
    work_path = make_work_path(jdata, '06.phonon', False, False, user)

    all_task = glob.glob(os.path.join(work_path, '.'))

    #vasp
    if task_type == "vasp":
        mdata = decide_fp_machine(mdata)
        vasp_exec = mdata['fp_command']
        group_size = mdata['fp_group_size']
        resources = mdata['fp_resources']
        machine = mdata['fp_machine']
        machine_type = mdata['fp_machine']['machine_type']
        command = vasp_exec
        command = cmd_append_log(command, "log")

        run_tasks_ = []
        for ii in all_task:
            fres = os.path.join(ii, 'OUTCAR')
            if os.path.isfile(fres):
                if not vasp.check_finished(fres):
                    run_tasks_.append(ii)
            else:
                run_tasks_.append(ii)

        run_tasks = [os.path.basename(ii) for ii in run_tasks_]
        forward_files = ['INCAR', 'POTCAR', 'KPOINTS']
        backward_files = ['OUTCAR', 'OSZICAR', 'vasprun.xml']
        common_files = ['POSCAR']

        _run(machine, machine_type, ssh_sess, resources, command, work_path,
             run_tasks, group_size, common_files, forward_files,
             backward_files)
    #lammps
    elif task_type in lammps_task_type:
        None
    else:
        raise RuntimeError("unknow task %s, something wrong" % task_type)
Esempio n. 4
0
File: run.py Progetto: obaica/dpgen
def run_surf(task_type, jdata, mdata, ssh_sess):
    static = jdata['static-opt']
    work_path = make_work_path(jdata, '05.surf', False, static, False)

    all_task = glob.glob(os.path.join(work_path, 'struct-*'))

    #vasp
    if task_type == "vasp":
        mdata = decide_fp_machine(mdata)
        vasp_exec = mdata['fp_command']
        group_size = mdata['fp_group_size']
        resources = mdata['fp_resources']
        machine = mdata['fp_machine']
        machine_type = mdata['fp_machine']['machine_type']
        command = vasp_exec
        command = cmd_append_log(command, "log")

        run_tasks_ = []
        for ii in all_task:
            fres = os.path.join(ii, 'OUTCAR')
            if os.path.isfile(fres):
                if not vasp.check_finished(fres):
                    run_tasks_.append(ii)
            else:
                run_tasks_.append(ii)

        forward_files = ['INCAR', 'POSCAR', 'POTCAR']
        backward_files = ['OUTCAR', 'OSZICAR']
        common_files = ['INCAR', 'POTCAR']

    #lammps
    elif task_type in lammps_task_type:
        mdata = decide_model_devi_machine(mdata)
        lmp_exec = mdata['lmp_command']
        group_size = mdata['model_devi_group_size']
        resources = mdata['model_devi_resources']
        machine = mdata['model_devi_machine']
        machine_type = mdata['model_devi_machine']['machine_type']
        command = lmp_exec + " -i lammps.in"
        command = cmd_append_log(command, "model_devi.log")

        run_tasks_ = []
        for ii in all_task:
            fres = os.path.join(ii, 'log.lammps')
            if os.path.isfile(fres):
                with open(fres, 'r') as fp:
                    lines = fp.read().split('\n')
                flag = False
                for jj in lines:
                    if ("Final energy per atoms"
                            in jj) and (not 'print' in jj):
                        flag = True
                if not flag:
                    run_tasks_.append(ii)
            else:
                run_tasks_.append(ii)

        fp_params = jdata['lammps_params']
        model_dir = fp_params['model_dir']
        model_dir = os.path.abspath(model_dir)
        model_name = fp_params['model_name']
        if not model_name:
            models = glob.glob(os.path.join(model_dir, '*pb'))
            model_name = [os.path.basename(ii) for ii in models]
        else:
            models = [os.path.join(model_dir, ii) for ii in model_name]
        forward_files = ['conf.lmp', 'lammps.in'] + model_name
        backward_files = ['log.lammps', 'model_devi.log']
        common_files = ['lammps.in'] + model_name

        if len(model_name) > 1 and task_type == 'deepmd':
            backward_files = backward_files + ['model_devi.out']

    else:
        raise RuntimeError("unknow task %s, something wrong" % task_type)

    run_tasks = [os.path.basename(ii) for ii in run_tasks_]
    _run(machine, machine_type, ssh_sess, resources, command, work_path,
         run_tasks, group_size, common_files, forward_files, backward_files)
Esempio n. 5
0
def run_interstitial(task_type, jdata, mdata, ssh_sess):
    conf_dir = jdata['conf_dir']
    fp_params = jdata['vasp_params']
    kspacing = fp_params['kspacing']
    reprod_opt = jdata['reprod-opt']

    conf_path = os.path.abspath(conf_dir)
    task_path = re.sub('confs', '04.interstitial', conf_path)
    if task_type == "vasp":
        work_path = os.path.join(task_path, 'vasp-k%.2f' % kspacing)
    elif task_type in lammps_task_type:
        work_path = os.path.join(task_path, task_type)
        if reprod_opt:
            work_path = os.path.join(task_path,
                                     '%s-reprod-k%.2f' % (task_type, kspacing))
    assert (os.path.isdir(work_path))

    all_task = glob.glob(os.path.join(work_path, 'struct-*'))

    #vasp
    if task_type == "vasp":
        mdata = decide_fp_machine(mdata)
        vasp_exec = mdata['fp_command']
        group_size = mdata['fp_group_size']
        resources = mdata['fp_resources']
        machine = mdata['fp_machine']
        machine_type = mdata['fp_machine']['machine_type']
        command = vasp_exec
        command = cmd_append_log(command, "log")

        run_tasks_ = []
        for ii in all_task:
            fres = os.path.join(ii, 'OUTCAR')
            if os.path.isfile(fres):
                if not vasp.check_finished(fres):
                    run_tasks_.append(ii)
            else:
                run_tasks_.append(ii)

        forward_files = ['INCAR', 'POSCAR', 'POTCAR']
        backward_files = ['OUTCAR', 'XDATCAR', 'OSZICAR']
        common_files = ['INCAR']

    #lammps
    elif task_type in lammps_task_type:
        mdata = decide_model_devi_machine(mdata)
        lmp_exec = mdata['lmp_command']
        group_size = mdata['model_devi_group_size']
        resources = mdata['model_devi_resources']
        machine = mdata['model_devi_machine']
        machine_type = mdata['model_devi_machine']['machine_type']
        command = lmp_exec + " -i lammps.in"
        command = cmd_append_log(command, "model_devi.log")

        if reprod_opt:
            all_frame = []
            for ii in all_task:
                all_frame += (glob.glob(os.path.join(ii, 'frame.*')))
            work_path = all_task
            all_task = all_frame

        run_tasks_ = []
        for ii in all_task:
            fres = os.path.join(ii, 'log.lammps')
            if os.path.isfile(fres):
                with open(fres, 'r') as fp:
                    lines = fp.read().split('\n')
                flag = False
                for jj in lines:
                    if ("Final energy per atoms"
                            in jj) and (not 'print' in jj):
                        flag = True
                if not flag:
                    run_tasks_.append(ii)
            else:
                run_tasks_.append(ii)

        fp_params = jdata['lammps_params']
        model_dir = fp_params['model_dir']
        model_dir = os.path.abspath(model_dir)
        model_name = fp_params['model_name']
        if not model_name:
            models = glob.glob(os.path.join(model_dir, '*pb'))
            model_name = [os.path.basename(ii) for ii in models]
        else:
            models = [os.path.join(model_dir, ii) for ii in model_name]
        forward_files = ['conf.lmp', 'lammps.in'] + model_name
        backward_files = ['log.lammps', 'model_devi.log']
        common_files = ['lammps.in'] + model_name

        if len(model_name) > 1:
            backward_files = backward_files + ['model_devi.out']

    else:
        raise RuntimeError("unknow task %s, something wrong" % task_type)

    if reprod_opt:
        for ii in work_path:
            run_tasks = []
            for jj in run_tasks_:
                if ii in jj:
                    run_tasks.append(os.path.basename(jj))
            _run(machine, machine_type, ssh_sess, resources, command, ii,
                 run_tasks, group_size, common_files, forward_files,
                 backward_files)
    else:
        run_tasks = [os.path.basename(ii) for ii in run_tasks_]
        _run(machine, machine_type, ssh_sess, resources, command, work_path,
             run_tasks, group_size, common_files, forward_files,
             backward_files)
Esempio n. 6
0
def run_elastic(task_type, jdata, mdata, ssh_sess):
    conf_dir = jdata['conf_dir']
    fp_params = jdata['vasp_params']
    kspacing = fp_params['kspacing']

    conf_path = os.path.abspath(conf_dir)
    task_path = re.sub('confs', '02.elastic', conf_path)
    if task_type == "vasp":
        work_path = os.path.join(task_path, 'vasp-k%.2f' % kspacing)
    elif task_type in lammps_task_type:
        work_path = os.path.join(task_path, task_type)
    assert (os.path.isdir(work_path))
    print(work_path)

    all_task = glob.glob(os.path.join(work_path, "dfm-*"))
    all_task.sort()

    #vasp
    if task_type == "vasp":
        mdata = decide_fp_machine(mdata)
        vasp_exec = mdata['fp_command']
        group_size = mdata['fp_group_size']
        resources = mdata['fp_resources']
        machine = mdata['fp_machine']
        machine_type = mdata['fp_machine']['machine_type']
        command = vasp_exec
        command = cmd_append_log(command, "log")

        run_tasks_ = []
        for ii in all_task:
            fres = os.path.join(ii, 'OUTCAR')
            if os.path.isfile(fres):
                if not vasp.check_finished(fres):
                    run_tasks_.append(ii)
            else:
                run_tasks_.append(ii)

        forward_files = ['INCAR', 'POSCAR', 'POTCAR', 'KPOINTS']
        backward_files = ['OUTCAR', 'CONTCAR', 'OSZICAR']
        common_files = ['INCAR', 'POTCAR', 'KPOINTS']

    #lammps
    elif task_type in lammps_task_type:
        mdata = decide_model_devi_machine(mdata)
        lmp_exec = mdata['lmp_command']
        group_size = mdata['model_devi_group_size']
        resources = mdata['model_devi_resources']
        machine = mdata['model_devi_machine']
        machine_type = mdata['model_devi_machine']['machine_type']
        command = lmp_exec + " -i lammps.in"
        command = cmd_append_log(command, "model_devi.log")

        run_tasks_ = []
        for ii in all_task:
            fres = os.path.join(ii, 'log.lammps')
            if os.path.isfile(fres):
                with open(fres, 'r') as fp:
                    lines = fp.read().split('\n')
                flag = False
                for jj in lines:
                    if ('Final Stress' in jj) and (not 'print' in jj):
                        flag = True
                if not flag:
                    run_tasks_.append(ii)
            else:
                run_tasks_.append(ii)

        fp_params = jdata['lammps_params']
        model_dir = fp_params['model_dir']
        model_dir = os.path.abspath(model_dir)
        model_name = fp_params['model_name']
        if not model_name:
            models = glob.glob(os.path.join(model_dir, '*pb'))
            model_name = [os.path.basename(ii) for ii in models]
        else:
            models = [os.path.join(model_dir, ii) for ii in model_name]
        forward_files = ['conf.lmp', 'lammps.in', 'strain.out'] + model_name
        backward_files = ['log.lammps', 'model_devi.log']
        common_files = ['lammps.in'] + model_name

        if len(model_name) > 1:
            backward_files = backward_files + ['model_devi.out']

    else:
        raise RuntimeError("unknow task %s, something wrong" % task_type)

    run_tasks = [os.path.basename(ii) for ii in run_tasks_]
    _run(machine, machine_type, ssh_sess, resources, command, work_path,
         run_tasks, group_size, common_files, forward_files, backward_files)
Esempio n. 7
0
def run_surf(task_type, jdata, mdata, ssh_sess):
    conf_dir = jdata['conf_dir']
    fp_params = jdata['vasp_params']
    kspacing = fp_params['kspacing']
    deepmd_model_dir = jdata['deepmd_model_dir']
    deepmd_model_dir = os.path.abspath(deepmd_model_dir)

    conf_path = os.path.abspath(conf_dir)
    task_path = re.sub('confs', '05.surf', conf_path)
    if task_type == "vasp":
        work_path = os.path.join(task_path, 'vasp-k%.2f' % kspacing)
    elif task_type == "deepmd":
        work_path = os.path.join(task_path, 'deepmd')
    elif task_type == "meam":
        work_path = os.path.join(task_path, 'meam')
    assert (os.path.isdir(work_path))

    all_task = glob.glob(os.path.join(work_path, 'struct-*'))

    #vasp
    if task_type == "vasp":
        vasp_exec = mdata['fp_command']
        group_size = mdata['fp_group_size']
        resources = mdata['fp_resources']
        machine = mdata['fp_machine']
        machine_type = mdata['fp_machine']['machine_type']
        command = vasp_exec
        command = cmd_append_log(command, "log")

        run_tasks_ = []
        for ii in all_task:
            fres = os.path.join(ii, 'OUTCAR')
            if os.path.isfile(fres):
                if not vasp.check_finished(fres):
                    run_tasks_.append(ii)
            else:
                run_tasks_.append(ii)

        run_tasks = [os.path.basename(ii) for ii in run_tasks_]
        forward_files = ['INCAR', 'POSCAR', 'POTCAR']
        backward_files = ['OUTCAR']
        common_files = ['INCAR', 'POTCAR']

    #lammps
    elif task_type == "deepmd" or task_type == "meam":
        lmp_exec = mdata['lmp_command']
        group_size = mdata['model_devi_group_size']
        resources = mdata['model_devi_resources']
        machine = mdata['model_devi_machine']
        machine_type = mdata['model_devi_machine']['machine_type']
        command = lmp_exec + " -i lammps.in"
        command = cmd_append_log(command, "model_devi.log")

        run_tasks_ = []
        for ii in all_task:
            fres = os.path.join(ii, 'log.lammps')
            if os.path.isfile(fres):
                with open(fres, 'r') as fp:
                    lines = fp.read().split('\n')
                flag = False
                for jj in lines:
                    if ("Final energy per atoms"
                            in jj) and (not 'print' in jj):
                        flag = True
                if not flag:
                    run_tasks_.append(ii)
            else:
                run_tasks_.append(ii)

        run_tasks = [os.path.basename(ii) for ii in run_tasks_]
        all_models = glob.glob(os.path.join(deepmd_model_dir, '*.pb'))
        model_names = [os.path.basename(ii) for ii in all_models]
        forward_files = ['conf.lmp', 'lammps.in'] + model_names
        backward_files = ['log.lammps', 'model_devi.out', 'model_devi.log']
        common_files = ['lammps.in'] + model_names
    else:
        raise RuntimeError("unknow task %s, something wrong" % task_type)

    _run(machine, machine_type, ssh_sess, resources, command, work_path,
         run_tasks, group_size, common_files, forward_files, backward_files)