导入库¶

In [ ]:
# r"G:\2026\OpenhastV7\vs_build\Openhast\bin\Debug\net8.0\HawtC.dll"
#r "nuget:ScottPlot, 5.*"
// #r "nuget:numflat, 1.*"
//# r"C:\Users\123\.nuget\packages\skiasharp\2.88.8\interactive-extensions\dotnet\SkiaSharp.DotNet.Interactive.dll"

using OpenWECD.IO.Log;
using OpenWECD.WindL;
using OpenWECD.WindL.SimWind;
// 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 [ ]:
// 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);

1. WindL¶

1.1.1 OpenWECD.HawtC.DLL.CAndC_DLL.SetSimWindDelSpecThin¶

使用 OpenWECD.HawtC.DLL.CAndC_DLL.SetSimWindDelSpecThin 指针接口实现自定义风谱模型¶

In [ ]:
//# 用于Thin模式下的函数指针(c# 称为委托,是一种类型安全的指针),这是一个谱指针
In [ ]:
LogHelper.DisplayInformation();

var file = WindL_IO_Subs.ReadSimWind_MainFile(@"G:\2026\OpenhastV7\demo\WindL\SimWind湍流风生成模块案例\\HawtC.WindL.SimWind_MainFile_userSpec.dat");
Debug 调试模式 develop by 赵子祯 Debug 调试模式 develop by 赵子祯 Debug 调试模式 develop by 赵子祯
     ------------------------------------------------------------------------------------------     
     !       000                                00     00    00  0000000   00000  000000      !     
     !     0     0    000      000      00000   00    00    00  0        0       00     00    !     
     !     0     0  0     0  0     0   0     0  00   0000   00  000000  0       00      00    !     
     !      000    0      0 0       0 0     0    0  0   0  0   0        0       00     00     !     
     !             0 0000   0  000    0     0     00     00    0000000   00000  0000000       !     
     !             0        0     0                                                           !     
     !            0          0000                                                             !     
     !                                                                                        !     
 !                    Copyright (c) HawtC.Team.ZZZ,赵子祯 licensed under GPL v3 .                   !  
     !                                                                                        !     
     !   Copyright (c)  Key Laboratory of Jiangsu province High-Tech design of wind turbine   !     
     !                                                                                        !     
******                 Running Microsoft.DotNet.Interactive.App (vdebug.test  2024-12)                  ******
     ------------------------------------------------------------------------------------------     
Debug 调试模式 develop by 赵子祯 Debug 调试模式 develop by 赵子祯 Debug 调试模式 develop by 赵子祯
       OpenWECD.Microsoft.DotNet.Interactive.App Lisenced To:超级用户 - Copyright (c)ZHAO ZIZHEN        
Debug 调试模式 develop by 赵子祯 Debug 调试模式 develop by 赵子祯 Debug 调试模式 develop by 赵子祯
 SIMD_by赵子祯
