If this is a general question or difficulty building/using the code, please open a "Discussion" instead.
Describe the bug
HICKS_HENNE_CAMBER mesh deformation (SU2_DEF) produces asymmetric, non-physical results under MPI domain decomposition (mpirun -n >1): only one side of the airfoil actually deforms. The same design deformed serially (1 rank) is correct — a symmetric camberline shift with thickness preserved.
I suspect the issue to be: CSurfaceMovement::SetHicksHenneCamber (Common/src/grid_movement/CSurfaceMovement.cpp, function starting ~line 3700) computes a single global leading-edge point, trailing-edge point, chord, and angle of attack (LPCoord, TPCoord, Chord, AoA) by iterating over boundary->vertex[iMarker]. Under MPI domain decomposition this is only the current rank's local partition of the marker's vertices, not the whole airfoil boundary. If a rank's local partition happens to exclude the true leading or trailing edge (e.g. because the partition boundary falls mid-surface), that rank computes a wrong LPCoord/AoA/Chord, which is then used to transform all of that rank's vertices (lines ~3783-3821) — producing wrong or clamped Coord[0] values (Coord[0] = max(0.0, Coord[0]), and points with Coord[0] > 0.99 are skipped entirely via continue) and hence near-zero or spurious fk.
Workaround is to run SU2_DEF with rank 1.
Bug report checklist
Please make sure that you have followed the checklist below, many common problems can be solved by:
Desktop (please complete the following information):
- OS: Rocky Linux 9.8 (Blue Onyx)
- C++ compiler and version: g++ (GCC) 15.2.0
- MPI implementation and version: OpenMPI 5.0.9
- SU2 Version: 8.5.0 "Harrier"
If this is a general question or difficulty building/using the code, please open a "Discussion" instead.
Describe the bug
HICKS_HENNE_CAMBERmesh deformation (SU2_DEF) produces asymmetric, non-physical results under MPI domain decomposition (mpirun -n >1): only one side of the airfoil actually deforms. The same design deformed serially (1 rank) is correct — a symmetric camberline shift with thickness preserved.I suspect the issue to be:
CSurfaceMovement::SetHicksHenneCamber(Common/src/grid_movement/CSurfaceMovement.cpp, function starting ~line 3700) computes a single global leading-edge point, trailing-edge point, chord, and angle of attack (LPCoord,TPCoord,Chord,AoA) by iterating overboundary->vertex[iMarker]. Under MPI domain decomposition this is only the current rank's local partition of the marker's vertices, not the whole airfoil boundary. If a rank's local partition happens to exclude the true leading or trailing edge (e.g. because the partition boundary falls mid-surface), that rank computes a wrongLPCoord/AoA/Chord, which is then used to transform all of that rank's vertices (lines ~3783-3821) — producing wrong or clampedCoord[0]values (Coord[0] = max(0.0, Coord[0]), and points withCoord[0] > 0.99are skipped entirely viacontinue) and hence near-zero or spuriousfk.Workaround is to run
SU2_DEFwith rank 1.Bug report checklist
Please make sure that you have followed the checklist below, many common problems can be solved by:
Desktop (please complete the following information):