The CFD backend explained
The IDA ICE CFD extension relies on a Linux-based backend that runs OpenFOAM® for performing the actual CFD computations. OpenFOAM is an open source software maintained by the OpenFOAM foundation. The purpose of this note is to clarify the architecture, the interaction between the proprietary IDA ICE application and the OpenFOAM-based backend, and to outline why we believe this approach complies with the terms of the GPLv3 license under which OpenFOAM is released.
Trademark disclaimer
OPENFOAM® is a registered trade mark of OpenCFD Limited, producer and distributor of the OpenFOAM software via www.openfoam.com.
This offering is not approved or endorsed by OpenCFD Limited, producer and distributor of the OpenFOAM software via www.openfoam.com, and owner of the OPENFOAM® and OpenCFD® trade marks.
IDA ICE - OpenFOAM interactions overview
The solution consists of two primary components:
1. The Frontend: IDA ICE (Proprietary Windows Application)
- Users define CFD simulation cases within IDA ICE based on geometric model and IDA ICE result data.
- IDA ICE generates geometry files (e.g., in .obj format) and a structured input file containing simulation parameters such as boundary conditions, sources, and discretisation settings for an OpenFOAM case.
- These files are uploaded to the backend (below) via a lightweight HTTP server.
- IDA ICE also composes and sends command sequences (including e.g., blockMesh, snappyHexMesh, buoyantFoam) via a message bus to control backend execution.
- After simulation completion, the result data is downloaded from the backend and visualized within IDA ICE using an embedded VTK-based viewer.
2. The Backend: Custom Linux Image (Running in WSL2 or on a Linux host)
- The backend is a Linux environment based on a Linux (Debian) container image that includes:
- A vanilla build of OpenFOAM (GPLv3), extended with
- clearly separated custom applications/libraries developed by EQUA (GPLv3),
- A NATS server (Apache 2),
- Several custom-developed control and support programs (Apache 2 licensed):
- A light-weight NATS client that listens for commands and executes them,
- Python script that interprets the NATS messages to orchestrate OpenFOAM applications and filters their stdout,
- An HTTP server (Python Flask [ BSD-3 license]) for file exchange.
- No proprietary software is installed or executed on the backend.
- The backend operates independently and can run on any compatible Linux environment (although initially WSL2 will be the supported option).
More thorough license information regarding the software that is included in the backend is shared as a number of text files within the bakend itself. It may be viewed by manually entering the backend like so:
wsl -d equa-linux
cd /opt/cfd/licenses
ls
more NATS-LICENSE.txt
Communication Model
- All communication between IDA ICE and the backend occurs over well-defined protocols:
- File upload/download via HTTP,
- Command execution and stdout capture via a NATS-based message bus.
- There is no dynamic linking, inclusion, or embedding of GPL components in IDA ICE.
- The OpenFOAM binaries are executed as external processes, and their output is captured for logging or visualization purposes.
- The proprietary application (IDA ICE) interprets this data but does not include any OpenFOAM code or libraries.
Licensing Considerations
OpenFOAM is licensed under the GNU General Public License v3 (GPLv3). Under this license, if a GPL-licensed program is modified and distributed, or if proprietary code forms a derivative work (e.g., by linking to GPL libraries), then the derivative must also be licensed under GPLv3. However:
- The IDA ICE frontend does not include or link to OpenFOAM code.
- It does not embed or distribute OpenFOAM within the proprietary binary.
- OpenFOAM is executed as an independent process on a separate system (WSL2 or Linux server), and communicates only through inter-process messaging and file transfer.
- As such, IDA ICE is not a derivative work of OpenFOAM and therefore not subject to the copyleft provisions of the GPLv3.
We do, however, redistribute a Linux system image that contains OpenFOAM, and therefore ensure:
- All license texts and source availability notices are included in the image,
- Any custom OpenFOAM applications or libraries developed by us and included in the backend are distributed in source form under GPLv3 (if applicable),
- The user is made aware of the licensing terms of the software components included in the backend.
Summary
The architecture is designed to ensure clean separation between proprietary and GPL components:
- Proprietary software (IDA ICE) resides entirely in the Windows environment and communicates with the backend as an external service.
- GPL software (OpenFOAM) remains isolated in a separate execution environment and is not linked or embedded into proprietary binaries.
- We fulfill our obligations as a distributor of GPL software by providing appropriate license texts and source code access.
We believe this setup complies fully with both the letter and intent of the GPLv3 license.