def test_modify_potcar(self): Potcar(["Si"]).write_file("POTCAR") potcar = Potcar.from_file("POTCAR") self.assertFalse("alt" in potcar[0].header) # modify/test ft = ModifyPotcar(potcar_symbols={"Si": "O"}) ft = load_object(ft.to_dict()) # simulate database insertion ft.run_task({}) new_potcar = Potcar.from_file("POTCAR") self.assertEqual(len(new_potcar), 1) self.assertEqual(new_potcar[0].symbol, "O")
def test_modify_potcar(self): Potcar(["Si"]).write_file("POTCAR") potcar = Potcar.from_file("POTCAR") self.assertFalse("alt" in potcar[0].header) # modify/test ft = ModifyPotcar(potcar_symbols={"Si": "O"}) ft = load_object(ft.to_dict()) # simulate database insertion ft.run_task({}) new_potcar = Potcar.from_file("POTCAR") self.assertEqual(len(new_potcar), 1) self.assertEqual(new_potcar[0].symbol, 'O')
def add_modify_potcar(original_wf, modify_potcar_params=None, fw_name_constraint=None): """ Every FireWork that runs VASP has a ModifyIncar task just beforehand. For example, allows you to modify the INCAR based on the Worker using env_chk or using hard-coded changes. Args: original_wf (Workflow) modify_incar_params (dict) - dict of parameters for ModifyIncar. fw_name_constraint (str) - Only apply changes to FWs where fw_name contains this substring. Returns: Workflow """ modify_potcar_params = modify_potcar_params or { "potcar_symbols": ">>potcar_symbols<<" } for idx_fw, idx_t in get_fws_and_tasks( original_wf, fw_name_constraint=fw_name_constraint, task_name_constraint="RunVasp"): original_wf.fws[idx_fw].tasks.insert( idx_t, ModifyPotcar(**modify_potcar_params)) return original_wf