In [1]:
# r"G:\2026\OpenhastV7\publish\x64\Release\net8.0\HawtC.dll"
#r "nuget:ScottPlot, 5.0.*"
//# r"C:\Users\123\.nuget\packages\skiasharp\2.88.8\interactive-extensions\dotnet\SkiaSharp.DotNet.Interactive.dll"

using OpenWECD.IO.Log;
using MathNet.Numerics.LinearAlgebra;
using OpenWECD.IO.math;
using OpenWECD.IO.Numerics;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using static OpenWECD.IO.math.LinearAlgebraHelper;
using static System.Math;
using OpenWECD.FEML;
using ScottPlot;
using OpenWECD.IO.IO;
Installed Packages
  • ScottPlot, 5.0.47
Loading extensions from `C:\Users\123\.nuget\packages\skiasharp\2.88.9\interactive-extensions\dotnet\SkiaSharp.DotNet.Interactive.dll`
In [2]:
// Setup a custom formatter to display plots as images
using Microsoft.DotNet.Interactive.Formatting;
Formatter.Register(typeof(ScottPlot.Plot), (p, w) => 
    w.Write(((ScottPlot.Plot)p).GetPngHtml(800, 400)), HtmlFormatter.MimeType);
In [976]:
//# 运行OpenFAST
//Otherhelper.RunPowershell(@"G:\2026\OpenhastV7\demo\openhast_x64\IEA_15MW_onshore\CompareWithFAST\FastModel\openfast_x64.exe G:\2026\OpenhastV7\demo\openhast_x64\IEA_15MW_onshore\CompareWithFAST\FastModel\IEA-15-240-RWT-onshore.fst")
In [977]:
//# 运行HawtC
//Otherhelper.RunPowershell(@"G:\2026\OpenhastV7\build\HawtC.exe G:\2026\OpenhastV7\demo\openhast_x64\IEA_15MW_onshore\Openhast_15MW_PowerProduction_land.hst")
In [66]:
//#尝试读取FAST输出的时间序列
var fastres=OpenWECD.APIL.PostAPI.PstAPI.API_GetFASTFileDATADirectory(@"G:\2026\OpenhastV7\demo\openhast_x64\IEA_15MW_onshore\CompareWithFAST\FastModel\\IEA-15-240-RWT-onshore.out");
Otherhelper.Tostring(fastres.Keys.ToArray())
Time
Wind1VelX
Wind1VelY
Wind1VelZ
Azimuth
BldPitch1
BldPitch2
BldPitch3
GenSpeed
IPDefl1
LSSGagMya
LSSGagMza
LSSTipMys
LSSTipMzs
LSShftFys
LSShftFzs
NacYaw
NcIMUTAxs
NcIMUTAys
NcIMUTAzs
OoPDefl1
PtfmHeave
PtfmPitch
PtfmRoll
PtfmSurge
PtfmSway
PtfmYaw
RootFxb1
RootFxb2
RootFxb3
RootFxc1
RootFxc2
RootFxc3
RootFyb1
RootFyb2
RootFyb3
RootFyc1
RootFyc2
RootFyc3
RootFzb1
RootFzb2
RootFzb3
RootFzc1
RootFzc2
RootFzc3
RootMxb1
RootMxb2
RootMxb3
RootMxc1
RootMxc2
RootMxc3
RootMyb1
RootMyb2
RootMyb3
RootMyc1
RootMyc2
RootMyc3
RootMzb1
RootMzb2
RootMzb3
RootMzc1
RootMzc2
RootMzc3
RotSpeed
RotThrust
RotTorq
TTDspTwst
TipDxb1
TipDxb2
TipDxb3
TipDxc1
TipDxc2
TipDxc3
TipDyb1
TipDyb2
TipDyb3
TipDyc1
TipDyc2
TipDyc3
TipDzb1
TipDzb2
TipDzb3
TipDzc1
TipDzc2
TipDzc3
TwHt1TPxi
TwHt1TPyi
TwrTpTDxi
TwrTpTDyi
TwrTpTDzi
TwrBsFxt
TwrBsFyt
TwrBsFzt
TwrBsMxt
TwrBsMyt
TwrBsMzt
TwstDefl1
YawBrFxp
YawBrFyp
YawBrFzp
YawBrMxp
YawBrMyp
YawBrMzp
YawBrTDxt
YawBrTDyt
Q_B1E1
Q_B2E1
Q_B3E1
Q_B1F1
Q_B2F1
Q_B3F1
Q_B1F2
Q_B2F2
Q_B3F2
Q_Teet
Q_DrTr
Q_GeAz
Q_RFrl
Q_TFrl
Q_Yaw
Q_TFA1
Q_TSS1
Q_TFA2
Q_TSS2
Q_Sg
Q_Sw
Q_Hv
Q_R
Q_P
Q_Y
QD_B1E1
QD_B2E1
QD_B3E1
QD_B1F1
QD_B2F1
QD_B3F1
QD_B1F2
QD_B2F2
QD_B3F2
QD_Teet
QD_DrTr
QD_GeAz
QD_RFrl
QD_TFrl
QD_Yaw
QD_TFA1
QD_TSS1
QD_TFA2
QD_TSS2
QD_Sg
QD_Sw
QD_Hv
QD_R
QD_P
QD_Y
QD2_B1E1
QD2_B2E1
QD2_B3E1
QD2_B1F1
QD2_B2F1
QD2_B3F1
QD2_B1F2
QD2_B2F2
QD2_B3F2
QD2_Teet
QD2_DrTr
QD2_GeAz
QD2_RFrl
QD2_TFrl
QD2_Yaw
QD2_TFA1
QD2_TSS1
QD2_TFA2
QD2_TSS2
QD2_Sg
QD2_Sw
QD2_Hv
QD2_R
QD2_P
QD2_Y
B1N001TDx
B1N002TDx
B1N003TDx
B1N004TDx
B1N005TDx
B1N006TDx
B1N007TDx
B1N008TDx
B1N009TDx
B1N010TDx
B1N011TDx
B1N012TDx
B1N013TDx
B1N014TDx
B1N015TDx
B1N016TDx
B1N017TDx
B1N018TDx
B1N019TDx
B1N020TDx
B1N021TDx
B1N022TDx
B1N023TDx
B1N024TDx
B1N025TDx
B1N026TDx
B1N027TDx
B1N028TDx
B1N029TDx
B1N030TDx
B1N031TDx
B1N032TDx
B1N033TDx
B1N034TDx
B1N035TDx
B1N036TDx
B1N037TDx
B1N038TDx
B1N039TDx
B1N040TDx
B1N041TDx
B1N042TDx
B1N043TDx
B1N044TDx
B1N045TDx
B1N046TDx
B1N047TDx
B1N048TDx
B1N049TDx
B1N050TDx
B1N001TDy
B1N002TDy
B1N003TDy
B1N004TDy
B1N005TDy
B1N006TDy
B1N007TDy
B1N008TDy
B1N009TDy
B1N010TDy
B1N011TDy
B1N012TDy
B1N013TDy
B1N014TDy
B1N015TDy
B1N016TDy
B1N017TDy
B1N018TDy
B1N019TDy
B1N020TDy
B1N021TDy
B1N022TDy
B1N023TDy
B1N024TDy
B1N025TDy
B1N026TDy
B1N027TDy
B1N028TDy
B1N029TDy
B1N030TDy
B1N031TDy
B1N032TDy
B1N033TDy
B1N034TDy
B1N035TDy
B1N036TDy
B1N037TDy
B1N038TDy
B1N039TDy
B1N040TDy
B1N041TDy
B1N042TDy
B1N043TDy
B1N044TDy
B1N045TDy
B1N046TDy
B1N047TDy
B1N048TDy
B1N049TDy
B1N050TDy
B1N001RDz
B1N002RDz
B1N003RDz
B1N004RDz
B1N005RDz
B1N006RDz
B1N007RDz
B1N008RDz
B1N009RDz
B1N010RDz
B1N011RDz
B1N012RDz
B1N013RDz
B1N014RDz
B1N015RDz
B1N016RDz
B1N017RDz
B1N018RDz
B1N019RDz
B1N020RDz
B1N021RDz
B1N022RDz
B1N023RDz
B1N024RDz
B1N025RDz
B1N026RDz
B1N027RDz
B1N028RDz
B1N029RDz
B1N030RDz
B1N031RDz
B1N032RDz
B1N033RDz
B1N034RDz
B1N035RDz
B1N036RDz
B1N037RDz
B1N038RDz
B1N039RDz
B1N040RDz
B1N041RDz
B1N042RDz
B1N043RDz
B1N044RDz
B1N045RDz
B1N046RDz
B1N047RDz
B1N048RDz
B1N049RDz
B1N050RDz
B1N1Fl
B1N2Fl
B1N3Fl
B1N4Fl
B1N5Fl
B1N6Fl
B1N7Fl
B1N8Fl
B1N9Fl
B1N1Fd
B1N2Fd
B1N3Fd
B1N4Fd
B1N5Fd
B1N6Fd
B1N7Fd
B1N8Fd
B1N9Fd
B1N1Mm
B1N2Mm
B1N3Mm
B1N4Mm
B1N5Mm
B1N6Mm
B1N7Mm
B1N8Mm
B1N9Mm
B1N1Phi
B1N2Phi
B1N3Phi
B1N4Phi
B1N5Phi
B1N6Phi
B1N7Phi
B1N8Phi
B1N9Phi
B1N1VRel
B1N2VRel
B1N3VRel
B1N4VRel
B1N5VRel
B1N6VRel
B1N7VRel
B1N8VRel
B1N9VRel
B1N1VUndx
B1N2VUndx
B1N3VUndx
B1N4VUndx
B1N5VUndx
B1N6VUndx
B1N7VUndx
B1N8VUndx
B1N9VUndx
B1N1VUndy
B1N2VUndy
B1N3VUndy
B1N4VUndy
B1N5VUndy
B1N6VUndy
B1N7VUndy
B1N8VUndy
B1N9VUndy
B1N1VUndz
B1N2VUndz
B1N3VUndz
B1N4VUndz
B1N5VUndz
B1N6VUndz
B1N7VUndz
B1N8VUndz
B1N9VUndz
B1N1VDisx
B1N2VDisx
B1N3VDisx
B1N4VDisx
B1N5VDisx
B1N6VDisx
B1N7VDisx
B1N8VDisx
B1N9VDisx
B1N1VDisy
B1N2VDisy
B1N3VDisy
B1N4VDisy
B1N5VDisy
B1N6VDisy
B1N7VDisy
B1N8VDisy
B1N9VDisy
B1N1VDisz
B1N2VDisz
B1N3VDisz
B1N4VDisz
B1N5VDisz
B1N6VDisz
B1N7VDisz
B1N8VDisz
B1N9VDisz
B1N1STVx
B1N2STVx
B1N3STVx
B1N4STVx
B1N5STVx
B1N6STVx
B1N7STVx
B1N8STVx
B1N9STVx
B1N1STVy
B1N2STVy
B1N3STVy
B1N4STVy
B1N5STVy
B1N6STVy
B1N7STVy
B1N8STVy
B1N9STVy
B1N1STVz
B1N2STVz
B1N3STVz
B1N4STVz
B1N5STVz
B1N6STVz
B1N7STVz
B1N8STVz
B1N9STVz
B1N1Theta
B1N2Theta
B1N3Theta
B1N4Theta
B1N5Theta
B1N6Theta
B1N7Theta
B1N8Theta
B1N9Theta
RtSpeed
RtTSR
RtSkew
RtAeroPwr
RtArea
RtAeroCp
RtAeroCq
RtAeroCt
B1Pitch
B1Azimuth
B1N1AxInd
B1N2AxInd
B1N3AxInd
B1N4AxInd
B1N5AxInd
B1N6AxInd
B1N7AxInd
B1N8AxInd
B1N9AxInd
B1N1TnInd
B1N2TnInd
B1N3TnInd
B1N4TnInd
B1N5TnInd
B1N6TnInd
B1N7TnInd
B1N8TnInd
B1N9TnInd
AB1N001Vrel
AB1N002Vrel
AB1N003Vrel
AB1N004Vrel
AB1N005Vrel
AB1N006Vrel
AB1N007Vrel
AB1N008Vrel
AB1N009Vrel
AB1N010Vrel
AB1N011Vrel
AB1N012Vrel
AB1N013Vrel
AB1N014Vrel
AB1N015Vrel
AB1N016Vrel
AB1N017Vrel
AB1N018Vrel
AB1N019Vrel
AB1N020Vrel
AB1N021Vrel
AB1N022Vrel
AB1N023Vrel
AB1N024Vrel
AB1N025Vrel
AB1N026Vrel
AB1N027Vrel
AB1N028Vrel
AB1N029Vrel
AB1N030Vrel
AB1N031Vrel
AB1N032Vrel
AB1N033Vrel
AB1N034Vrel
AB1N035Vrel
AB1N036Vrel
AB1N037Vrel
AB1N038Vrel
AB1N039Vrel
AB1N040Vrel
AB1N041Vrel
AB1N042Vrel
AB1N043Vrel
AB1N044Vrel
AB1N045Vrel
AB1N046Vrel
AB1N047Vrel
AB1N048Vrel
AB1N049Vrel
AB1N050Vrel
AB1N001Alpha
AB1N002Alpha
AB1N003Alpha
AB1N004Alpha
AB1N005Alpha
AB1N006Alpha
AB1N007Alpha
AB1N008Alpha
AB1N009Alpha
AB1N010Alpha
AB1N011Alpha
AB1N012Alpha
AB1N013Alpha
AB1N014Alpha
AB1N015Alpha
AB1N016Alpha
AB1N017Alpha
AB1N018Alpha
AB1N019Alpha
AB1N020Alpha
AB1N021Alpha
AB1N022Alpha
AB1N023Alpha
AB1N024Alpha
AB1N025Alpha
AB1N026Alpha
AB1N027Alpha
AB1N028Alpha
AB1N029Alpha
AB1N030Alpha
AB1N031Alpha
AB1N032Alpha
AB1N033Alpha
AB1N034Alpha
AB1N035Alpha
AB1N036Alpha
AB1N037Alpha
AB1N038Alpha
AB1N039Alpha
AB1N040Alpha
AB1N041Alpha
AB1N042Alpha
AB1N043Alpha
AB1N044Alpha
AB1N045Alpha
AB1N046Alpha
AB1N047Alpha
AB1N048Alpha
AB1N049Alpha
AB1N050Alpha
AB1N001Vindx
AB1N002Vindx
AB1N003Vindx
AB1N004Vindx
AB1N005Vindx
AB1N006Vindx
AB1N007Vindx
AB1N008Vindx
AB1N009Vindx
AB1N010Vindx
AB1N011Vindx
AB1N012Vindx
AB1N013Vindx
AB1N014Vindx
AB1N015Vindx
AB1N016Vindx
AB1N017Vindx
AB1N018Vindx
AB1N019Vindx
AB1N020Vindx
AB1N021Vindx
AB1N022Vindx
AB1N023Vindx
AB1N024Vindx
AB1N025Vindx
AB1N026Vindx
AB1N027Vindx
AB1N028Vindx
AB1N029Vindx
AB1N030Vindx
AB1N031Vindx
AB1N032Vindx
AB1N033Vindx
AB1N034Vindx
AB1N035Vindx
AB1N036Vindx
AB1N037Vindx
AB1N038Vindx
AB1N039Vindx
AB1N040Vindx
AB1N041Vindx
AB1N042Vindx
AB1N043Vindx
AB1N044Vindx
AB1N045Vindx
AB1N046Vindx
AB1N047Vindx
AB1N048Vindx
AB1N049Vindx
AB1N050Vindx
AB1N001Vindy
AB1N002Vindy
AB1N003Vindy
AB1N004Vindy
AB1N005Vindy
AB1N006Vindy
AB1N007Vindy
AB1N008Vindy
AB1N009Vindy
AB1N010Vindy
AB1N011Vindy
AB1N012Vindy
AB1N013Vindy
AB1N014Vindy
AB1N015Vindy
AB1N016Vindy
AB1N017Vindy
AB1N018Vindy
AB1N019Vindy
AB1N020Vindy
AB1N021Vindy
AB1N022Vindy
AB1N023Vindy
AB1N024Vindy
AB1N025Vindy
AB1N026Vindy
AB1N027Vindy
AB1N028Vindy
AB1N029Vindy
AB1N030Vindy
AB1N031Vindy
AB1N032Vindy
AB1N033Vindy
AB1N034Vindy
AB1N035Vindy
AB1N036Vindy
AB1N037Vindy
AB1N038Vindy
AB1N039Vindy
AB1N040Vindy
AB1N041Vindy
AB1N042Vindy
AB1N043Vindy
AB1N044Vindy
AB1N045Vindy
AB1N046Vindy
AB1N047Vindy
AB1N048Vindy
AB1N049Vindy
AB1N050Vindy
AB1N001Cn
AB1N002Cn
AB1N003Cn
AB1N004Cn
AB1N005Cn
AB1N006Cn
AB1N007Cn
AB1N008Cn
AB1N009Cn
AB1N010Cn
AB1N011Cn
AB1N012Cn
AB1N013Cn
AB1N014Cn
AB1N015Cn
AB1N016Cn
AB1N017Cn
AB1N018Cn
AB1N019Cn
AB1N020Cn
AB1N021Cn
AB1N022Cn
AB1N023Cn
AB1N024Cn
AB1N025Cn
AB1N026Cn
AB1N027Cn
AB1N028Cn
AB1N029Cn
AB1N030Cn
AB1N031Cn
AB1N032Cn
AB1N033Cn
AB1N034Cn
AB1N035Cn
AB1N036Cn
AB1N037Cn
AB1N038Cn
AB1N039Cn
AB1N040Cn
AB1N041Cn
AB1N042Cn
AB1N043Cn
AB1N044Cn
AB1N045Cn
AB1N046Cn
AB1N047Cn
AB1N048Cn
AB1N049Cn
AB1N050Cn
AB1N001Ct
AB1N002Ct
AB1N003Ct
AB1N004Ct
AB1N005Ct
AB1N006Ct
AB1N007Ct
AB1N008Ct
AB1N009Ct
AB1N010Ct
AB1N011Ct
AB1N012Ct
AB1N013Ct
AB1N014Ct
AB1N015Ct
AB1N016Ct
AB1N017Ct
AB1N018Ct
AB1N019Ct
AB1N020Ct
AB1N021Ct
AB1N022Ct
AB1N023Ct
AB1N024Ct
AB1N025Ct
AB1N026Ct
AB1N027Ct
AB1N028Ct
AB1N029Ct
AB1N030Ct
AB1N031Ct
AB1N032Ct
AB1N033Ct
AB1N034Ct
AB1N035Ct
AB1N036Ct
AB1N037Ct
AB1N038Ct
AB1N039Ct
AB1N040Ct
AB1N041Ct
AB1N042Ct
AB1N043Ct
AB1N044Ct
AB1N045Ct
AB1N046Ct
AB1N047Ct
AB1N048Ct
AB1N049Ct
AB1N050Ct
AB1N001Fn
AB1N002Fn
AB1N003Fn
AB1N004Fn
AB1N005Fn
AB1N006Fn
AB1N007Fn
AB1N008Fn
AB1N009Fn
AB1N010Fn
AB1N011Fn
AB1N012Fn
AB1N013Fn
AB1N014Fn
AB1N015Fn
AB1N016Fn
AB1N017Fn
AB1N018Fn
AB1N019Fn
AB1N020Fn
AB1N021Fn
AB1N022Fn
AB1N023Fn
AB1N024Fn
AB1N025Fn
AB1N026Fn
AB1N027Fn
AB1N028Fn
AB1N029Fn
AB1N030Fn
AB1N031Fn
AB1N032Fn
AB1N033Fn
AB1N034Fn
AB1N035Fn
AB1N036Fn
AB1N037Fn
AB1N038Fn
AB1N039Fn
AB1N040Fn
AB1N041Fn
AB1N042Fn
AB1N043Fn
AB1N044Fn
AB1N045Fn
AB1N046Fn
AB1N047Fn
AB1N048Fn
AB1N049Fn
AB1N050Fn
AB1N001Ft
AB1N002Ft
AB1N003Ft
AB1N004Ft
AB1N005Ft
AB1N006Ft
AB1N007Ft
AB1N008Ft
AB1N009Ft
AB1N010Ft
AB1N011Ft
AB1N012Ft
AB1N013Ft
AB1N014Ft
AB1N015Ft
AB1N016Ft
AB1N017Ft
AB1N018Ft
AB1N019Ft
AB1N020Ft
AB1N021Ft
AB1N022Ft
AB1N023Ft
AB1N024Ft
AB1N025Ft
AB1N026Ft
AB1N027Ft
AB1N028Ft
AB1N029Ft
AB1N030Ft
AB1N031Ft
AB1N032Ft
AB1N033Ft
AB1N034Ft
AB1N035Ft
AB1N036Ft
AB1N037Ft
AB1N038Ft
AB1N039Ft
AB1N040Ft
AB1N041Ft
AB1N042Ft
AB1N043Ft
AB1N044Ft
AB1N045Ft
AB1N046Ft
AB1N047Ft
AB1N048Ft
AB1N049Ft
AB1N050Ft
AB1N001Fx
AB1N002Fx
AB1N003Fx
AB1N004Fx
AB1N005Fx
AB1N006Fx
AB1N007Fx
AB1N008Fx
AB1N009Fx
AB1N010Fx
AB1N011Fx
AB1N012Fx
AB1N013Fx
AB1N014Fx
AB1N015Fx
AB1N016Fx
AB1N017Fx
AB1N018Fx
AB1N019Fx
AB1N020Fx
AB1N021Fx
AB1N022Fx
AB1N023Fx
AB1N024Fx
AB1N025Fx
AB1N026Fx
AB1N027Fx
AB1N028Fx
AB1N029Fx
AB1N030Fx
AB1N031Fx
AB1N032Fx
AB1N033Fx
AB1N034Fx
AB1N035Fx
AB1N036Fx
AB1N037Fx
AB1N038Fx
AB1N039Fx
AB1N040Fx
AB1N041Fx
AB1N042Fx
AB1N043Fx
AB1N044Fx
AB1N045Fx
AB1N046Fx
AB1N047Fx
AB1N048Fx
AB1N049Fx
AB1N050Fx
AB1N001Fy
AB1N002Fy
AB1N003Fy
AB1N004Fy
AB1N005Fy
AB1N006Fy
AB1N007Fy
AB1N008Fy
AB1N009Fy
AB1N010Fy
AB1N011Fy
AB1N012Fy
AB1N013Fy
AB1N014Fy
AB1N015Fy
AB1N016Fy
AB1N017Fy
AB1N018Fy
AB1N019Fy
AB1N020Fy
AB1N021Fy
AB1N022Fy
AB1N023Fy
AB1N024Fy
AB1N025Fy
AB1N026Fy
AB1N027Fy
AB1N028Fy
AB1N029Fy
AB1N030Fy
AB1N031Fy
AB1N032Fy
AB1N033Fy
AB1N034Fy
AB1N035Fy
AB1N036Fy
AB1N037Fy
AB1N038Fy
AB1N039Fy
AB1N040Fy
AB1N041Fy
AB1N042Fy
AB1N043Fy
AB1N044Fy
AB1N045Fy
AB1N046Fy
AB1N047Fy
AB1N048Fy
AB1N049Fy
AB1N050Fy
AB1N001TnInd
AB1N002TnInd
AB1N003TnInd
AB1N004TnInd
AB1N005TnInd
AB1N006TnInd
AB1N007TnInd
AB1N008TnInd
AB1N009TnInd
AB1N010TnInd
AB1N011TnInd
AB1N012TnInd
AB1N013TnInd
AB1N014TnInd
AB1N015TnInd
AB1N016TnInd
AB1N017TnInd
AB1N018TnInd
AB1N019TnInd
AB1N020TnInd
AB1N021TnInd
AB1N022TnInd
AB1N023TnInd
AB1N024TnInd
AB1N025TnInd
AB1N026TnInd
AB1N027TnInd
AB1N028TnInd
AB1N029TnInd
AB1N030TnInd
AB1N031TnInd
AB1N032TnInd
AB1N033TnInd
AB1N034TnInd
AB1N035TnInd
AB1N036TnInd
AB1N037TnInd
AB1N038TnInd
AB1N039TnInd
AB1N040TnInd
AB1N041TnInd
AB1N042TnInd
AB1N043TnInd
AB1N044TnInd
AB1N045TnInd
AB1N046TnInd
AB1N047TnInd
AB1N048TnInd
AB1N049TnInd
AB1N050TnInd
AB1N001AxInd
AB1N002AxInd
AB1N003AxInd
AB1N004AxInd
AB1N005AxInd
AB1N006AxInd
AB1N007AxInd
AB1N008AxInd
AB1N009AxInd
AB1N010AxInd
AB1N011AxInd
AB1N012AxInd
AB1N013AxInd
AB1N014AxInd
AB1N015AxInd
AB1N016AxInd
AB1N017AxInd
AB1N018AxInd
AB1N019AxInd
AB1N020AxInd
AB1N021AxInd
AB1N022AxInd
AB1N023AxInd
AB1N024AxInd
AB1N025AxInd
AB1N026AxInd
AB1N027AxInd
AB1N028AxInd
AB1N029AxInd
AB1N030AxInd
AB1N031AxInd
AB1N032AxInd
AB1N033AxInd
AB1N034AxInd
AB1N035AxInd
AB1N036AxInd
AB1N037AxInd
AB1N038AxInd
AB1N039AxInd
AB1N040AxInd
AB1N041AxInd
AB1N042AxInd
AB1N043AxInd
AB1N044AxInd
AB1N045AxInd
AB1N046AxInd
AB1N047AxInd
AB1N048AxInd
AB1N049AxInd
AB1N050AxInd
GenPwr
GenTq

