From 3a1b86c002ef47c0646a93b2a229ac712d83f494 Mon Sep 17 00:00:00 2001 From: andrew-platt Date: Wed, 10 Nov 2021 13:45:17 -0700 Subject: [PATCH] [bugfix] Incorrect reference frame used in HD for WAMIT/WAMIT2 This was causing strange results in a pitch free decay when a symmetric potential flow (WAMIT) body was rotated by 180 degrees. --- modules/hydrodyn/src/HydroDyn.f90 | 3 +-- modules/hydrodyn/src/WAMIT.f90 | 2 +- modules/hydrodyn/src/WAMIT2.f90 | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/modules/hydrodyn/src/HydroDyn.f90 b/modules/hydrodyn/src/HydroDyn.f90 index 0778105764..5b0e990a3b 100644 --- a/modules/hydrodyn/src/HydroDyn.f90 +++ b/modules/hydrodyn/src/HydroDyn.f90 @@ -1584,7 +1584,7 @@ SUBROUTINE HydroDyn_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, I CALL SetErrStat(ErrStat2,ErrMsg2,ErrStat,ErrMsg,RoutineName) do iBody = 1, p%NBody - theta = (/ 0.0_R8Ki, 0.0_R8Ki, InputFileData%PtfmRefztRot(iBody)/) + theta = (/ 0.0_R8Ki, 0.0_R8Ki, 0.0_R8Ki /) orientation = EulerConstruct(theta) CALL MeshPositionNode (u%WAMITMesh & @@ -1613,7 +1613,6 @@ SUBROUTINE HydroDyn_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, I RETURN END IF - ! Output mesh for loads at each WAMIT body CALL MeshCopy ( SrcMesh = u%WAMITMesh & ,DestMesh = y%WAMITMesh & diff --git a/modules/hydrodyn/src/WAMIT.f90 b/modules/hydrodyn/src/WAMIT.f90 index ef7e9c4f7b..bce90bec42 100644 --- a/modules/hydrodyn/src/WAMIT.f90 +++ b/modules/hydrodyn/src/WAMIT.f90 @@ -1362,7 +1362,7 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, Init do iBody = 1, p%NBody - theta = (/ 0.0_R8Ki, 0.0_R8Ki, InitInp%PtfmRefztRot(iBody)/) + theta = (/ 0.0_R8Ki, 0.0_R8Ki, 0.0_R8Ki /) orientation = EulerConstruct(theta) diff --git a/modules/hydrodyn/src/WAMIT2.f90 b/modules/hydrodyn/src/WAMIT2.f90 index 765e7c86eb..5559dd89f7 100644 --- a/modules/hydrodyn/src/WAMIT2.f90 +++ b/modules/hydrodyn/src/WAMIT2.f90 @@ -693,7 +693,7 @@ SUBROUTINE WAMIT2_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, Ini DO IBody = 1,p%NBody ! Set orientation and position for each body in mesh - theta = (/ 0.0_R8Ki, 0.0_R8Ki, InitInp%PtfmRefztRot(IBody)/) ! angle in radians + theta = (/ 0.0_R8Ki, 0.0_R8Ki, 0.0_R8Ki /) orientation = EulerConstruct(theta) XYZloc = (/InitInp%PtfmRefxt(IBody), InitInp%PtfmRefyt(IBody), InitInp%PtfmRefzt(IBody)/)