In [ ]:
file
OpenWECD.WindL.WND_SimWind
filepath
G:\2026\OpenhastV7\demo\WindL\SimWind湍流风生成模块案例\\HawtC.WindL.SimWind_MainFile_userSpec.dat
filedata
[ ------- OpenWECD.HawtC.WindL.SimWind  主文件 -------------------------------------------, 哈哈哈,终于把湍流谱方法弄明白且编写了HawtC自有的湍流风模块, ---------------------- 时间与IO定义 -------------------------------------- , 0.05           dt                  -  风的时间间隔[s], 600                Times          -  时间序列长度[s], 5                  FileType    -  生成的风文件类型{Bladed.wnd=1,FAST.bts=2,FAST and Bladed =3,ASCLL.txt=4,ALL=5}, , ---------------------- 风模型与风网格化  -------------------------------------- , 11                  SpecType            -  风的种类 {von_karman=1, kaimal=2,NPD=3, IEC_Von_Karman=4,IEC_Kaiman=5,IEC_Mann=6,User=11}(IEC为风力机谱,其他为桥梁工程和通用谱,无法设置湍流度), 1                  Profile         -  风的轮廓 {power=1, log=2, NPD=3}, 3                  Coh            -  空间相干性模型{DavenportModel=1(最简单),IEC_Von_karmanCoh =2,IEC_KaimanCoh=3,User=11},可以自己定义相干性模型,对于IEC模型的空间相干性会遵循IEC-3rd的标准,但是会报警,MoptL下为了防止错误不支持自定义。, 2                 GenT         - 风谱生成方法{交叉谱 IFFT=1,Bladed IFFT=2,谐波叠加法=3(暂时不支持相干函数)}, 1,2,3                 Component  - 否生成的维度,1为u,2为v,3为w, 9                 MeanU       -  参考高度的平均风速[m/s], 150             RefZ           -  参考高度[m], 15                 Nyy             - 沿y轴的节点数量, 15                 Nzz             - 沿z轴的节点数量, 0                 Zmin           -  网格沿z轴的最小高度, 330               Zmax          -  网格沿z轴的最大高度, -160               Ymin          -   网格沿y轴的最小高度 ... (36 more) ]
dt
0.05
Times
600
GenTThin
SpecTypeuser_SelfSpectralType
FileTypeALL
Component
[ 1, 2, 3 ]
stdU
2.6
stdV
2.2
stdW
1.56
Lux
340.2
Lvx
113.4
Lwx
27.72
CohIEC_KaimanCoh
Cuy_1
7
Cuz_1
10
Cvy_1
7
Cvz_1
10
Cwy_1
6.5
Cwz_1
3
Lc
340.2
Profilepower
MeanU
9
RefZ
150
a
0
u_star
0.8
roughness
0.03
kappa
0.4
Nyy
15
Nzz
15
Zmin
0
Zmax
330
Ymin
-160
Ymax
160
Seed
8560
savepath
G:\2026\OpenhastV7\demo\WindL\SimWind湍流风生成模块案例\res.bts
In [ ]:
//# IEC karmal

var U0 = file.MeanU;
//I0 = 10.0;
var sigma_u =2;// file.stdU;// (I0 * 0.01 * U0);
var sigma_v =1.6; //file.stdV;// 0.8 * sigma_u;
var sigma_w =1;// file.stdW;// 0.5 * sigma_u;
var var_u = sigma_u * sigma_u;
var var_v = sigma_v * sigma_v;
var var_w = sigma_w * sigma_w;

//p.StdU= sigma_u;
//p.StdV= sigma_v;
//p.StdW= sigma_w;

var xLu = file.Lux;
var xLv = file.Lvx;
var xLw = file.Lwx;

const double r = 5.0 / 3.0;
 
 /// <summary>
 /// 
 /// </summary>
 /// <param name="U"></param>
 /// <param name="Z"></param>
 /// <param name="f"></param>
 /// <param name="comp"></param>
 /// <returns></returns>
 public float Spectral(in WND_SimRtHndSideType rths, double f, int comp, params float[] par)
 {
     float Su = 0;
     if (comp == 1)
     {
         Su = (float)(4.0 * var_u * (xLu / U0) / (Math.Pow(1.0 + 6.0 * f * (xLu / U0), r))) * 0.5f; //% Positive amplitude spectrum(U-component)
     }
     else if (comp == 2)
     {
         Su = (float)(4.0 * var_v * (xLv / U0) / (Math.Pow(1.0 + 6.0 * f * (xLv / U0), r))) * 0.5f; //% Positive amplitude spectrum(U-component)
     }
     else if (comp == 3)
     {
         Su = (float)(4.0 * var_w * (xLw / U0) / (Math.Pow(1.0 + 6.0 * f * (xLw / U0), r))) * 0.5f; //% Positive amplitude spectrum(U-component)
     }
     else
     {
         LogHelper.ErrorLog("The SimWind Kaimal Model only support 3D wind!");
     }


     //var fr = (x * Z / U);


     return Su;

 }

//#将函数指针绑定到软件接口上面

