Read and write different stella input versions#
Stella’s Fortran namelist input format was restructured in v1.0: what were ~10 large namelists in earlier releases became ~30+ smaller, purpose-specific namelists. Pyrokinetics supports three format families:
Version |
Marker namelists |
|---|---|
LEGACY |
|
PRE_V1 |
|
V1 |
|
Reading#
Pyrokinetics auto-detects the format on read — no user action required:
from pyrokinetics.gk_code import GKInputSTELLA
gk = GKInputSTELLA("my_input.in")
print(gk._format_version.value) # "legacy", "pre_v1", or "v1"
All three formats expose the same physics through
get_local_geometry(), get_local_species(),
and get_numerics().
Writing#
The format of a written file is determined by the template that was used
to initialise the Pyro object for stella. Two templates ship with
pyrokinetics:
Write v1 (default)#
from pyrokinetics import Pyro, template_dir
pyro = Pyro(gk_file=template_dir / "input.cgyro", gk_code="CGYRO")
pyro.write_gk_file(file_name="out.in", gk_code="STELLA") # -> v1
Write pre-v1#
Pass the pre-v1 template explicitly when creating the stella context:
pyro.write_gk_file(
file_name="out.in",
gk_code="STELLA",
template_file=template_dir / "input.stella_pre_v1",
)
Note
template_file is honoured only when the stella context is created by
this call (i.e. gk_code="STELLA" is passed alongside). If a stella
context already exists on the Pyro object, the existing template
dictates the output format.
Upgrading legacy files to v1#
Pyrokinetics reads legacy files directly. If you need to emit a legacy input as v1 on disk, read it with pyrokinetics and write it back — the output defaults to v1:
pyro = Pyro(gk_file="old_stella.in", gk_code="STELLA")
pyro.write_gk_file(file_name="upgraded_v1.in")
Alternatively, stella ships an authoritative converter at
$STELLA/AUTOMATIC_TESTS/convert_input_files/convert_inputFile.py that
upgrades namelists directly without going through pyrokinetics.
Full worked example#
See docs/examples/example_cgyro_to_stella.py — it reads a CGYRO input and
writes both v1 and pre-v1 stella files, verifying the physics is preserved.