Source code for sirepo.sim_data.lattice
# -*- coding: utf-8 -*-
"""Common simulation data operations for lattice apps
:copyright: Copyright (c) 2025 RadiaSoft LLC. All Rights Reserved.
:license: http://www.apache.org/licenses/LICENSE-2.0.html
"""
from pykern.pkcollections import PKDict
from pykern.pkdebug import pkdc, pkdlog, pkdp
import sirepo.sim_data
import sirepo.template.lattice
[docs]
class LatticeSimData(sirepo.sim_data.SimDataBase):
[docs]
@classmethod
def fixup_old_data(cls, data, qcall, **kwargs):
dm = data.models
dm.setdefault("rpnVariables", [])
for i in range(1, 5):
n = f"bunchReport{i}"
dm.setdefault(n, PKDict())
cls.update_model_defaults(dm[n], "bunchReport")
for c in ("commands", "elements"):
for m in dm.get(c, []):
cls.update_model_defaults(
m, sirepo.template.lattice.LatticeUtil.model_name_for_data(m)
)
@classmethod
def _compute_job_fields(cls, data, report, compute_model):
if compute_model == "bunchReport":
return cls._BUNCH_REPORT_DEPENDENCIES
return [report]
@classmethod
def _compute_model(cls, analysis_model, *args, **kwargs):
if "bunchReport" in analysis_model:
return "bunchReport"
return super()._compute_model(analysis_model, *args, **kwargs)
@classmethod
def _lib_file_basenames(cls, data):
return (
sirepo.template.lattice.LatticeUtil(data, cls.schema())
.iterate_models(sirepo.template.lattice.InputFileIterator(cls))
.result
)