Skip to content

ProjectTorreyPines/FUSE.jl

This branch is 9 commits ahead of, 138 commits behind master.

Folders and files

NameName
Last commit message
Last commit date
Jan 9, 2025
Jan 24, 2025
Jan 28, 2025
Nov 15, 2024
Dec 5, 2024
Jan 9, 2025
Jan 29, 2025
Dec 19, 2024
Dec 19, 2024
Sep 15, 2023
Oct 2, 2024
Sep 11, 2024
Jul 29, 2024
Jan 10, 2025
Sep 11, 2024
Jan 17, 2025
Jan 10, 2025
Sep 19, 2024

Repository files navigation

FUSE.jl

FUSE (FUsion Synthesis Engine) is an open-source framework for the integrated design of Fusion Power Plants (FPP). Originally developed by General Atomics, FUSE is now publicly available under the Apache 2.0 license.

Resources

Here are some key resources for getting started with FUSE:

Objectives

FUSE aims to achieve the following objectives:

  • ⚑ Provide a highly efficient, modular framework that tightly couples models across different domains.
  • 🧩 Integrate plasma physics, engineering, control, balance of plant, and costing systems.
  • πŸ€– Leverage machine learning to overcome the typical fidelity/speed tradeoff in simulations.
  • ⏱️ Support both stationary and time-dependent simulations.
  • πŸ’» Harness parallelism and high-performance computing (HPC) for large-scale studies.
  • 🎯 Perform multi-objective constrained optimization to explore design tradeoffs.
  • πŸ” Enable comprehensive sensitivity analysis and uncertainty quantification.

Basic Concepts

FUSE is entirely written in Julia and is structured around the following core concepts:

  1. πŸ“‚ Data storage: All data is stored in the dd structure, which follows the ITER IMAS ontology.
  2. 🧠 Actors: The core components of FUSE simulations are physics and engineering actors.
  3. πŸ•ΉοΈ Control: Actor functionality is governed by act parameters.
  4. πŸš€ Initialization: The data structure can be initialized from 0D ini parameters.
  5. πŸ”§ Use cases: FUSE includes templates for various machines (e.g., FPP, ITER, ARC).
  6. πŸ”„ Workflows: Self-contained studies and optimizations are conducted via workflows, typically involving multiple FUSE simulations.
  7. 🌍 Interoperability: FUSE interfaces with existing modeling tools like OMFIT/OMAS and the IMAS ecosystem.

A diagram illustrating these concepts is provided below:
FUSE Diagram

Usage Example

Here’s a simple example of setting up and running a FUSE simulation in Julia:

using FUSE

# Obtain `ini` and `act` parameters for a specific use case
ini, act = FUSE.case_parameters(:FPP)

# Initialize the `dd` structure from 0D `ini` parameters
dd = FUSE.init(ini, act)

# Run a stationary plasma actor simulation
FUSE.ActorStationaryPlasma(dd, act)

# Get an overview of the simulation results
FUSE.digest(dd)

Make sure to take a look at the introductory tutorial and examples.

Installation

Follow these installation instructions.

Citation

Please cite this work as follows:

@article{meneghini2024fuse,
author = {Meneghini, O. and Slendebroek, T. and Lyons, B.C. and McLaughlin, K. and McClenaghan, J. and Stagner, L. and Harvey, J. and Neiser, T.F. and Ghiozzi, A. and Dose, G. and Guterl, J. and Zalzali, A. and Cote, T. and Shi, N. and Weisberg, D. and Smith, S.P. and Grierson, B.A. and Candy, J.},
doi = {10.48550/arXiv.2409.05894},
journal = {arXiv},
title = {{FUSE (Fusion Synthesis Engine): A Next Generation Framework for Integrated Design of Fusion Pilot Plants}},
year = {2024}
}