1 对比叶片位移¶

1.1 读取数据¶

In [158]:
//#获取HawtC的输出
var hawcres1=OpenWECD.APIL.PostAPI.PstAPI.MBDApi_GetFileDATADirectory(@"G:\2026\OpenhastV7\demo\openhast_x64\IEA_15MW_onshore\TESTRES\Hast_Land_15MWBaseLine_PowerProduction\\MBD_Blade Motiontip  Openhast 15MW_Land_BaseLine_LinearBlade_NTM11.0.MBD.out");
hawcres1.Keys
[ Time, OoPDefl   B_0, OoPDefl   B_1, OoPDefl   B_2, IPDefl    B_0, IPDefl    B_1, IPDefl    B_2, TipDzb    B_0, TipDzb    B_1, TipDzb    B_2, TipDxb    B_0, TipDxb    B_1, TipDxb    B_2, TipDyb    B_0, TipDyb    B_1, TipDyb    B_2, Tip2Twr   B_0, Tip2Twr   B_1, Tip2Twr   B_2, TipDxyc   B_0 ... (5 more) ]

1.1 对比叶片的挥舞位移¶

In [159]:
ScottPlot.Plot plt = new();
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["OoPDefl1"][0,-1].ToArray());
sig1.LineWidth=1.8f;
sig1.MarkerSize=0.0f;
sig1.LegendText="FAST";
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres1["OoPDefl   B_0"][0,-1].ToArray());
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
sig2.LegendText="HawtC";
plt.XLabel("Time[s]");
plt.YLabel("Flapwise Dis");
plt.Title("FAST With HawtC");
plt

