Hello,
I successfully ran the elastic-tube-3D tutorial on my local machine using OpenFOAM v2412, and the simulation proceeded without any issues. However, when I attempt the same simulation on a Compute Canada cluster, where the latest available version is OpenFOAM v2406, the OpenFOAM solver diverges early in the simulation. Specifically, I encounter exploding pressure residuals and eventually a floating-point exception related to mesh motion. No changes were made to the tutorial configuration files.
Do you know which older versions of OpenFOAM (e.g., v2206, v12, etc.) are known to work reliably with this FSI configuration?
Additionally, while I am able to run the coupled simulation using sbatch, it currently only works in serial mode. I can’t run the simulation in parallel on the cluster, even with decomposePar and mpirun. Could you suggest the correct approach or example scripts for running the full FSI case in parallel (both solid and fluid) using sbatch?
very strange that you get these issues with v2406. The case was definitely created with a much older version, and if v2412 works, v2406 should also work. We describe the compatibility of the adapter with different OpenFOAM versions here: OpenFOAM support | preCICE - The Coupling Library and we generally check our tutorials over time, but the elastic-tube-3d is one of the tutorials with the longer runtime, that we don’t yet systematically check. But I still doubt that this is a version issue. Did you get any additional clues in the meantime?
We maintain some notes on how to run preCICE in SLURM sessions in this page:
Hi Roham,
I think it may be related to the preCICE version? I can always run elastic-tube-3d and my pipe FSI cases without any issues using OpenFOAM-v2406 and preCICE-3.1.2.
But after updating preCICE to 3.2.0, I have the same problem as yours when running elastic-tube-3d. The OpenFOAM solver can only run a few steps and then diverges.
Hello developer. I am version 2412. Why does it diverge when following the tutorial? Why does this problem occur?
PIMPLE: iteration 1
smoothSolver: Solving for cellDisplacementx, Initial residual = 1, Final residual = 9.0919358531898e-18, No Iterations 1
smoothSolver: Solving for cellDisplacementy, Initial residual = 1, Final residual = 6.5060376031073e-18, No Iterations 1
smoothSolver: Solving for cellDisplacementz, Initial residual = 1, Final residual = 1.1828554409038e-17, No Iterations 1
[stack trace]
#1 Foam::sigFpe::sigHandler(int) in /usr/lib/openfoam/openfoam2412/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so
#2 ? in /usr/lib/x86_64-linux-gnu/libc.so.6 #3 Foam::leastSquaresVectors::calcLeastSquaresVectors() in /usr/lib/openfoam/openfoam2412/platforms/linux64GccDPInt32Opt/lib/libfiniteVolume.so #4 Foam::leastSquaresVectors::movePoints() in /usr/lib/openfoam/openfoam2412/platforms/linux64GccDPInt32Opt/lib/libfiniteVolume.so #5 Foam::fvMesh::movePoints(Foam::Field<Foam::Vector > const&) in /usr/lib/openfoam/openfoam2412/platforms/linux64GccDPInt32Opt/lib/libfiniteVolume.so #6 Foam::dynamicMotionSolverFvMesh::update() in /usr/lib/openfoam/openfoam2412/platforms/linux64GccDPInt32Opt/lib/libdynamicFvMesh.so #7 Foam::dynamicFvMesh::controlledUpdate() in /usr/lib/openfoam/openfoam2412/platforms/linux64GccDPInt32Opt/lib/libdynamicFvMesh.so #8 ? in /usr/lib/openfoam/openfoam2412/platforms/linux64GccDPInt32Opt/bin/pimpleFoam #9 ? in /usr/lib/x86_64-linux-gnu/libc.so.6 #10 __libc_start_main in /usr/lib/x86_64-linux-gnu/libc.so.6 #11 ? in /usr/lib/openfoam/openfoam2412/platforms/linux64GccDPInt32Opt/bin/pimpleFoam