A new, high-order multi-physics code, Cygnus.jl, has recently been used to simulate portions of inertial confinement fusion experiments at the University of Rochester's Laboratory for Laser Energetics. Methods of parallelization, code design, performance characterizations, and lessons learned will be presented alongside simulation results.
Inertial confinement fusion (ICF) seeks to initiate fusion by using multiple high-power, nanosecond laser beams to compress and implode a millimeter-scale spherical target filled with deuterium-tritium (DT) fuel. Implosions are designed to increase the pressure and density of the fuel high enough such that DT fusion occurs and releases excess energy.
Simulating ICF experiments presents an extreme challenge and requires combining multiple physics models including multi-material hydrodynamics, nonlinear heat conduction, laser ray-tracing, and radiation transfer. Multi-physics codes are traditionally written in Fortran or C++ for performance, and are occasionally combined with a scripting language interface (such as Python) for user interactivity. Julia provides a compelling alternative to this model by improving developer productivity without sacrificing code performance.
Cygnus was written as part of a doctoral dissertation to simulate the impact of micron-scale defects embedded in the plastic outer-shell of ICF targets. Cygnus combines finite-volume hydrodynamics with non-linear thermal conduction and laser energy deposition on a domain-decomposed block structured mesh. Methods of parallelization (e.g., multi-threaded loops, BlockHaloArrays.jl), code design, performance characterizations (roofline model and strong scaling), and lessons learned will be presented alongside simulation results.
This material is based upon work supported by the Department of Energy National Nuclear Security Administration under Award Number DE-NA0003856, the University of Rochester, and the New York State Energy Research and Development Authority.