OpenWECD.HawtC.DLL.CAndC_DLL.SetSimWindDelSpecThin(Spectral);
In [ ]:
var Sim=new GenerateWind_SimWind(file);
 欢迎使用OpenWECD.HawtC.WindL.SimWind 模块!Copyright (c) HawtC.Team.ZZZ, licensed under GPL
 The SimWind use User Define Spectral Model!
 The SimWind use IEC_karman Coherence Model!
 Component 1
   [##############################] 100% (409/409)
 22.32 s
   TurbMeanU:-0.000 MeanU:9.000 Iv:28.889%
 Component 2
   [##############################] 100% (409/409)
 22.62 s
   TurbMeanU:-0.000 MeanU:9.000 Iv:24.444%
 Component 3
   [##############################] 100% (409/409)
 33.52 s
   TurbMeanU:-0.000 MeanU:9.000 Iv:17.333%
 SImWind file generation completed!.
In [ ]:
//# 尝试读取风切绘图
var mesh=SimWind_Subs.Plotmesh(Sim.GetRths.Y,Sim.GetRths.Z);
mesh
In [ ]:
using OpenWECD.IO.math;

var t=Sim.GetRths.Wind1.TTurbSims;
var windspeedu = Sim.GetRths.Wind1.Velocitys.GetElement<float>(':',7,7,0);
var speeds=SimWind_Subs.Plot(t,windspeedu);
//speeds;

var plt1=new ScottPlot.Plot();
var s=plt1.Add.Scatter(t, windspeedu);
s.MarkerSize=0;
s.LineWidth=0.5f;
plt1.XLabel("Times[s]");
plt1.YLabel("Wind speed[m/s]");
plt1.Title("Wind Speed");
plt1
In [ ]:
OpenWECD.IO.IO.Otherhelper.Tostring(windspeedu.Select(x=>(double)x).ToArray())
In [ ]:
var t=Sim.GetRths.Wind1.TTurbSims;
var windspeedv = Sim.GetRths.Wind1.Velocitys.GetElement<float>(':',7,6,1);
var speeds=SimWind_Subs.Plot(t,windspeedv);
//speeds;

var plt1=new ScottPlot.Plot();
var s=plt1.Add.Scatter(t, windspeedv);
s.MarkerSize=0;
s.LineWidth=0.5f;
plt1.XLabel("Times[s]");
plt1.YLabel("Wind speed[m/s]");
plt1.Title("Wind Speed");
plt1
In [ ]:
var t=Sim.GetRths.Wind1.TTurbSims;
var windspeedw= Sim.GetRths.Wind1.Velocitys.GetElement<float>(':',7,6,2);
var speeds=SimWind_Subs.Plot(t,windspeedw);
//speeds;

var plt1=new ScottPlot.Plot();
var s=plt1.Add.Scatter(t, windspeedw);
s.MarkerSize=0;
s.LineWidth=0.5f;
plt1.XLabel("Times[s]");
plt1.YLabel("Wind speed[m/s]");
plt1.Title("Wind Speed");
plt1
In [ ]:
var spec = SimWind_Subs.Semilogx(Sim.GetRths.f.Map(x=>(float)x),Sim.GetRths.Su);
SimWind_Subs.Semilogx(ref spec,Sim.GetRths.f,Sim.GetRths.Sv.Map(x=>(double)x));
SimWind_Subs.Semilogx(ref spec,Sim.GetRths.f,Sim.GetRths.Sw.Map(x=>(double)x));
spec
In [ ]:
using MathNet.Numerics.LinearAlgebra;
var u1 = MathHelper.fft(LinearAlgebraHelper.fzeros(windspeedu).ToComplex32()).Map(x=>x.Magnitude);
var spec1 = SimWind_Subs.Semilogx(Sim.GetRths.f.Map(x=>(float)x)[1,-1],u1[1,-1]);
SimWind_Subs.Semilogx(ref spec1,Sim.GetRths.f[1,-1],Sim.GetRths.Su.Map(x=>(double)x));
spec1
In [ ]:
var v1 = MathHelper.fft(LinearAlgebraHelper.fzeros(windspeedv).ToComplex32()).Map(x=>x.Magnitude);
var spec2 = SimWind_Subs.Semilogx(Sim.GetRths.f.Map(x=>(float)x)[1,-1],v1[1,-1]);
SimWind_Subs.Semilogx(ref spec2,Sim.GetRths.f[1,-1],Sim.GetRths.Sv.Map(x=>(double)x));
spec2
In [ ]:
var w1 = MathHelper.fft(LinearAlgebraHelper.fzeros(windspeedw).ToComplex32()).Map(x=>x.Magnitude);
var spec3 = SimWind_Subs.Semilogx(Sim.GetRths.f.Map(x=>(float)x)[1,-1],w1[1,-1]);
SimWind_Subs.Semilogx(ref spec3,Sim.GetRths.f[1,-1],Sim.GetRths.Sw.Map(x=>(double)x));
spec3

1.1.2 OpenWECD.WindL.SimWind.SpectralEquations.DelSpectralFull¶

In [ ]:
//# 实现方法同 OpenWECD.WindL.SimWind.SpectralEquations.DelSpectralThin

2. HawtC¶

2.1.1 OpenWECD.HawtC.HastPro.INIMainC¶

In [ ]:
// 运行代码前请先安装OpenWECD模块,初始化模型
OpenWECD.HawtC.Hast_Pro.INIMainC_(@"G:\2026\OpenhastV7\demo\openhast_x64\IEA_15MW_onshore\\Debug.hst")
G:\2026\OpenhastV7\demo\openhast_x64\IEA_15MW_onshore\\Debug.hst
Debug 调试模式 develop by 赵子祯 Debug 调试模式 develop by 赵子祯 Debug 调试模式 develop by 赵子祯
     ------------------------------------------------------------------------------------------     
     !       000                                00     00    00  0000000   00000  000000      !     
     !     0     0    000      000      00000   00    00    00  0        0       00     00    !     
     !     0     0  0     0  0     0   0     0  00   0000   00  000000  0       00      00    !     
     !      000    0      0 0       0 0     0    0  0   0  0   0        0       00     00     !     
     !             0 0000   0  000    0     0     00     00    0000000   00000  0000000       !     
     !             0        0     0                                                           !     
     !            0          0000                                                             !     
     !                                                                                        !     
 !                    Copyright (c) HawtC.Team.ZZZ,赵子祯 licensed under GPL v3 .                   !  
     !                                                                                        !     
     !   Copyright (c)  Key Laboratory of Jiangsu province High-Tech design of wind turbine   !     
     !                                                                                        !     
******                 Running Microsoft.DotNet.Interactive.App (vdebug.test  2024-12)                  ******
     ------------------------------------------------------------------------------------------     
Debug 调试模式 develop by 赵子祯 Debug 调试模式 develop by 赵子祯 Debug 调试模式 develop by 赵子祯
       OpenWECD.Microsoft.DotNet.Interactive.App Lisenced To:超级用户 - Copyright (c)ZHAO ZIZHEN        
Debug 调试模式 develop by 赵子祯 Debug 调试模式 develop by 赵子祯 Debug 调试模式 develop by 赵子祯
 SIMD_by赵子祯
------------------------------------------------------------------------------------
! The Analysis: Openhast 15MW_Land_BaseLine_LinearBlade_NTM11.0
------------------------------------------------------------------------------------
Read File!
 欢迎使用OpenWECD.ElastioL模块!Copyright (c) HawtC.Team.ZZZ, licensed under GPL
Running AeroL.DynamicStall 
 Run Staedy Modol to Solve!
Running AeroL.Load 
 Run BEMT.UnSteadyBEMT Modol to Solve!
 欢迎使用OpenWECD.WindL模块!Copyright (c) HawtC.Team.ZZZ, licensed under GPL
 Generate Steady Wind. Speed:10. PL:0. RefHt:151 
 欢迎使用OpenWECD.ControlL模块!Copyright (c) HawtC.Team.ZZZ, licensed under GPL
 BLADED ControL DLL DISCON Load Sucessful!
 欢迎使用OpenWECD.ElastioL模块!
 Use Runge_Kutta_4t
  HawtC.dll 初始化成功!等待操作
初始化成功!

2.1.2 OpenWECD.HawtC.HastPro.CloseC¶

In [ ]:
// 关闭运行,输出结果
OpenWECD.HawtC.Hast_Pro.CloseC_(0)

2.1.3 OpenWECD.HawtC.Hast_INI.HST_modulerths[turbinenum]¶

In [ ]:
public class StaedyModel11: OpenWECD.AeroL.I_ALCalDynamicStall
    {
        private OpenWECD.AeroL. Airfoil1 Airfoil;
        public StaedyModel11(OpenWECD.AeroL. AER_ParameterType p)
        {
            LogHelper.WriteLog("Run Staedy Modol to Solve!", title: "[success]", leval: 1);
            Airfoil = p.Airfoil;
        }

        public (double cl, double cd, double cm) LiftDragCoeffInterp(double t, double dt, int nstep, int FoilNum, double AOA, ref OpenWECD.AeroL. T_ALAeroBladeElement bld, OpenWECD.AeroL. T_ALAeroBladeElement srths)
        {
            bld.DCl = Airfoil[FoilNum].IterCl.Interpolate(AOA);
            bld.DCd = Airfoil[FoilNum].IterCd.Interpolate(AOA);
            bld.DCm = Airfoil[FoilNum].IterCm.Interpolate(AOA);
            Console.WriteLine($"cl:{bld.DCl},cd:{bld.DCd},cm:{bld.DCm}");
            return (bld.DCl, bld.DCd, bld.DCm);
        }
        public (double cl, double cd, double cm) LiftDragCoeffInterp(double t, double dt, int nstep, int FoilNum, double AOA)
        {
            var DCl = Airfoil[FoilNum].IterCl.Interpolate(AOA);
            var DCd = Airfoil[FoilNum].IterCd.Interpolate(AOA);
            var DCm = Airfoil[FoilNum].IterCm.Interpolate(AOA);
            Console.WriteLine($"cl:{DCl},cd:{DCd},cm:{DCm}");
            return (DCl, DCd, DCm);
        }
    }
In [ ]:
//这是一个高级接口,只适用与C# 语言当中,其中保存了运行过程当中每一个步长的所有数据集合,为了方便用户进行后续的数据处理.
OpenWECD.HawtC.Hast_INI.HST_modulerths[0].AER_rths.CallDynamicStall=new StaedyModel11(OpenWECD.HawtC.Hast_INI.HST_modulepara[0].AER_p);
 Run Staedy Modol to Solve!

3. MBD¶

3.1 模型时域仿真迭代控制相关¶

3.1.1 OpenWECD.HawtC.DLL.CAndC_DLL.Update¶

In [ ]:
// 必须先初始化模型
OpenWECD.HawtC.Hast_Pro.INIMainC_(@"G:\2026\OpenhastV7\demo\openhast_x64\IEA_15MW_onshore\\Debug用.hst")
G:\2026\OpenhastV7\demo\openhast_x64\IEA_15MW_onshore\\Debug用.hst
------------------------------------------------------------------------------------
! The Analysis: Openhast 15MW_Land_BaseLine_LinearBlade_NTM11.0
------------------------------------------------------------------------------------
Read File!
 欢迎使用OpenWECD.ElastioL模块!Copyright (c) HawtC.Team.ZZZ, licensed under GPL
Running AeroL.DynamicStall 
 Run Staedy Modol to Solve!
Running AeroL.Load 
 Run BEMT.UnSteadyBEMT Modol to Solve!
 欢迎使用OpenWECD.WindL模块!Copyright (c) HawtC.Team.ZZZ, licensed under GPL
 Generate Steady Wind. Speed:10. PL:0. RefHt:151 
 欢迎使用OpenWECD.ControlL模块!Copyright (c) HawtC.Team.ZZZ, licensed under GPL
 BLADED ControL DLL DISCON Load Sucessful!
 欢迎使用OpenWECD.ElastioL模块!
 Use Runge_Kutta_4t
  HawtC.dll 初始化成功!等待操作
初始化成功!
In [ ]:
//# 更新仿真
for (int i = 0; i < 1000; i++)
{
    OpenWECD.HawtC.DLL.CAndC_DLL.Update(0,i,0.08);
}
 Time Elapsed: 45 to 300 secs. final time left: 02 mins 51 secs.            

3.1.2 OpenWECD.HawtC.DLL.CAndC_DLL.Solve¶

In [ ]:
OpenWECD.HawtC.DLL.CAndC_DLL.Solve(0);//对风力机0进行求解

3.1.3 OpenWECD.HawtC.DLL.CAndC_DLL.GetTimesSpan¶

In [ ]:
OpenWECD.HawtC.DLL.CAndC_DLL.GetTimesSpan(0);
var plt=OpenWECD.WindL.SimWind.SimWind_Subs.Plot(OpenWECD.HawtC.DLL.CAndC_DLL.GetTimesSpan(0));
plt

3.1.4 OpenWECD.HawtC.DLL.CAndC_DLL.GetTimesN¶

In [ ]:
OpenWECD.HawtC.DLL.CAndC_DLL.GetTimesN(0)

3.2 塔底力获取相关¶

3.2.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetTowerBaseFx¶

In [ ]:
//# 必须在更新update之后才能进行计算
In [ ]:
//# 更新仿真
for (int i = 0; i < 10; i++)
{
    OpenWECD.HawtC.DLL.CAndC_DLL.Update(0,i,0.08);
    Console.WriteLine(OpenWECD.HawtC.DLL.CAndC_DLL.GetTowerBaseFx(0));
}
299.20050048828125
-1012.576904296875
653.5311889648438
2173.321044921875
2473.79541015625
1444.2440185546875
86.00758361816406
-424.6497802734375
218.80636596679688
1262.8392333984375

3.2.2 OpenWECD.HawtC.DLL.CAndC_DLL.GetTowerBaseFy¶

In [ ]:
// 用法同 OpenWECD.HawtC.DLL.CAndC_DLL.GetTowerBaseFx

3.2.3 OpenWECD.HawtC.DLL.CAndC_DLL.GetTowerBaseFz¶

In [ ]:
// 用法同 OpenWECD.HawtC.DLL.CAndC_DLL.GetTowerBaseFx

3.2.4 OpenWECD.HawtC.DLL.CAndC_DLL.GetTowerBaseMx¶

In [ ]:
// 用法同 OpenWECD.HawtC.DLL.CAndC_DLL.GetTowerBaseFx

3.2.5 OpenWECD.HawtC.DLL.CAndC_DLL.GetTowerBaseMy¶

In [ ]:
// 用法同 OpenWECD.HawtC.DLL.CAndC_DLL.GetTowerBaseFx

3.2.6 OpenWECD.HawtC.DLL.CAndC_DLL.GetTowerBaseMz¶

In [ ]:
// 用法同 OpenWECD.HawtC.DLL.CAndC_DLL.GetTowerBaseFx

3.3 塔架节点力获取相关¶

3.3.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetLocalTowerFxLoads¶

In [ ]:
// public static double GetLocalTowerFxLoads(int turbinenum, int J)//风机编号和节点编号
//# 更新仿真
for (int i = 0; i < 10; i++)
{
    OpenWECD.HawtC.DLL.CAndC_DLL.Update(0,i,0.08);
    Console.WriteLine(OpenWECD.HawtC.DLL.CAndC_DLL.GetLocalTowerFxLoads(0,2));
}

3.3.2 OpenWECD.HawtC.DLL.CAndC_DLL.GetLocalTowerFyLoads¶

In [ ]:
//同 OpenWECD.HawtC.DLL.CAndC_DLL.GetLocalTowerFxLoads

3.3.3 OpenWECD.HawtC.DLL.CAndC_DLL.GetLocalTowerFzLoads¶

In [ ]:
//同 OpenWECD.HawtC.DLL.CAndC_DLL.GetLocalTowerFxLoads

3.3.4 OpenWECD.HawtC.DLL.CAndC_DLL.GetLocalTowerMxLoads¶

In [ ]:
//同 OpenWECD.HawtC.DLL.CAndC_DLL.GetLocalTowerFxLoads

3.3.5 OpenWECD.HawtC.DLL.CAndC_DLL.GetLocalTowerMyLoads¶

In [ ]:
//同 OpenWECD.HawtC.DLL.CAndC_DLL.GetLocalTowerFxLoads

3.3.6 OpenWECD.HawtC.DLL.CAndC_DLL.GetLocalTowerMzLoads¶

In [ ]:
//同 OpenWECD.HawtC.DLL.CAndC_DLL.GetLocalTowerFxLoads

3.4 叶片叶根力获取相关¶

3.4.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeRootFx¶

In [ ]:
// public static double GetLocalTowerFxLoads(int turbinenum, int J)//风机编号和节点编号
//# 更新仿真
for (int i = 0; i < 10; i++)
{
    OpenWECD.HawtC.DLL.CAndC_DLL.Update(0,i,0.08);
    Console.WriteLine("叶片1:"+OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeRootFx(0,0));
    Console.WriteLine("叶片2:"+OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeRootFx(0,1));
    Console.WriteLine("叶片3:"+OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeRootFx(0,2));
}
叶片1:75.6799087524414
叶片2:194.39212036132812
叶片3:138.1440887451172
叶片1:74.16834259033203
叶片2:197.24252319335938
叶片3:142.8839111328125
叶片1:71.36116790771484
叶片2:200.39877319335938
叶片3:144.98153686523438
叶片1:70.83309173583984
叶片2:202.3513641357422
叶片3:147.5386962890625
叶片1:73.45348358154297
叶片2:202.6669921875
叶片3:147.21615600585938
叶片1:76.24305725097656
叶片2:198.95755004882812
叶片3:143.69090270996094
叶片1:76.7735366821289
叶片2:191.605712890625
叶片3:138.93458557128906
叶片1:74.95237731933594
叶片2:182.5645294189453
叶片3:135.32249450683594
叶片1:72.73506927490234
叶片2:174.09812927246094
叶片3:134.02896118164062
叶片1:72.21968841552734
叶片2:168.10604858398438
叶片3:134.62229919433594

3.4.2 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeRootFy¶

In [ ]:
//同 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeRootFx

3.4.3 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeRootFz¶

In [ ]:
//同 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeRootFx

3.4.4 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeRootMx¶

In [ ]:
//同 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeRootFx

3.4.5 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeRootMy¶

In [ ]:
//同 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeRootFx

3.4.6 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeRootMz¶

In [ ]:
//同 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeRootFx

3.5 叶片节点力获取相关¶

3.5.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeLocalMx¶

In [ ]:
// public static double GetLocalTowerFxLoads(int turbinenum, int J)//风机编号和节点编号
//# 更新仿真
for (int i = 0; i < 10; i++)
{
    OpenWECD.HawtC.DLL.CAndC_DLL.Update(0,i,0.08);
    Console.WriteLine("叶片1:"+OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeLocalRootFx(0,0,4));
    Console.WriteLine("叶片2:"+OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeLocalRootFx(0,1,5));
    Console.WriteLine("叶片3:"+OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeLocalRootFx(0,2,6));
}
叶片1:-27.540935516357422
叶片2:296.0452880859375
叶片3:67.50149536132812
叶片1:-9.209775924682617
叶片2:321.6797180175781
叶片3:58.86741638183594
叶片1:-0.9608211517333984
叶片2:341.52044677734375
叶片3:48.90780258178711
叶片1:6.05915641784668
叶片2:360.6646423339844
叶片3:38.45258331298828
叶片1:11.155315399169922
叶片2:368.25286865234375
叶片3:30.01717758178711
叶片1:13.322402954101562
叶片2:361.1633605957031
叶片3:24.37307357788086
叶片1:12.830663681030273
叶片2:344.50738525390625
叶片3:20.886550903320312
叶片1:11.215400695800781
叶片2:326.6657409667969
叶片3:18.666486740112305
叶片1:10.824895858764648
叶片2:313.94647216796875
叶片3:17.36250877380371
叶片1:13.674610137939453
叶片2:307.813720703125
叶片3:17.032644271850586

3.5.2 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeLocalMy¶

In [ ]:
// 同 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeLocalMx

3.5.3 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeLocalMz¶

In [ ]:
// 同 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeLocalMx

3.5.4 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeLocalFx¶

In [ ]:
// 同 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeLocalMx

3.5.5 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeLocalFy¶

In [ ]:
// 同 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeLocalMx

3.5.6 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeLocalFz¶

In [ ]:
// 同 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeLocalMx

3.6 基础位移相关¶

3.6.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurge¶

In [ ]:
// public static double GetLocalTowerFxLoads(int turbinenum, int J)//风机编号和节点编号
//# 更新仿真
for (int i = 0; i < 10; i++)
{
    OpenWECD.HawtC.DLL.CAndC_DLL.Update(0,i,0.08);
    Console.WriteLine(OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformHeave(0));
}
0
0
0
0
0
0
0
0
0
0

3.6.2 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSway¶

In [ ]:
// 同 3.6.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurge

3.6.3 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformHeave¶

In [ ]:
// 同 3.6.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurge

3.6.4 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformRoll¶

In [ ]:
// 同 3.6.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurge

3.6.5 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformPitch¶

In [ ]:
// 同 3.6.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurge

3.6.6 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformYaw¶

In [ ]:
// 同 3.6.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurge

3.7 平台速度相关¶

3.7.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurgeVel¶

In [ ]:
// public static double GetLocalTowerFxLoads(int turbinenum, int J)//风机编号和节点编号
//# 更新仿真
for (int i = 0; i < 10; i++)
{
    OpenWECD.HawtC.DLL.CAndC_DLL.Update(0,i,0.08);
    Console.WriteLine(OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformHeaveVel(0));
}
0
0
0
0
0
0
0
0
0
0

3.7.2 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSwayVel¶

In [ ]:
// 同 3.7.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurgeVel

3.7.3 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformHeaveVel¶

In [ ]:
// 同 3.7.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurgeVel

3.7.4 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformRollVel¶

In [ ]:
// 同 3.7.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurgeVel

3.7.5 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformPitchVel¶

In [ ]:
// 同 3.7.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurgeVel

3.7.6 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformYawVel¶

In [ ]:
// 同 3.7.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurgeVel

3.8 平台加速度相关¶

3.8.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurgeAcc¶

In [ ]:
// public static double GetLocalTowerFxLoads(int turbinenum, int J)//风机编号和节点编号
//# 更新仿真
for (int i = 0; i < 10; i++)
{
    OpenWECD.HawtC.DLL.CAndC_DLL.Update(0,i,0.08);
    Console.WriteLine(OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurgeAcc(0));
}
0
0
0
0
0
0
0
0
0
0

3.8.2 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSwayAcc¶

In [ ]:
// 同 3.8.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurgeAcc

3.8.3 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformHeaveAcc¶

In [ ]:
// 同 3.8.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurgeAcc

3.8.4 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformRollAcc¶

In [ ]:
// 同 3.8.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurgeAcc

3.8.5 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformPitchAcc¶

In [ ]:
// 同 3.8.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurgeAcc

3.8.6 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformYawAcc¶

In [ ]:
// 同 3.8.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurgeAcc

4. ControL¶

OpenWECD.ControlL.IControLler¶

In [ ]:
using OpenWECD.ControlL;
using OpenWECD.MBD;
public class ControLUser:OpenWECD.ControlL.IControLler
{
    public void ICall_Controller(double t, int i_t,double dt, CON_ParameterType p, MBD_OutputType y, ref CON_RtHndSideType rths)
    {
        Console.WriteLine("用户自定义控制器");
    }
    public void FreeDLL()
    {
     Console.WriteLine("用户自定义控制器");
    }
}
In [ ]:
//# 首先INIMainC_初始化模型,不要Update或者Solver然后在高级接口绑定
OpenWECD.ControlL.IControLler user=new ControLUser();
var s=OpenWECD.HawtC.Hast_INI.HST_modulerths[0];
s.CON_rths.ICallControLler=user;
OpenWECD.HawtC.Hast_INI.HST_modulerths[0]=s;
for (int i = 0; i < 1; i++)
{
    OpenWECD.HawtC.DLL.CAndC_DLL.Update(0,i,0.08);
    //Console.WriteLine(OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurgeAcc(0));
}
In [ ]:
for (int i = 0; i < 100; i++)
{
    OpenWECD.HawtC.DLL.CAndC_DLL.Update(0,i,0.08);
    //Console.WriteLine(OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurgeAcc(0));
}
In [ ]:
OpenWECD.HawtC.Hast_INI.HST_modulerths[0].CON_rths.ICallControLler.FreeDLL()
用户自定义风谱模型与相干函数模型案例

5. AeroL¶