FUSE

Contacts: Joseph McClenaghan, Tim Slendebroek, Tom Neiser

Short Description

Run the FUSE integrated-modeling framework from OMFIT

Keywords

Framework, FPP, design, integrated modeling, whole facility, transport

Long Description

This module runs FUSE (the Julia-based FUsion Synthesis Engine) directly on an HPC server, acting as a bridge between OMFIT and the FUSE integrated-modeling suite. It replaces the previous web-portal client with local execution against a real FUSE install, so OMFIT users can drive FUSE with the same data structures they already use.

Concepts

  • Data lives in the dd data structure, based on the ITER IMAS ontology (exchanged with OMFIT as an OMAS ODS, dd.json).

  • Physics and engineering actors operate on dd; their behavior is controlled by the act parameters.

  • dd is initialized from 0D ini parameters (or from an existing ODS).

  • ini and act are exchanged as JSON (FUSE.ini2json / act2json) and can be edited in the GUI before running.

  • FUSE ships template use cases for many machines (ITER, D3D, FPP, ARC, SPARC, KDEMO, …), fetched via FUSE.case_parameters.

Execution backends

The module deploys a single driver script (TEMPLATES/fuse_driver.jl) to the remote working directory and launches it through OMFITx.executable (ssh + rsync). Two backends are supported, selected in the Setup tab:

  • module (default): loads the site FUSE Lmod module and runs julia --sysimage=$FUSE_HOME/environments/$FUSE_ENVIRONMENT/sys_fuse.so. Works on Perlmutter (module use .../m3739/perlmutter/fuse/modules && module load fuse) and Omega (module load fuse).

  • container (Perlmutter): runs the podman-hpc FUSE image (e.g. fuse:v1.1.3) from the shared squash-dir.

The Site defaults combo box prefills the backend, module prelude, container image, squash-dir, and #SBATCH header for a known site; choose custom to edit them freely for another cluster.

On Perlmutter the container backend is the default because it is fully self-contained and validated end-to-end. The shared module sysimage may fail to initialize on some login nodes (an HDF5 initialization segfault tied to the shared environment’s depot); prefer the container there until the module deploy is refreshed. On Omega the module backend is used.

Typical workflow

  1. Setup: pick the server (OMFIT server nickname), the site defaults, and the backend. Optionally enable sbatch submission for long runs.

  2. Template: choose a use case and click Fetch template to populate INPUTS['ini'] and INPUTS['act']; edit them as needed.

  3. Run: choose the workflow and click Run FUSE:

    • whole_facilityFUSE.init then FUSE.ActorWholeFacility

    • flux_matcherFUSE.init then FUSE.ActorFluxMatcher (sets act.ActorCoreTransport.model = :FluxMatcher)

    • init_only – just initialize dd

    To start from an existing equilibrium/profiles, set Initialize from to ods and load an ODS json into INPUTS['dd_in'].

  4. Results: the output dd is loaded into OUTPUTS['dd'] as an ODS; use Quick-look plots for a summary, or feed dd into other OMFIT modules.

Requirements

  • A FUSE install on the target server: the Lmod fuse module or the podman-hpc image. On NERSC/Perlmutter and GA/Omega these are maintained under project m3739 / the theory FUSE area.

  • The first run compiles nothing extra (the sysimage is prebuilt), so startup is seconds; batch submission is available for long transport/whole-facility runs.

Supported devices

  • Device agnostic (via FUSE.case_parameters templates)

Relevant publications

    1. Meneghini, T. Slendebroek, B.C. Lyons, K. McLaughlin, J. McClenaghan, L. Stagner, J. Harvey, T.F. Neiser, A. Ghiozzi, G. Dose, J. Guterl, A. Zalzali, T. Cote, N. Shi, D. Weisberg, S.P. Smith, B.A. Grierson, A next generation framework for integrated design of fusion pilot plants, IAEA Fusion Energy Conference (2023)

Contributors

List of contributors sorted by number of lines authored:

488 Tom Neiser
 55 Orso Meneghini

Users

List of usernames sorted by number of module imports: meneghini, mcclenaghanj, shis