Repository navigation
Open
Labels
Description
Bug description
Below is a list of MoorDyn issues found while reviewing the slip-support PR (#3501). We should confirm and address these at a later date.
State and restart
- Viscoelastic state not initialized for
ElasticMod == 3. InMD_Init,dl_1is copied intox%statesonly whenElasticMod == 2 .or. == 4. Model 3 is skipped, so itsdl_1state starts at 0. The condition should beElasticMod > 1. - Line failure status is stored in
misc(m%FailList(:)%failStatus). It is not restored when the glue code repeats a step, so a failure triggered during a correction iteration stays triggered. Slip status had the same problem and was moved toOtherStatein MoorDyn slip support #3501. - Implicit
SAVEon locals inMD_Init.compVIV,compViscoandhasSyropeare given initial values in their declarations, which makes themSAVEd. Once set to.TRUE., they stay set for later MoorDyn instances (for example in FAST.Farm). That can trigger the "Linearization cannot be used with VIV or Viscoelastic" error for an instance that uses neither.
Input parsing and validation
- External loads read the wrong column for
Blin. WhenBlinhas a single value (N==1), the code readstempString4(theBquadcolumn) instead oftempString3. The linear damping is silently set to the quadratic coefficient. - Missing lower-bound checks on object IDs:
Output channels inMDIO_ProcessOutListfor Point, Rod, Body and Line (for example,POINT0FXindexes out of bounds).
Line IDs in the CONTROL section.
Line IDs in the FAILURE section. - Failure check uses a Rod ID as a Point index. The "free point with all lines failing" check reads
m%PointList(attachID)%typeNumeven when the failure is attached to a Rod end.
Runtime
- Tension truncated in
MD_UpdateStates.tensionis declaredINTEGER(IntKi), so the result ofLine_GetNodeTenis truncated before it is compared withFailTenand printed in the failure message.
Linearization
- Wrong
DeltaLlinearization labels inMD_InitVars. The label appendsnum2lstr(i)(the channel number) instead ofj(the line number). Also,LinStr = openfast. writes back into a fixed-lengthCHARACTER(32), so the appended text is dropped. - Velocity perturbation is hard-coded at 0.1 m/s for every velocity state. This gives secant rather than tangent damping for strongly nonlinear terms near zero velocity, such as friction and the slip-support Coulomb/LuGre models. It is documented for slip supports in MoorDyn slip support #3501 but not changed. A per-object or user-set perturbation could be considered.
Logging
- Wrong index in the
WriteLog > 1"Points" summary. The loop runs overl = 1..nFreePointsbut printsm%PointList(l)%Minstead ofm%PointList(m%FreePointIs(l)).
openfast_io
read_MoorDynmatches section headers loosely. It uses substrings such as'lines'and'failure', which can match the wrong section.readline_filterCommentsloops forever at end of file.
Activity