Below is a minimal working example for this issue:
from pymatgen.core.structure import Structure
from atomate2.vasp.flows.elastic import ElasticMaker
structure = Structure(
lattice=[[0, 2.13, 2.13], [2.13, 0, 2.13], [2.13, 2.13, 0]],
species=["Mg", "O"],
coords=[[0, 0, 0], [0.5, 0.5, 0.5]],
)
phonon_flow = ElasticMaker(order=3).make(
structure=structure, conventional=True
)
from jobflow_remote import submit_flow
ncores = 16
resources = {"nodes": 1, "partition": "batch", "mem":"80g", "time": "2400:00:00", "ntasks": ncores}
submit_flow(
# bandstructure_flow, worker="my_worker", resources=resources, project="my_project"
phonon_flow, worker="vasp_slurm", resources=resources, project="std", exec_config="vasp_slurm"
)
# run the flow
#$ jf -p std runner start
# watch the flow's status of execution:
#$ watch -n 1 "jf -p std job list"
Show the bug:
werner@x13dai-t:~/Public/repo/github.com/materialsproject/atomate2.git$ git log -1
commit e22dccf367785db7be54f128ae6b43afcbd631cf (HEAD -> main, origin/main, origin/HEAD)
Author: Aaron Kaplan <[email protected]>
Date: Fri Jun 13 15:50:48 2025 -0700
ML forcefields bug fixes (#1220)
* ff bug fixes
* make filter_kwargs an optional kwarg for AseRelaxer
* temporarily disable ASE energy checks - runs are inconsistent even with same initial input
* skip optimizer instantiation when steps <= 1 in ase/mlff flows
* ensure lj test runs one step
* bump ase bc of inconsistent behavior between 3.24 and 3.25
* bump emmet-core
$ jf -p std job info 6620f48c-fc76-46c5-974a-74b67ee0f60b
The selected project is std from config file /home/werner/.jfremote/std.yaml
╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ db_id = '691' │
│ uuid = '6620f48c-fc76-46c5-974a-74b67ee0f60b' │
│ index = 1 │
│ name = 'fit_elastic_tensor' │
│ state = 'FAILED' │
│ error = Traceback (most recent call last): │
│ File "/home/werner/Public/repo/github.com/Matgenix/jobflow-remote.git/src/jobflow_remote/jobs/run.py", line 69, in run_remote_job │
│ response = job.run(store=store) │
│ ^^^^^^^^^^^^^^^^^^^^ │
│ File "/home/werner/.pyenv/versions/3.11.1/envs/datasci/lib/python3.11/site-packages/jobflow/core/job.py", line 604, in run │
│ response = function(*self.function_args, **self.function_kwargs) │
│ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ │
│ File "/home/werner/Public/repo/github.com/materialsproject/atomate2.git/src/atomate2/common/jobs/elastic.py", line 245, in fit_elastic_tensor │
│ return ElasticDocument.from_stresses( │
│ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ │
│ File "/home/werner/Public/repo/github.com/materialsproject/atomate2.git/src/atomate2/common/schemas/elastic.py", line 267, in from_stresses │
│ raw=result.voigt.tolist(), ieee_format=ieee.voigt.tolist() │
│ ^^^^^^^^^^^^^^^^^^^ │
│ AttributeError: 'list' object has no attribute 'tolist' │
│ remote = {'step_attempts': 0, 'process_id': '1301', 'prerun_cleanup': False} │
│ created_on = '2025-06-14 15:43' │
│ updated_on = '2025-06-14 15:51' │
│ start_time = '2025-06-14 15:51' │
│ end_time = '2025-06-14 15:51' │
│ metadata = {} │
│ run_dir = '/home/werner/Desktop/std_vasp_slurm/66/20/f4/6620f48c-fc76-46c5-974a-74b67ee0f60b_1' │
│ parents = ['b3922361-a2ad-462d-b071-80c75202af84', '155e45a9-84c6-4989-8d70-ba156bd8caaf', 'b4d6ff01-a28d-4e31-8737-40dd0e44eb6a'] │
│ priority = 0 │
│ worker = 'vasp_slurm' │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
I have created a PR to fix this bug. See here for the related discussion.
Regards,
Zhao