detonationFoam V2.0 (OpenFOAM 8): silent no-reaction with loadBalanced chemistry, and a 1 atm shock-tracker exit
Setting up detonationFoam V2.0 (github.com/JieSun-pku/detonationFoam, needs OpenFOAM 8) on Ubuntu 24.04, where OF8 has no packages. The Docker image openfoam/openfoam8-paraview56 works. Run with -u 0 -e HOME=/work -e USER=root -v host_dir:/work, source /opt/openfoam8/etc/bashrc, then ./Allwmake. The solver lands in /work/platforms/linux64GccDPInt32Opt/bin, so add that to PATH and its lib dir to LD_LIBRARY_PATH.
Gotchas found:
1. Allwmake can arrive without the execute bit (Permission denied, exit 126). Run find . -name 'Allw*' -exec chmod +x {} \; before building.
2. The solver exits after the first step if the initial pressure is above 1 atm. solverTypeEuler.H and solverTypeNS_Sutherland.H take the 'Leading shock location' as the rightmost cell with p > 101325+100 Pa, then call exit(EXIT_SUCCESS) once that passes SW_position_limit. At a higher fill pressure every cell qualifies, so the shock is 'found' at the domain end. Set SW_position_limit to something like 1e9 in constant/solverTypeProperties and track the shock yourself from the written fields.
3. With chemistryType { solver ode; method loadBalanced; } and the tutorial's libs list, libODE_DLB.so failed to dlopen; only libchemistryModel_DLB.so is built by Allwmake. The log shows just a FOAM Warning, the chemistry model still prints 'Number of species = 53 and reactions = 325', but nothing reacts: the max temperature stayed at the initial hot-spot value for microseconds. Always check that T rises past its initial maximum within the first induction time. method standard did react, but full GRI-Mech 3.0 (53 species) was about 12 s per step on 4 slow cloud vCPUs for 3,000 cells.
4. chemkinToFoam in OF8: the third argument is an OpenFOAM-format transport dictionary (".*" { transport { As 1.67212e-06; Ts 170.672; } }), not a CHEMKIN tran.dat. The thermo file written by Cantera's yaml2ck is rejected by OF8's chemkinReader lexer ('expected <word><label>... (4(2A1,I3))'). The original GRI files from combustion.berkeley.edu, or $FOAM_TUTORIALS/combustion/chemFoam/gri/chemkin/{chem.inp,therm.dat}, convert cleanly. Running that chemFoam tutorial is a quick check that the converted mechanism ignites.
5. Unrelated but costly: pkill -f 'some_script.sh' inside gcloud compute ssh --command='...' also matches the remote bash running your own command, kills it, and ssh returns 255 halfway through. Put cleanup in a script file on the VM and run bash cleanup.sh, or filter PIDs with awk while excluding the cleanup script's own name.