From 64cd8c3c3a1aa53ddb0b94b4a42edaacf3817de7 Mon Sep 17 00:00:00 2001 From: Jae Hoon Seo Date: Thu, 15 Oct 2026 03:00:53 +0900 Subject: [PATCH] test: hold the vertical coupled-torsion lines taut The PtfmInit and FAST.Farm checks of coupled_torsion hang a neutrally buoyant 100 m line under the fairlead with its anchor exactly 100 m below, so the static solve starts from zero tension, where it has no catenary seed and its result depends on round-off. With OPENBLAS_CORETYPE=Prescott (the workaround for the OpenBLAS 0.3.34 modal crash) the FAST.Farm check failed deterministically: the mesh-sequenced fallback stopped on a kinked state. The anchor now sits 0.5 m lower, so the line hangs taut at 0.5 % strain; the twist and torque checks are unchanged (the torsion compliance uses the unstretched length) and pass with the default, Prescott, Haswell and SkylakeX kernels. Signed-off-by: Jae Hoon Seo --- tests/test_coupled_torsion.f90 | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/test_coupled_torsion.f90 b/tests/test_coupled_torsion.f90 index fcfe2fe..fe2aaea 100644 --- a/tests/test_coupled_torsion.f90 +++ b/tests/test_coupled_torsion.f90 @@ -76,7 +76,10 @@ END SUBROUTINE require SUBROUTINE write_deck(path, point_a, vertical, anchor_x) !! The straight neutral torsion line, End A on point_a, outputs Torq1N1, Torq1N41, Twist1: !! along +x from (0, 0, -50) to (100, 0, -50), or with vertical from (0, 0, -20) down to - !! (anchor_x, 0, -120) (anchor_x: the farm-global x of the turbine the line hangs under). + !! (anchor_x, 0, -120.5) (anchor_x: the farm-global x of the turbine the line hangs under). + !! The vertical line is held taut at 0.5 % strain: at zero tension its static solve has no + !! catenary seed and its result depends on round-off (it failed with OpenBLAS's Prescott + !! kernels). CHARACTER(*), INTENT(IN) :: path, point_a LOGICAL, INTENT(IN), OPTIONAL :: vertical REAL(wp), INTENT(IN), OPTIONAL :: anchor_x @@ -89,7 +92,7 @@ SUBROUTINE write_deck(path, point_a, vertical, anchor_x) ax = 0.0_wp IF (PRESENT(anchor_x)) ax = anchor_x anchor = '2 Fixed 100.0 0.0 -50.0 0 0 0 0' - IF (vert) WRITE (anchor, '(A,F8.1,A)') '2 Fixed ', ax, ' 0.0 -120.0 0 0 0 0' + IF (vert) WRITE (anchor, '(A,F8.1,A)') '2 Fixed ', ax, ' 0.0 -120.5 0 0 0 0' OPEN (NEWUNIT=u, FILE=path, STATUS='REPLACE', ACTION='WRITE') WRITE (u, '(A)') 'coupled torsion gate' WRITE (u, '(A)') '--- LINE TYPES ---'