首页/文章/ 详情

VS编译OpenSees和OpenSeespy(实现MPCO Recorder)

3月前浏览3877

     问题提出

      1. opensees可以使用STKO作为后处理软件进行后处理可视化和数据提取,它主要依靠MPCO记录命令

      2. B站up,opensees抗震笔记,提供了tcl的视频教程。https://www.bilibili.com/video/BV1LV4y1574B

      3. 我的代码是openseespy写的,发现无法使用MPCO记录。

    1. 尝试解决

      1. 查看源码,发现openseespy包含MPCO记录,应该是编译问题。

      2. cmake编译源码,opensees的tcl版本可以使用MPCO记录,openseespy直接无法启动。

      3. 使用vs编译,opensees和tcl和python都可以启动,但是都无法使用MPCO记录。

    2. 原因探究

      1. 根据https://asdeasoft.net/forum/viewtopic.php?t=2084和https://github.com/OpenSees/OpenSees/pull/601

      2. MPCO工作依靠HDF5,HDF5包括进opensees有两种方式,一种是直接通过静态链接编译,一种是通过动态链接编译。cmake编译方式就是通过静态链接,但是vs编译默认是动态链接。

      3. opensees官方推荐cmake编译,所以他默认你是静态链接,Frank为MPCO记录增加了_HDF5静态链接的检查。因此只需要可以在注释掉静态链接的检查,这样的话通过dll动态链接使用HdF5,不是把HDF5直接编译进去,然后选择vs编译即可。HDF5的dll应该使用的是STKO软件自带的,应该是1.12.0。

    3. 修改源代码——去掉编译检查

      1. 修改方法

    注释:#ifndef _HDF5 和 #endif // !_HDF5

    原本代码

    #ifdef _HDF5

    void* OPS_MPCORecorder();

    #endif

    修改后代码

    // #ifdef _HDF5

    void* OPS_MPCORecorder();

    // #endif

          b. 修改以下6处代码

    OpenSees/SRC/interpreter/OpenSeesOutputCommands.cpp

    OpenSees/SRC/recorder/TclRecorderCommands.cpp

    OpenSees/SRC/actor/objectBroker/FEM_ObjectBrokerAllClasses.cpp

    4. 编译环境

      1. 编译器版本为vs2019,和oneapi版本为w_BaseKit_p_2023.1.0.47256.exe       和w_HPCKit_p_2023.1.0.46357.exe,都是默认安装

      2. 安装   ActiveTcl-8.6.11或者8.6.12安装路径必须c:\Program Files\tcl

      3. python,自己电脑conda对应的openseespy环境,比如我的D:\miniconda3\envs\ops11,以下都是拿这个举例,注意换成自己的路径

    5.编译设置

      1. tcl版本,确认oneapi路径正确,即opensees项目——链接器——附加库目录:是否包含自己电脑oneapi路径

    默认是以下路径

    C:\Program Files (x86)\Intel\oneAPI\compiler\latest\windows\compiler\lib\intel64_win

         b. python版本,添加本机python路径和oneapi路径,oneapi路径同tcl

      1) 设置oneapi路径同tcl中

      2) 添加本机的D:\miniconda3\envs\ops11\include       进入  c/c++常规 的附加包含目录

      3) 添加本机的D:\miniconda3\envs\ops11\libs       进入 链接器 的常规 附加库目录

      4) 确认 链接器 的输入 附加依赖项是python311.lib或者python310.lib(与自己的python环境匹配)

      6. 测试运行  

      1. 确保安装SKTO,并且加入环境变量,需要重启电脑。

      2. tcl直接测试

      3. python需要生成的opensees.pyd和skto的hdf5.dll,复 制到D:\miniconda3\envs\ops11\Lib\site-packages\openseespywin\路径,替换原有的opensees.pyd文件。

来源:xinchenxuan828
ACTHPCpythonUMOpenseesSTKO
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-01-18
最近编辑:3月前
OpenSEES抗震笔记
博士 Angus.Zhang
获赞 51粉丝 77文章 46课程 1
点赞
收藏
未登录
还没有评论

课程
培训
服务
行家

VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