Simulation

SU2, for the shapeas much as the flow

SU2 8.0.1 with MPI, and the Python drivers on the PATH.The container stays up, and your cases sit under /data.

SU2 8.5.04 cores · 32 GBRuns in a shell
hub://su2

$ dxflow workflow create --identity su2 hub://su2 --start

01Pick a machinecores, memory and a rate per hour
02Create the workflowpulled from the hub, once
03Run it, then stopstopped when the work is done
The application

A solver,and the tools around it

SU2_CFD, SU2_DEF, SU2_SOL, SU2_GEO and SU2_DOT, all on the PATH.

The flow solver

SU2_CFD reads a .cfg and a .su2 mesh, and writes back into /data.

Parallel out of the box

MPI may run as root here, so mpirun -np N needs no further flags.

Shape optimization

SU2_DEF shifts the mesh, and SU2_DOT projects the gradients back.

How you run it

MPI is readywithout the flags

Nothing to configure at start. Put the case under /data and call the solver.

a case, serial then parallel

$ SU2_CFD inv_NACA0012.cfg

$ mpirun -np 8 SU2_CFD inv_NACA0012.cfg

$ python parallel_computation.py -f inv_NACA0012.cfg -n 8

Binaries and drivers, bothSU2_RUN is set and the Python drivers are on PYTHONPATH, so SU2_CFD and parallel_computation.py work as they are.
Root is allowed to run MPIThe usual Open MPI refusal is already waived, so mpirun -np N needs no extra arguments.
The shell

No window,just a prompt

The container stays up, and the cases live under /data.

SU2_CFDCommandand the four beside it
/dataStoragemeshes, restarts, history
The container stays upIt idles until you stop it, so the shell is there when you are.
Everything on /dataThe volume is mounted there, and every output is written to it.
Good to know

Solving is half of it,optimizing is the rest

SU2 is a CFD suite with a design loop attached, and both halves are in this image.

Five executables

SU2_CFD solves, and SU2_DOT, SU2_DEF, SU2_GEO and SU2_SOL handle gradients, deformation, geometry and output beside it.

Cores are the whole game

An adjoint sweep is many solves. Pick the machine by core count, and match -np to what you actually got.

Everything lands on /data

Meshes, restarts and the history file are written where you mounted them, and stay after the stop.

The image

Pulled once,then it stays

SU2 arrives as one image. This is what comes down the first time, and what the disk should have free for it.

245Mamd64compressed, the way the registry counts it
50GOn diskunpacked, with room to work beside it
ghcr.io/dxflow-ai/su2:latestPublished from the hub, pulled on the first start and kept for the ones after it.
amd64 onlyOne architecture is published, so pick a machine that matches it.
What it asks for

What it wants,and what it needs

The definition asks for 4 cores and 32 GB. The image comes up on less than that, and a start given --fit trims the ask to whatever the machine actually has.

4 cores · 32 GBAsks forwhat the definition writes down
2 cores · 16 GBRuns onthe least the image comes up on
Not neededGPUit works on the cores alone
The ask is not the floorThe definition writes down what suits the work. The image itself starts on less, which is what the second figure is.
--fit caps it to the hostA start given --fit trims each step to what the machine actually has, for that start alone. The definition is never rewritten.

Machines that fit it

SU2 asks for 4 cores and 32 GB. Cheapest first.

E2 Highmem-4
$0.226/ hour4 cores · 32 GBStart this machine
R6i XLarge
$0.315/ hour4 cores · 32 GBStart this machine
E4s v5
$0.315/ hour4 cores · 32 GBStart this machine
Run SU2 on your own machinePick a machine that meets it, and it opens about a minute after you ask.