1.2 对比叶片的摆振位移¶

In [160]:
ScottPlot.Plot plt = new();
sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["IPDefl1"][0,-1].ToArray());
sig1.LegendText="FAST";
sig1.LineWidth=1.8f;
sig1.MarkerSize=0.0f;
sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres1["IPDefl    B_1"][0,-1].ToArray());
sig2.LegendText="HawtC";
sig2.LineWidth=1.8f;
sig2.MarkerSize=0.0f;
plt.XLabel("Time[s]");
plt.YLabel("Edgewise Dis");
plt.Title("FAST With HawtC");
plt

2 对比塔顶位移¶

2.1 读取数据¶

In [161]:
//#获取HawtC的输出
var hawcres2=OpenWECD.APIL.PostAPI.PstAPI.MBDApi_GetFileDATADirectory(@"G:\2026\OpenhastV7\demo\openhast_x64\IEA_15MW_onshore\TESTRES\Hast_Land_15MWBaseLine_PowerProduction\\MBD_Tower Top And Yaw Bearing Motions  Openhast 15MW_Land_BaseLine_LinearBlade_NTM11.0.MBD.out");
hawcres2.Keys
[ Time, TTDspFA   , TTDspSS   , TTDspAx    ]

2.2 对比塔顶的挥舞位移¶

