# 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;
Loading extensions from `C:\Users\123\.nuget\packages\skiasharp\2.88.9\interactive-extensions\dotnet\SkiaSharp.DotNet.Interactive.dll`
// 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);
//# 用于Thin模式下的函数指针(c# 称为委托,是一种类型安全的指针),这是一个谱指针
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赵子祯
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 |
| GenT | Thin |
| SpecType | user_SelfSpectralType |
| FileType | ALL |
| Component | [ 1, 2, 3 ] |
| stdU | 2.6 |
| stdV | 2.2 |
| stdW | 1.56 |
| Lux | 340.2 |
| Lvx | 113.4 |
| Lwx | 27.72 |
| Coh | IEC_KaimanCoh |
| Cuy_1 | 7 |
| Cuz_1 | 10 |
| Cvy_1 | 7 |
| Cvz_1 | 10 |
| Cwy_1 | 6.5 |
| Cwz_1 | 3 |
| Lc | 340.2 |
| Profile | power |
| 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 |
//# 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);
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!.
//# 尝试读取风切绘图
var mesh=SimWind_Subs.Plotmesh(Sim.GetRths.Y,Sim.GetRths.Z);
mesh
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
OpenWECD.IO.IO.Otherhelper.Tostring(windspeedu.Select(x=>(double)x).ToArray())
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
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
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
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
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
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
//# 实现方法同 OpenWECD.WindL.SimWind.SpectralEquations.DelSpectralThin
// 运行代码前请先安装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 初始化成功!等待操作
初始化成功!
// 关闭运行,输出结果
OpenWECD.HawtC.Hast_Pro.CloseC_(0)
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);
}
}
//这是一个高级接口,只适用与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!
// 必须先初始化模型
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 初始化成功!等待操作 初始化成功!
//# 更新仿真
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.
OpenWECD.HawtC.DLL.CAndC_DLL.Solve(0);//对风力机0进行求解
OpenWECD.HawtC.DLL.CAndC_DLL.GetTimesSpan(0);
var plt=OpenWECD.WindL.SimWind.SimWind_Subs.Plot(OpenWECD.HawtC.DLL.CAndC_DLL.GetTimesSpan(0));
plt
OpenWECD.HawtC.DLL.CAndC_DLL.GetTimesN(0)
//# 必须在更新update之后才能进行计算
//# 更新仿真
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
// 用法同 OpenWECD.HawtC.DLL.CAndC_DLL.GetTowerBaseFx
// 用法同 OpenWECD.HawtC.DLL.CAndC_DLL.GetTowerBaseFx
// 用法同 OpenWECD.HawtC.DLL.CAndC_DLL.GetTowerBaseFx
// 用法同 OpenWECD.HawtC.DLL.CAndC_DLL.GetTowerBaseFx
// 用法同 OpenWECD.HawtC.DLL.CAndC_DLL.GetTowerBaseFx
// 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));
}
//同 OpenWECD.HawtC.DLL.CAndC_DLL.GetLocalTowerFxLoads
//同 OpenWECD.HawtC.DLL.CAndC_DLL.GetLocalTowerFxLoads
//同 OpenWECD.HawtC.DLL.CAndC_DLL.GetLocalTowerFxLoads
//同 OpenWECD.HawtC.DLL.CAndC_DLL.GetLocalTowerFxLoads
//同 OpenWECD.HawtC.DLL.CAndC_DLL.GetLocalTowerFxLoads
// 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
//同 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeRootFx
//同 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeRootFx
//同 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeRootFx
//同 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeRootFx
//同 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeRootFx
// 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
// 同 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeLocalMx
// 同 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeLocalMx
// 同 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeLocalMx
// 同 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeLocalMx
// 同 OpenWECD.HawtC.DLL.CAndC_DLL.GetBladeLocalMx
// 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.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurge
// 同 3.6.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurge
// 同 3.6.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurge
// 同 3.6.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurge
// 同 3.6.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurge
// 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.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurgeVel
// 同 3.7.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurgeVel
// 同 3.7.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurgeVel
// 同 3.7.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurgeVel
// 同 3.7.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurgeVel
// 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.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurgeAcc
// 同 3.8.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurgeAcc
// 同 3.8.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurgeAcc
// 同 3.8.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurgeAcc
// 同 3.8.1 OpenWECD.HawtC.DLL.CAndC_DLL.GetPlatformSurgeAcc
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("用户自定义控制器");
}
}
//# 首先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));
}
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));
}
OpenWECD.HawtC.Hast_INI.HST_modulerths[0].CON_rths.ICallControLler.FreeDLL()
用户自定义风谱模型与相干函数模型案例