Executing an OpenFOAM Motorbike Simulation
The instructions on this page will show you how to execute the OpenFOAM motorbike tutorial from the workflow catalog template with the Fuzzball web UI and CLI. For both methods you can choose a number of parameters.
- The workflow template uses an ephemeral
ScratchVolumeto run the simulation. In addition, you provide a persistentDataVolume. If provided, the case folder will be saved in theResultsPathdirectory on the persistent volume. - If you provide an
S3BucketandS3Secret, a tar archive of the case folder will also be saved to AWS S3 as part of the egress stage of the workflow. - You can separately choose the resources used for the serial steps of the workflow
(
UtilityJobCores,UtilityJobMemory) and the parallel steps (SimulationOrMeshJobCores,SimulationOrMeshJobMemory,SimulationOrMeshJobNodes). - You can choose the
Coefficientsused inDecomposeParDict.
You can run the OpenFOAM motorbike workflow template from the workflow catalog page by locating the OpenFOAM motorbike card with the CIQ badge and clicking “Run” in the context menu:

You will be prompted to supply values for the configurable parameters of the template. You can examine all the options and their documentation in the option dialog box shown below.

If you keep all the default options, you will run the OpenFOAM motorbike tutorial workflow with 1 CPU core for the utility steps, 6 Cores for the parallel steps and results saved to a persistent volume (but not S3). Click “Run” to render and validate the workflow template with your values. After clicking “Run” you will be prompted in a dialog box to “Start Workflow” to submit the Fuzzfile rendered from the workflow template and your inputs. At this stage you can modify the name of the run or accept the defaults.

Once the workflow has been submitted successfully, you can select “Go to status” to view the status of the workflow’s stages

Select a stage that produces output and choose the “Logs” tab to see the output generated by the stage as we did in an earlier example with a manually written workflow.

By clicking on “Open in Workflow Editor” in the top right corner, you can open the Fuzzfile generated from the template and your inputs in the workflow editor. In the example above the graph of jobs looks like so:

To run this workflow through the CLI you will need access to the Fuzzball CLI. You can install it using the Fuzzball CLI installation instructions.
When using the CLI to execute workflow templates from the workflow catalog, you need to supply parameters in the form of a YAML file. For the OpenFoam motorbike workflow you can create this file like so:
$ cat > motorbike_values.yaml <<EOF
values:
- name: OpenFoamVersion
string_value: "2412"
- name: OpenFoamContainerUri
string_value: docker://opencfd/openfoam-default
- name: ParaviewContainerUri
string_value: ""
- name: DataVolume
string_value: volume://user/persistent
- name: S3Bucket
string_value: ""
- name: ResultPath
string_value: "results/openfoam"
- name: ResultName
string_value: openfoam-motorbike
- name: WmProjectDir
string_value: /usr/lib/openfoam/openfoam
- name: UtilityJobCores
uint_value: 1
- name: UtilityJobMemory
string_value: 1GiB
- name: SimulationOrMeshJobCores
uint_value: 6
- name: SimulationOrMeshJobNodes
uint_value: 1
- name: SimulationOrMeshJobMemory
string_value: 4GiB
- name: Coefficients
string_value: 3 2 1
EOFNext you need to obtain the ID of the OpenFOAM workflow template. That can be done in a few different ways. For example:
$ fuzzball workflow-template list -f 'provider: "CIQ" AND name: "openfoam"'
NAME | ID | OWNER | PROVIDER | UPDATETIME | DISABLED
OpenFOAM Motorbike Flow Example | 8d88f4e4-649e-516e-bfd0-dc0b4594588e | PROVIDER | CIQ | 2026-03-12 07:14:35PM | falseNote that the workflow template ID may be different in your Fuzzball cluster. If you have jq
installed you could make use of the option to return json format metadata about all templates as
shown below:
$ id="$(fuzzball workflow-template list -f 'provider: "CIQ" AND name: "openfoam"' --json | jq -r '.applications[0].id')"Or you can copy and paste the workflow template id instead of assigning it to a variable. Once you have the id of the workflow template and a values file you can use them to create a Fuzzfile for submission like so:
$ fuzzball workflow-template start --values motorbike_values.yaml $id
Workflow "f70faf1f-5d9f-44c4-ba52-216b2e129938" started.Check on the status of your workflow with the following command:
$ fuzzball workflow describe f70faf1f-5d9f-44c4-ba52-216b2e129938
Name: OpenFOAM Motorbike Flow Example
Email: user1@ciq.com
UserId: 87145648-b830-4291-ab7e-40880d61334e
Status: STAGE_STATUS_STARTED
Cluster: fuzzball-aws-stable
Created: 2026-04-06 01:39:58PM
Started: 2026-04-06 01:39:58PM
Finished: N/A
Error:
Stages:
KIND | STATUS | NAME | STARTED | FINISHED | PERSISTENT VOLUME | VOLUME REFERENCE
Workflow | Started | f70faf1f-5d9f-44c4-ba52-216b2e129938 | 2026-04-06 01:39:58PM | N/A | |
Volume | Pending | data | N/A | N/A | true | volume://user/persistent
Volume | Pending | scratch | N/A | N/A | false | volume://user/ephemeral
Image | Pending | docker://opencfd/openfoam-default:2412 | N/A | N/A | |
Image | Pending | docker://alpine:latest | N/A | N/A | |
Job | Pending | preprocess-model | N/A | N/A | |
Job | Pending | snappy-hex-mesh | N/A | N/A | |
Job | Pending | toposet | N/A | N/A | |
Job | Pending | set-initial-conditions | N/A | N/A | |
Job | Pending | patch-summary | N/A | N/A | |
Job | Pending | potential-foam | N/A | N/A | |
Job | Pending | check-mesh | N/A | N/A | |
Job | Pending | simple-foam | N/A | N/A | |
Job | Pending | reconstruct-mesh | N/A | N/A | |
Job | Pending | to-vtk | N/A | N/A | |
Job | Pending | tar-results | N/A | N/A | |
$ fuzzball workflow log f70faf1f-5d9f-44c4-ba52-216b2e129938 preprocess-model | head -20
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2412 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object decomposeParDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
numberOfSubdomains 6;
method hierarchical;