In [162]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["TwrTpTDxi"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres["TTDspFA   "].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["TwrTpTDxi"][0,-1].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres2["TTDspFA   "][0,-1].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("Tower Top out plant Dis");
plt.Title("FAST With HawtC");
plt

2.3 对比塔顶的摆振位移¶

In [163]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["TwrTpTDyi"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres["TTDspSS   "].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["TwrTpTDyi"][0,-1].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres2["TTDspSS   "][0,-1].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("Tower Top inplant Dis");
plt

3 对比塔底载荷¶

3.1 获取HawtC数据¶

In [164]:
//#获取HawtC的输出
var hawcres3=OpenWECD.APIL.PostAPI.PstAPI.MBDApi_GetFileDATADirectory(@"G:\2026\OpenhastV7\demo\openhast_x64\IEA_15MW_onshore\TESTRES\Hast_Land_15MWBaseLine_PowerProduction\\MBD_Tower Base Loads  Openhast 15MW_Land_BaseLine_LinearBlade_NTM11.0.MBD.out");
hawcres3.Keys
[ Time, TwrBsFxyt , TwrBsMxyt , TwrBsFxt  , TwrBsFyt  , TwrBsFzt  , TwrBsMxt  , TwrBsMyt  , TwrBsMzt   ]

3.2 获取塔底Mx弯矩¶

In [116]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["TwrBsMxt"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres3["TwrBsMxt"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["TwrBsMxt"][0,-1].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres3["TwrBsMxt  "][0,-1].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("Tower Base Mx");
plt.Title("FAST With HawtC");
plt

3.3 获取塔底My弯矩¶

In [165]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["TwrBsMyt"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres3["TwrBsMyt"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["TwrBsMyt"][0,-1].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres3["TwrBsMyt  "][0,-1].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("Tower Base My");
plt.Title("FAST With HawtC");
plt

3.4 获取塔底Mz弯矩¶

In [166]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["TwrBsMzt"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres3["TwrBsMzt"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["TwrBsMzt"][0,-1].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres3["TwrBsMzt  "][0,-1].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("Tower Base Mz");
plt.Title("FAST With HawtC");
plt

3.5 获取塔底Fx力¶

In [167]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["TwrBsFxt"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres3["TwrBsFxt"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["TwrBsFxt"][0,-1].ToArray());
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
sig1.LegendText="FAST";
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres3["TwrBsFxt  "][0,-1].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("Tower Base Fx [kN]");
plt.Title("FAST With HawtC");
plt

3.6 获取塔底Fy力¶

In [168]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["TwrBsFyt"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres3["TwrBsFyt"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["TwrBsFyt"].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres3["TwrBsFyt  "].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("Tower Base Fy");
plt.Title("FAST With HawtC");
plt

3.7 获取塔底Fz力¶

In [169]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["TwrBsFzt"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres3["TwrBsFzt"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["TwrBsFzt"].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres3["TwrBsFzt  "].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("Tower Base Fz");
plt.Title("FAST With HawtC");
plt

4对比叶根载荷¶

4.1 获取HawtC数据¶

In [125]:
//#获取HawtC的输出
var hawcres4=OpenWECD.APIL.PostAPI.PstAPI.MBDApi_GetFileDATADirectory(@"G:\2026\OpenhastV7\demo\openhast_x64\IEA_15MW_onshore\TESTRES\Hast_Land_15MWBaseLine_PowerProduction\\MBD_Blade Root Loads  Openhast 15MW_Land_BaseLine_LinearBlade_NTM11.0.MBD.out");
hawcres4.Keys
[ Time, RootFxyc  B_0, RootFxyc  B_1, RootFxyc  B_2, RootFxyb  B_0, RootFxyb  B_1, RootFxyb  B_2, RootMxyc  B_0, RootMxyc  B_1, RootMxyc  B_2, RootMxyb  B_0, RootMxyb  B_1, RootMxyb  B_2, RootFxc   B_0, RootFxc   B_1, RootFxc   B_2, RootFyc   B_0, RootFyc   B_1, RootFyc   B_2, RootFzc   B_0 ... (29 more) ]

4.2 获取叶根Mx弯矩¶

In [130]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMxb1"].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMxb   B_1"].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("Root Mx [KN*m]");
plt.Title("FAST With HawtC");
plt

4.3 获取叶根My弯矩¶

In [127]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMy1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMy1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMyb1"].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMyb   B_0"].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("Root My [KN*m]");
plt.Title("FAST With HawtC");
plt

4.4 获取叶根Mz弯矩¶

In [128]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMz1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMz1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMzb1"].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMzb   B_0"].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("Root Mz [KN*m]");
plt.Title("FAST With HawtC");
plt

4.5 获取叶根Fx 力¶

In [131]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootFx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootFx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootFxb1"].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootFxb   B_0"].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("Root Fx [KN]");
plt.Title("FAST With HawtC");
plt

4.6 获取叶根Fy 力¶

In [132]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootFx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootFx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootFyb1"].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootFyb   B_0"].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("Root Fy [KN]");
plt.Title("FAST With HawtC");
plt

4.7 获取叶根Fz 力¶

In [133]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootFx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootFx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootFzb1"].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootFzb   B_0"].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("Root Fz [KN]");
plt.Title("FAST With HawtC");
plt

5 对比叶片节点的气动载荷¶

5.1 读取HawtC的数据¶

In [134]:
//#获取HawtC的输出
var hawcres5=OpenWECD.APIL.PostAPI.PstAPI.MBDApi_GetFileDATADirectory(@"G:\2026\OpenhastV7\demo\openhast_x64\IEA_15MW_onshore\TESTRES\Hast_Land_15MWBaseLine_PowerProduction\\AER_Blade Aero Load  Openhast 15MW_Land_BaseLine_LinearBlade_NTM11.0.AER.out");
hawcres5.Keys
[ Time, BkNjFl    B_0_N_0, BkNjFl    B_0_N_1, BkNjFl    B_0_N_15, BkNjFl    B_0_N_20, BkNjFl    B_0_N_24, BkNjFl    B_0_N_31, BkNjFl    B_0_N_34, BkNjFl    B_0_N_39, BkNjFl    B_0_N_44, BkNjFd    B_0_N_0, BkNjFd    B_0_N_1, BkNjFd    B_0_N_15, BkNjFd    B_0_N_20, BkNjFd    B_0_N_24, BkNjFd    B_0_N_31, BkNjFd    B_0_N_34, BkNjFd    B_0_N_39, BkNjFd    B_0_N_44, BkNjMm    B_0_N_0 ... (8 more) ]

5.2 读取节点的气动升力 Fl¶

In [135]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["B1N8Fl"].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres5["BkNjFl    B_0_N_39"].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("B1N2Fl ");
plt.Title("FAST With HawtC");
Console.Write((fastres["B1N8Fl"][10000,-1].Max()-hawcres5["BkNjFl    B_0_N_39"][10000,-1].Max())/hawcres5["BkNjFl    B_0_N_39"][10000,-1].Max()*100);
plt
0.5710196467066706

5.3 读取节点的气动阻力 Fd¶

In [136]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["B1N8Fd"].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres5["BkNjFd    B_0_N_39"].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("B1N2Fd ");
plt.Title("FAST With HawtC");
Console.Write((fastres["B1N8Fd"][10000,-1].Max()-hawcres5["BkNjFd    B_0_N_39"][10000,-1].Max())/hawcres5["BkNjFd    B_0_N_39"][10000,-1].Max()*100);
plt
0.0013524867190464465

5.4 读取节点的气动弯矩 Mm¶

In [137]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["B1N3Mm"].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres5["BkNjMm    B_0_N_15"].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("B1N2Mm ");
plt.Title("FAST With HawtC");
plt

6 对比气动信息¶

6.1 读取HawtC信息¶

In [138]:
//#获取HawtC的输出
var hawcres6=OpenWECD.APIL.PostAPI.PstAPI.MBDApi_GetFileDATADirectory(@"G:\2026\OpenhastV7\demo\openhast_x64\IEA_15MW_onshore\TESTRES\Hast_Land_15MWBaseLine_PowerProduction\\AER_Blade Airfoil Inf  Openhast 15MW_Land_BaseLine_LinearBlade_NTM11.0.AER.out");
Otherhelper.Tostring(hawcres6.Keys.ToArray())
Time
BkNjPhi   B_0_N_0
BkNjPhi   B_0_N_1
BkNjPhi   B_0_N_15
BkNjPhi   B_0_N_20
BkNjPhi   B_0_N_24
BkNjPhi   B_0_N_31
BkNjPhi   B_0_N_34
BkNjPhi   B_0_N_39
BkNjPhi   B_0_N_44
BkNjVRel  B_0_N_0
BkNjVRel  B_0_N_1
BkNjVRel  B_0_N_15
BkNjVRel  B_0_N_20
BkNjVRel  B_0_N_24
BkNjVRel  B_0_N_31
BkNjVRel  B_0_N_34
BkNjVRel  B_0_N_39
BkNjVRel  B_0_N_44
BkNjTheta B_0_N_0
BkNjTheta B_0_N_1
BkNjTheta B_0_N_15
BkNjTheta B_0_N_20
BkNjTheta B_0_N_24
BkNjTheta B_0_N_31
BkNjTheta B_0_N_34
BkNjTheta B_0_N_39
BkNjTheta B_0_N_44
BkNjAxInd B_0_N_0
BkNjAxInd B_0_N_1
BkNjAxInd B_0_N_15
BkNjAxInd B_0_N_20
BkNjAxInd B_0_N_24
BkNjAxInd B_0_N_31
BkNjAxInd B_0_N_34
BkNjAxInd B_0_N_39
BkNjAxInd B_0_N_44
BkNjTnInd B_0_N_0
BkNjTnInd B_0_N_1
BkNjTnInd B_0_N_15
BkNjTnInd B_0_N_20
BkNjTnInd B_0_N_24
BkNjTnInd B_0_N_31
BkNjTnInd B_0_N_34
BkNjTnInd B_0_N_39
BkNjTnInd B_0_N_44

6.2 读取入流角¶

In [139]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["B1N8Phi"].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres6["BkNjPhi   B_0_N_39"].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("Phi[deg] ");
plt.Title("FAST With HawtC");
Console.Write((fastres["B1N8Phi"][10000,-1].Max()-hawcres6["BkNjPhi   B_0_N_39"][10000,-1].Max())/hawcres6["BkNjPhi   B_0_N_39"][10000,-1].Max()*100);
plt
-3.938376637273481

6.2 读取theta角¶

In [140]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"][8000,-1].ToArray(), fastres["B1N3Theta"][8000,-1].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"][8000,-1].ToArray(), hawcres6["BkNjTheta B_0_N_15"][8000,-1].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("Theta[deg]");
plt.Title("FAST With HawtC");
plt

6.3 读取Vrel¶

In [141]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["B1N3VRel"].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres6["BkNjVRel  B_0_N_15"].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("Vrel[m/s]");
plt.Title("FAST With HawtC");
plt

6.4 读取轴向诱导因子Aind¶

In [142]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["B1N3AxInd"].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres6["BkNjAxInd B_0_N_15"].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("AxInd[m/s]");
plt.Title("FAST With HawtC");
plt
In [1008]:
fastres["B1N5AxInd"][0]
0.05432

6.5 读取切向诱导因子Tnind¶

In [143]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["B1N3TnInd"][1,-1].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres6["BkNjTnInd B_0_N_15"][1,-1].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("TnInd[m/s]");
plt.Title("FAST With HawtC");
plt

7对比入流风速¶

7.1 读取HawtC文件¶

In [144]:
//#获取HawtC的输出
var hawcres7=OpenWECD.APIL.PostAPI.PstAPI.MBDApi_GetFileDATADirectory(@"G:\2026\OpenhastV7\demo\openhast_x64\IEA_15MW_onshore\TESTRES\Hast_Land_15MWBaseLine_PowerProduction\\AER_Blade Aero Inf  Openhast 15MW_Land_BaseLine_LinearBlade_NTM11.0.AER.out");
Otherhelper.Tostring(hawcres7.Keys.ToArray<string>())
Time
BkNjVUndx B_0_N_0
BkNjVUndx B_0_N_1
BkNjVUndx B_0_N_15
BkNjVUndx B_0_N_20
BkNjVUndx B_0_N_24
BkNjVUndx B_0_N_31
BkNjVUndx B_0_N_34
BkNjVUndx B_0_N_39
BkNjVUndx B_0_N_44
BkNjVUndy B_0_N_0
BkNjVUndy B_0_N_1
BkNjVUndy B_0_N_15
BkNjVUndy B_0_N_20
BkNjVUndy B_0_N_24
BkNjVUndy B_0_N_31
BkNjVUndy B_0_N_34
BkNjVUndy B_0_N_39
BkNjVUndy B_0_N_44
BkNjVUndz B_0_N_0
BkNjVUndz B_0_N_1
BkNjVUndz B_0_N_15
BkNjVUndz B_0_N_20
BkNjVUndz B_0_N_24
BkNjVUndz B_0_N_31
BkNjVUndz B_0_N_34
BkNjVUndz B_0_N_39
BkNjVUndz B_0_N_44
BkNjVDisx B_0_N_0
BkNjVDisx B_0_N_1
BkNjVDisx B_0_N_15
BkNjVDisx B_0_N_20
BkNjVDisx B_0_N_24
BkNjVDisx B_0_N_31
BkNjVDisx B_0_N_34
BkNjVDisx B_0_N_39
BkNjVDisx B_0_N_44
BkNjVDisy B_0_N_0
BkNjVDisy B_0_N_1
BkNjVDisy B_0_N_15
BkNjVDisy B_0_N_20
BkNjVDisy B_0_N_24
BkNjVDisy B_0_N_31
BkNjVDisy B_0_N_34
BkNjVDisy B_0_N_39
BkNjVDisy B_0_N_44
BkNjVDisz B_0_N_0
BkNjVDisz B_0_N_1
BkNjVDisz B_0_N_15
BkNjVDisz B_0_N_20
BkNjVDisz B_0_N_24
BkNjVDisz B_0_N_31
BkNjVDisz B_0_N_34
BkNjVDisz B_0_N_39
BkNjVDisz B_0_N_44
BkNjSTVx  B_0_N_0
BkNjSTVx  B_0_N_1
BkNjSTVx  B_0_N_15
BkNjSTVx  B_0_N_20
BkNjSTVx  B_0_N_24
BkNjSTVx  B_0_N_31
BkNjSTVx  B_0_N_34
BkNjSTVx  B_0_N_39
BkNjSTVx  B_0_N_44
BkNjSTVy  B_0_N_0
BkNjSTVy  B_0_N_1
BkNjSTVy  B_0_N_15
BkNjSTVy  B_0_N_20
BkNjSTVy  B_0_N_24
BkNjSTVy  B_0_N_31
BkNjSTVy  B_0_N_34
BkNjSTVy  B_0_N_39
BkNjSTVy  B_0_N_44
BkNjSTVz  B_0_N_0
BkNjSTVz  B_0_N_1
BkNjSTVz  B_0_N_15
BkNjSTVz  B_0_N_20
BkNjSTVz  B_0_N_24
BkNjSTVz  B_0_N_31
BkNjSTVz  B_0_N_34
BkNjSTVz  B_0_N_39
BkNjSTVz  B_0_N_44
BPitch    B_0
BAzimuth  B_0

7.2 Undx¶

In [145]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["B1N1VUndx"].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres7["BkNjVUndx B_0_N_15"].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("VUndx[m/s]");
plt.Title("FAST With HawtC");
plt

7.3 Undy¶

In [146]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["B1N3VUndy"].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres7["BkNjVUndy B_0_N_15"].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("VUndy[m/s]");
plt.Title("FAST With HawtC");
plt

7.4 Undz¶

In [147]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["B1N3VUndz"].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres7["BkNjVUndz B_0_N_15"].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("VUndz[m/s]");
plt.Title("FAST With HawtC");
plt

7.4 UndzALL¶

In [148]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var fastdata=(fastres["B1N3VUndx"].PointwisePower(2)+fastres["B1N3VUndy"].PointwisePower(2)+fastres["B1N3VUndz"].PointwisePower(2)).PointwiseSqrt();
var Hawtdata=(hawcres7["BkNjVUndx B_0_N_15"].PointwisePower(2)+
            hawcres7["BkNjVUndy B_0_N_15"].PointwisePower(2)+
            hawcres7["BkNjVUndz B_0_N_15"].PointwisePower(2)).PointwiseSqrt();
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastdata.ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), Hawtdata.ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("VUndz[m/s]");
plt.Title("FAST With HawtC");
plt
In [149]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var fastdata= (fastres["B1N3VUndy"].PointwiseDivide(fastres["B1N3VUndx"])).PointwiseAtan();
var Hawtdata=(hawcres7["BkNjVUndy B_0_N_15"].PointwiseDivide(hawcres7["BkNjVUndx B_0_N_15"])).PointwiseAtan();//(hawcres7["BkNjVUndx B_0_N_15"].PointwisePower(2)+
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastdata.ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), Hawtdata.ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("spp[m/s]");
plt.Title("FAST With HawtC");
plt

7.5 DisX¶

In [150]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["B1N3VDisx"].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres7["BkNjVDisx B_0_N_15"].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("VDisx[m/s]");
plt.Title("FAST With HawtC");
plt

7.6 DisY¶

In [151]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["B1N3VDisy"].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres7["BkNjVDisy B_0_N_15"].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("VDisy[m/s]");
plt.Title("FAST With HawtC");
plt

7.7 DisZ¶

In [152]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["B1N3VDisz"].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres7["BkNjVDisz B_0_N_15"].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("VDisz[m/s]");
plt.Title("FAST With HawtC");
plt

7.8 StvX¶

In [153]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["B1N3STVx"].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres7["BkNjSTVx  B_0_N_15"].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("STVx[m/s]");
plt.Title("FAST With HawtC");
plt

7.9 StvY¶

In [154]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["B1N3STVy"].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres7["BkNjSTVy  B_0_N_15"].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("STVy[m/s]");
plt.Title("FAST With HawtC");
plt

7.10 StvZ¶

In [155]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["B1N3STVz"].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres7["BkNjSTVz  B_0_N_15"].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("STVz[m/s]");
plt.Title("FAST With HawtC");
plt

7.11 Bpitch¶

In [156]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"][6000,-1].ToArray(), fastres["B1Pitch"][6000,-1].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"][6000,-1].ToArray(), hawcres7["BPitch    B_0"][6000,-1].ToArray());
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("BPitch[deg]");
plt.Title("FAST With HawtC");
plt

7.12 BAzimuth¶

In [157]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["B1Azimuth"].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres7["BAzimuth  B_0"].ToArray());//BAzimuth  B_0
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("BAzimuth[deg]");
plt.Title("FAST With HawtC");
plt
In [48]:
2.0943951023931953*180/Math.PI
119.99999999999999

8 自由度对比¶

8.1 读取数据¶

In [49]:
//#获取HawtC的输出
var hawcres8=OpenWECD.APIL.PostAPI.PstAPI.MBDApi_GetFileDATADirectory(@"G:\2026\OpenhastV7\demo\openhast_x64\IEA_15MW_onshore\TESTRES\Hast_Land_15MWBaseLine_PowerProduction\\MBD_Freedom  Openhast 15MW_Land_BaseLine_LinearBlade_NTM11.0.MBD.out");
Otherhelper.Tostring(hawcres8.Keys.ToArray<string>())
Time
QD2_B1E1  
QD2_B1F1  
QD2_B1F2  
QD2_B2E1  
QD2_B2F1  
QD2_B2F2  
QD2_B3E1  
QD2_B3F1  
QD2_B3F2  
QD2_DRTR  
QD2_GEAZ  
QD2_HV    
QD2_P     
QD2_R     
QD2_RFRL  
QD2_SG    
QD2_SW    
QD2_TFA1  
QD2_TFA2  
QD2_TFRL  
QD2_TSS1  
QD2_TSS2  
QD2_Y     
QD2_BTMD  B_0
QD2_BTMD  B_1
QD2_BTMD  B_2
QD2_YAW   
QD_B1E1   
QD_B1F1   
QD_B1F2   
QD_B2E1   
QD_B2F1   
QD_B2F2   
QD_B3E1   
QD_B3F1   
QD_B3F2   
QD_DRTR   
QD_GEAZ   
QD_HV     
QD_P      
QD_R      
QD_RFRL   
QD_SG     
QD_SW     
QD_TFA1   
QD_TFA2   
QD_TFRL   
QD_TSS1   
QD_TSS2   
QD_Y      
QD_BTMD   B_0
QD_BTMD   B_1
QD_BTMD   B_2
QD_YAW    
Q_B1E1    
Q_B1F1    
Q_B1F2    
Q_B2E1    
Q_B2F1    
Q_B2F2    
Q_B3E1    
Q_B3F1    
Q_B3F2    
Q_DRTR    
Q_GEAZ    
Q_HV      
Q_P       
Q_R       
Q_RFRL    
Q_SG      
Q_SW      
Q_TFA1    
Q_TFA2    
Q_TFRL    
Q_TSS1    
Q_TSS2    
Q_Y       
Q_YAW     
Q_BTMD    B_0
Q_BTMD    B_1
Q_BTMD    B_2
Q_TTMD    
QD_TTMD   
QD2_TTMD  

8.2 叶片1阶摆振¶

In [50]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"][4800,-1].ToArray(), fastres["QD_B1E1"][4800,-1].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"][4800,-1].ToArray(), hawcres8["QD_B1E1   "][4800,-1].ToArray());//BAzimuth  B_0
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("BAzimuth[deg]");
plt.Title("FAST With HawtC");
plt

