Skip to content

Commit 35d9740

Browse files
move get_charge_density job to avoid large object storage
1 parent 6349766 commit 35d9740

File tree

1 file changed

+8
-26
lines changed

1 file changed

+8
-26
lines changed

src/atomate2/common/jobs/electrode.py

Lines changed: 8 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
from pymatgen.analysis.structure_matcher import StructureMatcher
2222
from pymatgen.core import Structure
2323
from pymatgen.entries.computed_entries import ComputedEntry
24-
from pymatgen.io.vasp.outputs import VolumetricData
2524

2625

2726
logger = logging.getLogger(__name__)
@@ -92,9 +91,9 @@ def get_stable_inserted_results(
9291
add_name = f"{n_inserted}"
9392

9493
static_job = static_maker.make(structure=structure)
95-
chg_job = get_charge_density_job(static_job.output.dir_name, get_charge_density)
9694
insertion_job = get_inserted_structures(
97-
chg_job.output,
95+
static_job.output.dir_name,
96+
get_charge_density,
9897
inserted_species=inserted_element,
9998
insertions_per_step=insertions_per_step,
10099
)
@@ -120,13 +119,12 @@ def get_stable_inserted_results(
120119
n_inserted=n_inserted + 1,
121120
)
122121

123-
for job_ in [static_job, chg_job, insertion_job, min_en_job, relax_jobs, next_step]:
122+
for job_ in [static_job, insertion_job, min_en_job, relax_jobs, next_step]:
124123
job_.append_name(f" {add_name}")
125124
combine_job = get_computed_entries(next_step.output, min_en_job.output)
126125
replace_flow = Flow(
127126
jobs=[
128127
static_job,
129-
chg_job,
130128
insertion_job,
131129
relax_jobs,
132130
min_en_job,
@@ -204,7 +202,8 @@ def get_insertion_electrode_doc(
204202

205203
@job
206204
def get_inserted_structures(
207-
chg: VolumetricData,
205+
prev_dir: Path | str,
206+
get_charge_density: Callable,
208207
inserted_species: ElementLike,
209208
insertions_per_step: int = 4,
210209
charge_insertion_generator: ChargeInterstitialGenerator | None = None,
@@ -213,7 +212,8 @@ def get_inserted_structures(
213212
214213
Parameters
215214
----------
216-
chg: The charge density.
215+
prev_dir: The previous directory where the static calculation was performed.
216+
get_charge_density: A function to get the charge density from a task document.
217217
inserted_species: The species to insert.
218218
insertions_per_step: The maximum number of ion insertion sites to attempt.
219219
charge_insertion_generator: The charge insertion generator to use,
@@ -226,6 +226,7 @@ def get_inserted_structures(
226226
"""
227227
if charge_insertion_generator is None:
228228
charge_insertion_generator = ChargeInterstitialGenerator()
229+
chg = get_charge_density(prev_dir)
229230
gen = charge_insertion_generator.generate(chg, insert_species=[inserted_species])
230231
inserted_structures = [defect.defect_structure for defect in gen]
231232
return inserted_structures[:insertions_per_step]
@@ -297,22 +298,3 @@ def get_min_energy_summary(
297298
return None
298299

299300
return min(topotactic_summaries, key=lambda x: x.entry.energy_per_atom)
300-
301-
302-
@job
303-
def get_charge_density_job(
304-
prev_dir: Path | str,
305-
get_charge_density: Callable,
306-
) -> VolumetricData:
307-
"""Get the charge density from a task document.
308-
309-
Parameters
310-
----------
311-
prev_dir: The previous directory where the static calculation was performed.
312-
get_charge_density: A function to get the charge density from a task document.
313-
314-
Returns
315-
-------
316-
The charge density.
317-
"""
318-
return get_charge_density(prev_dir)

0 commit comments

Comments
 (0)