HawtC.DLL 模块提供AQWA、Matlab、python、C++、C# 接口
1、前言:
HawtC 为了与商业和开源软件耦合,同时实现更多基础的支持类型,将基础的有限元方法与多体动力学方法结合,给出了dLL 接口,以方便AQWA和ANSYS以及matlab的耦合,下面我给出了一个Python调用HawtC_user dll的案例,由于是c 接口,c++与fortran也可以调用:
2、HawtC.API 开发文档:
文档:http://www.hawtc.cn/data/HawtC.DLL_interface.html
对应程序:http://www.hawtc.cn/data/HawtC.DLL_V1.0.0_interface.ipynb
| Dll 程序包 | 下载地址 | 接口dll程序包 |
|---|---|---|
| Python | http://www.hawtc.cn/data/HawtC_user_V1.0.0_.py | http://www.hawtc.cn/data/HawtC_User_C.dll |
| Matlab,AQWA,C,C++ 接口程序包 | 请参考python包自行开发,或联系我们提供支持 | http://www.hawtc.cn/data/HawtC_User_C.dll |
| AQWA 接口程序包 | 毕业太忙,以后需要再说,参考python开发 | http://www.hawtc.cn/data/HawtC_User_C.dll |
3、版本发布
正式版 V2.2.400(与HawtC主程序一致):
1、提供了AQWA调用的塔底力接口。
2、全面支持了采用外部语言调用HawtC的全部功能,MoptL 除外。
3、全新的C接口样式和开发接口,及其方便的实现自己的功能。
4、HawtC与HawtC.dll 分离了多体动力学耦合求解器,可以实现单步求解。
5、HawtC与HawtC.dll 增加了Turbinenum 参数,为了HawtC.Farm 提供了开发接口和多线程计算接口。
6、修复了Python当中调用dll的软件包错误,对所有函数进行了功能验证
4、使用案例
4.1 python 调用案例
import HawtC
MBD = HawtC(r'G:\2026\OpenhastV7\build\\HawtC_User_C.MBD')
HaetCModel=MBD.HawtCModel(MBD.MBD)
MBD=MBD.MBD(MBD.MBD)
Test=MBD.Test(MBD.MBD)
p1=HaetCModel.INIMain(r"G:\2026\OpenhastV7\demo\openhast_x64\IEA_15MW_onshore\Debug.hst")
result = Test.GetAddc(2,3)
print(f"Result: {result}")
# 定义 Addc 委托的 Python 函数
def add_func(a, b):
print(f"这是Python 加法: {a} + {b}")
return a + b
Test.SetAddc(add_func)
# 调用 C# 中的 Addc 委托
# result = addc_delegate(3.0, 4.0)
# print(f" {result}")
result = Test.GetAddc(2,6)
print(f" {result}")
# result = MBD.GetAddc(3.0, 4.0)
# print(f"Result: {result}")
for i in range(100):
MBD.MBD_Update_step(0,i,0.03)
# print(MBD.MBD_GetTowerBaseFz(0)-MBD.MBD_GetLocalTowerFzLoads(0,0))
print(MBD.MBD_GetTowerBaseMz(0)-MBD.MBD_GetLocalTowerMzLoads(0,0))
# print(MBD.MBD_GetBladeRootFz(0,0))
# print(MBD.MBD_GetTowerBaseFx(0))
# print(MBD.MBD_GetPlatformHeave(0))
# print(MBD.MBD_GetPlatformHeaveVel(0))
# print(MBD.MBD_GetPlatformHeaveAcc(0))
# print(MBD.MBD_GetTimesSpan(0))
# MBD.MBD_Solve(0)
# MBD.MBD_Update_step(0,0,0.03)
# print(MBD.MBD_GetTowerBaseFx(0))
# print(MBD.MBD_GetLocalTowerFxLoads(0,0))
# print(MBD.MBD_GetTowerBaseFy(0))
# print(MBD.MBD_GetLocalTowerFyLoads(0,0))
# print(MBD.MBD_GetTowerBaseFz(0))
# print(MBD.MBD_GetLocalTowerFzLoads(0,0))
# print(MBD.MBD_GetTowerBaseMx(0))
# print(MBD.MBD_GetLocalTowerMxLoads(0,0))
# print(MBD.MBD_GetTowerBaseMy(0))
# print(MBD.MBD_GetLocalTowerMyLoads(0,0))
# print(MBD.MBD_GetTowerBaseMz(0))
# print(MBD.MBD_GetLocalTowerMzLoads(0,0))