8.3 叶片1阶挥舞¶

In [51]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"][4800,-1].ToArray(), fastres["QD_B1F1"][4800,-1].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"][4800,-1].ToArray(), hawcres8["QD_B1F1   "][4800,-1].ToArray());//BAzimuth  B_0
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("QD_B1F1[deg]");
plt.Title("FAST With HawtC");
plt

8.4 叶片2阶挥舞¶

In [52]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"][4800,-1].ToArray(), fastres["QD_B1F2"][4800,-1].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"][4800,-1].ToArray(), hawcres8["QD_B1F2   "][4800,-1].ToArray());//BAzimuth  B_0
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("QD_B1F2[deg]");
plt.Title("FAST With HawtC");
plt

8.5 发电机GEAZ¶

In [53]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["QD_GeAz"][0,-1].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres8["QD_GEAZ   "][0,-1].ToArray());//BAzimuth  B_0
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("GEAZ[deg]");
plt.Title("FAST With HawtC");
plt
In [55]:
fastres["Q_GeAz"][0]*180.0/3.1415926-180
89.97771767096725
In [57]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["Q_GeAz"].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres8["Q_GEAZ    "].ToArray());//BAzimuth  B_0
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("GEAZ[deg]");
plt.Title("FAST With HawtC");
plt

8.6 塔架的一阶挥舞¶

