The solid is a blockMesh-generated annulus (inner radius 5 mm, outer radius
6 mm, length 50 mm) with the same material properties as the CalculiX case,
using a linear-elastic small-strain solid model. The participant reads Force
through the solids4foam solidForce boundary condition and writes
DisplacementDelta.
Requires an OpenFOAM-preCICE adapter with support for writing
DisplacementDelta in solid participants.
The README notes that the face-centred OpenFOAM interface mesh carries no
connectivity, so the two nearest-projection mappings fall back to
nearest-neighbour.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SBFTMffUN7qDigrDQrPVb2
Important
Draft: blocked on precice/openfoam-adapter#418 ("Support writing DisplacementDelta in solid participants"). This case cannot run until that adapter change is released, and the reference-results tarball cannot be generated until it reaches the system-test images. Marking ready for review once #418 is merged.
Summary
Adds a solids4foam solid participant to the elastic-tube-3d tutorial — the first solids4foam case in a 3D tutorial, and the first exercising DisplacementDelta writing in the OpenFOAM adapter.
The solid is a blockMesh-generated annulus matching the outer surface of the fluid domain: inner radius 5 mm, outer radius 6 mm, length 50 mm, built from four 90° blocks with arc edges (4320 cells, 1440 interface faces, max skewness 0.14, max non-orthogonality ~0). Material properties match the CalculiX case: E = 300 kPa, nu = 0.3, rho = 1200 kg/m³. The inlet and outlet ends are fully fixed, as in tube.inp.
The participant reads Force through the solids4foam solidForce boundary condition and writes DisplacementDelta, matching the existing precice-config.xml exchange — no configuration changes are needed.
Results
Run for the full 100 time windows against fluid-openfoam, converging in ~4 coupling iterations per window. The tube-midpoint watchpoint matches the published CalculiX/FEniCS reference plot (images/tutorials-elastic-tube-3d-plot.png) in both shape and magnitude:
(Those are per-time-window DisplacementDelta values, which is what the existing plot-displacements.sh plots for all participants.)
Tested with OpenFOAM v2606, preCICE 3.4.1, solids4foam (development) and the OpenFOAM adapter from precice/openfoam-adapter#418.
Note on the mapping
Unlike CalculiX, which supplies node-mesh-with-connectivity, the OpenFOAM adapter provides the solid interface mesh at the face centers without connectivity. preCICE therefore reports:
WARNING: 3D Mesh "Solid-Mesh" does not contain triangles. Nearest projection mapping will map to primitives of lower dimension.and both nearest-projection mappings fall back to nearest-neighbour. Since the fluid (3658 faces) and solid (1440 faces) interface meshes are of comparable resolution and the deformation is smooth, the agreement above holds with that fallback in effect. This is documented in the README.
Making it a genuine nearest-projection would require splitting the solid interface into a face-centred read mesh (Force) and a faceNodes + connectivity true write mesh (DisplacementDelta), since the adapter only supports connectivity for write data at faceNodes. That needs a second mesh in precice-config.xml, so I left it out of this PR — happy to follow up if you would prefer that.
Notes
🤖 Generated with Claude Code
https://claude.ai/code/session_01SBFTMffUN7qDigrDQrPVb2