openfast
openfast copied to clipboard
Linearization results change between v2.5 and v2.6 -- OC4Semi
Bug description The linearization results for the OC4Semi case changed between v2.5 and v2.6. OF v2.6 introduced a revised HydroDyn with flexible platform capabilities and a new method of buoyancy calculation. The changes seen in modes 5 and 6 may be due to either a bug in that implementation, or a bug in the model itself (the HydroDyn model and input file changed slightly).
OC4Semi + MAP (v2.5)
01 ; 0.009 ; 0.0100 ; ED Platform horizontal sway translation DOF -
02 ; 0.009 ; 0.0100 ; ED Platform horizontal surge translation DOF -
03 ; 0.013 ; 0.0051 ; ED 2nd tower FA - ED 1st FLAP cos - ED Platform yaw rotation DOF -
05 ; 0.039 ; 0.0113 ; ED 1st tower FA - ED Platform pitch tilt rotation DOF - - HD RdtnPtfmP10
06 ; 0.039 ; 0.0112 ; ED Variable speed generator DOF - ED Platform roll tilt rotation DOF - - HD RdtnPtfmR10
08 ; 0.058 ; 0.0114 ; ED Platform vertical heave translation DOF -
OC4Semi + MAP (v2.6)
01 ; 0.009 ; 0.0100 ; ED Platform horizontal sway translation DOF -
02 ; 0.009 ; 0.0100 ; ED Platform horizontal surge translation DOF -
03 ; 0.013 ; 0.0066 ; ED 2nd tower FA - ED 1st FLAP cos - ED Platform yaw rotation DOF -
05 ; 0.047 ; 0.0025 ; ED Variable speed generator DOF - ED Platform roll tilt rotation DOF - - HD RdtnPtfmSw12
06 ; 0.047 ; 0.0094 ; ED 1st tower FA - ED Platform pitch tilt rotation DOF - - HD RdtnPtfmSg12
08 ; 0.058 ; 0.0114 ; ED Platform vertical heave translation DOF -
Further thoughts
The linearization regression test as currently implemented did not catch this change as it does not calculate the eigenvalues. The regression test compares the A
, B
, C
, and D
matrices to a default level of 1E-5
, but the actual changes that give rise to the frequency changes are much smaller (~1E-9
). The regression test methodology should be updated to include the eigenanalysis to catch such changes. This could be done either by duplicating code from the python-toolbox (https://github.com/OpenFAST/python-toolbox/tree/main/pyFAST/linearization) or loading it as a submodule to the testing environment.