In [58]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"][4800,-1].ToArray(), fastres["QD_TFA1"][4800,-1].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"][4800,-1].ToArray(), hawcres8["QD_TFA1   "][4800,-1].ToArray());//BAzimuth  B_0
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("QD_TFA1");
plt.Title("FAST With HawtC");
plt
In [59]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"][4800,9800].ToArray(), fastres["QD_TFA2"][4800,9800].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"][4800,9800].ToArray(), hawcres8["QD_TFA2   "][4800,9800].ToArray());//BAzimuth  B_0
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("GEAZ[deg]");
plt.Title("FAST With HawtC");
plt
In [60]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"][4800,-1].ToArray(), fastres["QD_TSS1"][4800,-1].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"][4800,-1].ToArray(), hawcres8["QD_TSS1   "][4800,-1].ToArray());//BAzimuth  B_0
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("GEAZ[deg]");
plt.Title("FAST With HawtC");
plt
In [62]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"][4800,-1].ToArray(), fastres["QD_TSS2"][4800,-1].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"][4800,-1].ToArray(), hawcres8["QD_TSS2   "][4800,-1].ToArray());//BAzimuth  B_0
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("GEAZ[deg]");
plt.Title("FAST With HawtC");
plt

9 看看控制器的输出和气动扭矩¶

