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
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)
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)
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)
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)
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)
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)