Development method and status of the open-source CFD program BARAM
This article is a summary of the presentation presented at the Fall Conference of the Korean Society for Computational Fluids Engineering on October 31, 2024.
BARAM development method
BARAM is a general-purpose computational fluid dynamics (CFD) program package developed and released by Nextform Inc. ( baramcfd.org ). BARAM is an open-source software-based engineering solution, developed using a different methodology than standard software. Here’s a brief overview of the development process.
All development tools use open-source software. We use NextFOAM, a fork of OpenFOAM developed by Nextfoam, for computational fluid dynamics calculations. The graphical user interface uses Pyside6, while 3D graphics utilize the VTK library. 2D graphs use PyQtGraph, and the development language is Python.
BARAM’s development process goes through the following steps: [Requirements Determination] – [CFD Code Development] – [UX Development] – [Testing] – [Documentation] – [Release].
Requirements
The requirements currently in development are as follows:
- Compressible/Incompressible flow, Heat transfer(convection, conduction, CHT), Multi-phase(VOF, cavitation), Species transport
- Turbulence models : k-epsilon, SST k-omega, Spalar-Allmaras, LES, DES
- Non-Newtonian viscosity model
- MRF, Sliding mesh, Actuator disk, Source term, User defined scalar
- Mesh generation, mesh convert
- Monitoring, Report
- Batch run
The requirements being developed are as follows:
- Radiation, Chemical reaction, Eulerian multi-phase, DPM, Heat exchanger model, Shell conduction
- Dynamic mesh : overset mesh, 6DOF, morphing, deform mesh
- POD/ROM, Acoustics, FSI, Optimization, Electromagnetics
- Pressure based coupled solver, Finite Area Method
- Builtin post-processor, Create fields
- More boundary conditiions, turbulence models…
Requirements are managed internally through Gitlab Issues.
Requirements are derived from user requests, subscription customer requests, and development/interpretation project requirements. Development priorities are determined based on factors such as funding availability, utilization, implementation difficulty, and business viability. User requests are primarily based on the contents of GitHub’s Issues and Discussion pages.
CFD code development
The current version, NextFOAM-v2409, is based on ESI’s distribution and includes code modified and developed by NEXTFOAM. When OpenFOAM is upgraded, NextFOAM is synchronized to the new version.
We first check whether the OpenFOAM distribution includes the features that satisfy our requirements. We sequentially check the three distributions: ESI, Foundation, and Extended. If the feature is present, we conduct a feasibility study to ensure it is implemented accurately and operates properly under various conditions and with low quality mesh.
If the distribution review results are not satisfactory, we move on to reviewing code that has been publicly released. This step also involves verifying the accuracy of the implementation and its usability. If this is also unsatisfactory, we develop the code ourselves.
The figure below illustrates a code development example. The requirement is to develop a chemical species calculation function. First, the OpenFOAM distribution includes several combustion analysis solvers, such as reactingFoam and fireFoam, which are naturally capable of calculating chemical species. Upon reviewing these solvers, we found that several omitted terms resulted in unphysical results. Furthermore, because they are all unsteady-state solvers, they are inefficient for steady-state calculations and do not reflect the effects of the turbulent Schmidt number.
The next step was to review modifiedReactingFoam, published by Vijaya Kumar et al., which added missing terms. While it did not produce unphysical results, other issues remained. Ultimately, we developed a method to add chemical species calculation capabilities to the buoyantSimpleNFoam and buoyantPimpleNFoam solvers developed by Nextform, referencing Kumar’s code.
UX(User eXperience) development
We use Python, with third-party libraries such as Pyside6, VTK, pyFoam, ionicons, and PyQtGraph. We use xwiki for requirements documentation and sharing, and GitLab and GitHub for repositories and collaboration tools.
Modularity and dependency flow are crucial when designing the architecture. The core modules are coredb, view, and openfoam. view is for implementing the graphical environment, and openfoam is for creating the dictionary used by Openfoam. View and openfoam are designed to have only one-way dependencies with coredb. The code is designed to be readable, following the Python style guide.
While BARAM is a general-purpose program, various customized programs have been developed and delivered to meet customer needs. These customized programs are integrated and managed as BARAM branches. This ensures that when BARAM is upgraded, these branches also gain access to the corresponding features.

Test
Testing is divided into three types: validation, function, and regression testing.
Functional testing verifies the proper operation of newly added features. It quantitatively verifies the interpretation results and verifies the normal operation of the user experience. During this process, verification problems for new features are developed.
Validation testing quantitatively verifies interpretation results for each new version against various validation problems (validation test suite). If results are lower than those validated in previous versions, the cause is identified and the issue is resolved.
Regression testing ensures that each new version behaves the same as the previous version, targeting various test problems (regression test suite). The quality of the generated grid, the convergence of calculations, and the qualitative evaluation of the results are evaluated. Because it requires manually verifying all UX behaviors for numerous problems, this process requires considerable time and effort. While often tedious and straightforward, identifying the root cause and developing solutions when problems arise requires significant technical expertise.
Once the software has passed these three stages of testing and is released, it undergoes user testing. Because it’s open source software, there’s no separate beta testing process. Users can submit issues and suggestions for improvements through the Issues and Discussion pages, which are then reflected in minor upgrades if necessary.
Documentation
When a new version is released, various documents are created. The requirements document is updated when development begins. After functional, verification, and regression testing are completed, test reports are created for each version. Accurate test reports for each version are crucial for troubleshooting issues that arise during testing of subsequent versions. The program manual and tutorials are updated in both Korean and English. Release notes for the new version are created, and the baramcfd.org page is updated. The BARAM introduction document and training materials are also updated, and tutorial videos are added or updated.
Release
We’re creating installation files for the program’s release. We’re creating Windows and macOS installation files, as well as the NextFOAM build and Apptainer for Linux. We’re updating the GitHub page and uploading the new version of BARAM to the Azure cloud marketplace.
Post relevant content on LinkedIn, Reddit, Instagram, and promote it through your newsletter.

Status & How to Participate
Over the past two years, the cumulative number of events is 346,964, the cumulative number of visitors is 114,571, and the number of active users is approximately 10,817 from 129 countries.

Here are some ways to get involved in BARAM development:
- You can improve the program by using it yourself and reporting bugs and issues.
- If you would like to collaborate on a development project with Nextform, you are always welcome.
- I would really appreciate it if you could provide me with the source code you developed yourself.
- If you share an example of an interpretation you calculated yourself, we will post it on our website.
You can contact us through GitHub discussions, the Q&A section on the Nextform website, or via email. You can also receive maintenance and technical support through a subscription contract. You can participate in Nextform’s regular training sessions, and on-site training is also available upon request.
Conclusion
Finally, I suggest changing the way you invest in engineering solutions by using open source software.
The cost of purchasing or leasing commercial software consists of software licensing fees, maintenance fees, and upgrade fees. In contrast, open source software offers services through relatively low-cost subscription contracts, as there are no licensing fees. The remaining budget can then be invested in process automation, custom program development, HPC, cloud computing, AI, and digital transformation (DT).

Thank you.