9.1 读取数据¶

In [63]:
//#获取HawtC的输出
var hawcres8=OpenWECD.APIL.PostAPI.PstAPI.MBDApi_GetFileDATADirectory(@"G:\2026\OpenhastV7\demo\openhast_x64\IEA_15MW_onshore\TESTRES\Hast_Land_15MWBaseLine_PowerProduction\\CON_Pitch Control And Generator Control  Openhast 15MW_Land_BaseLine_LinearBlade_NTM11.0.CON.out");
Otherhelper.Tostring(hawcres8.Keys.ToArray<string>())
Time
BlPitchC  B_0
BlPitchC  B_2
GenTq     
GenPwr    
In [64]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["GenPwr"][0,-1].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres8["GenPwr    "][0,-1].ToArray());//BAzimuth  B_0
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("Power[deg]");
plt.Title("FAST With HawtC");
plt
In [65]:
ScottPlot.Plot plt = new();
// plt.Add.Scatter(fastres["Time"].ToArray(), fastres["RootMx1"].ToArray());
// plt.Add.Scatter(fastres["Time"].ToArray(), hawcres4["RootMx1"].ToArray());
var sig1=plt.Add.Scatter(fastres["Time"].ToArray(), fastres["GenTq"][4800,-1].ToArray());
sig1.LegendText="FAST";
sig1.MarkerSize=0.0f;
sig1.LineWidth=1.8f;
var sig2=plt.Add.Scatter(fastres["Time"].ToArray(), hawcres8["GenTq     "][4800,-1].ToArray());//BAzimuth  B_0
sig2.LegendText="HawtC";
sig2.MarkerSize=0.0f;
sig2.LineWidth=1.8f;
plt.XLabel("Time[s]");
plt.YLabel("Power[deg]");
plt.Title("FAST With HawtC");
plt
In [1039]:
180.0/18000.0
0.01