BUG: atomate2 failed to compute the 3rd-order elastic tensor

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:

Image

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