Qahse(HawtC)

加载

HawtC.APIL 与 动态链接库高阶接口

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))