Advance
Verifying that scientific software works correctly is challenging — especially for programs written in Fortran, a cornerstone language for high‑performance computing (HPC) that often runs in parallel across thousands of processors. Berkeley Lab’s Julienne and Assert frameworks address this challenge by enabling developers to check the correctness of Fortran code, including programs that use Fortran’s modern parallel features. Julienne supports the writing and execution of unit tests to pinpoint problems in specific parts of a program, while Assert allows developers to define and enforce logical constraints that must hold true for correct execution. These tools have already been adopted by projects funded by the U.S. Department of Energy, Department of Defense, and the Nuclear Regulatory Commission, and were featured in a tutorial at the Improving Scientific Software 2025 Conference (slides, recording).
Background
Scientific codes are often large, complex, and optimized for HPC — making them harder to test and debug than typical software. Many existing testing tools don’t fully support the unique demands of HPC applications, such as distributed‑memory parallelism, or integrate seamlessly with languages like Fortran, which remains central to large‑scale modeling and simulation in fields from earth systems modeling to nuclear engineering. Without language‑aware, parallel‑capable tools, software errors can go undetected, potentially undermining scientific results. Julienne and Assert fill this gap, providing developers with open‑source solutions designed specifically to improve the reliability and maintainability of Fortran code in HPC environments.
Breakdown
Julienne uses object‑oriented design, including defined operations that allow users to write tests using idioms close to natural language. Assert provides useful, customizable output during error termination when asserted correctness requirements fail. Assert also supports a functional programming style based on “pure” procedures that ease various optimizations, including parallelization. Because Assert’s constraint enforcement works inside pure procedures, Assert mitigates against a reason developers often cite for not writing pure procedures: the inability to produce diagnostic output in such procedures during normal execution. Julienne wraps and extends Assert by facilitating writing constraints in natural-language idioms. Together, these frameworks give Fortran developers powerful, complementary tools to catch errors early, enforce correctness, and build more trustworthy scientific software.
Download the Software:
Julienne: https://go.lbl.gov/julienne
Assert: https://go.lbl.gov/assert
Contributors:
Damian Rouson, Katherine Rasmussen, Dan Bonachea
About Computing Sciences at Berkeley Lab
High performance computing plays a critical role in scientific discovery. Researchers increasingly rely on advances in computer science, mathematics, computational science, data science, and large-scale computing and networking to increase our understanding of ourselves, our planet, and our universe. Berkeley Lab's Computing Sciences Area researches, develops, and deploys new foundations, tools, and technologies to meet these needs and to advance research across a broad range of scientific disciplines.