Dymola使用C语言间接调用含第三方库Python文件流程.pdf

Dymola使用C语言间接调用含第三方库Python文件流程.pdf

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Dymola使⽤C语⾔间接调⽤含第三⽅库Python⽂件流程 Dymola函数中调⽤python ⼀、语⾔配置介绍 Dymola Dymola 2022 trail version C/C++与python见上⼀篇 ⼆、Dymola simulation配置 Dymola中simulation选择之前配置好的Visual Studio C/C++编译器,务必选择使⽤DDE sever,如下图 三、简单案例测试 ⾸先新建⽂件夹UserModels,在Dymola中新建packge,命名为UserModels放⼊UserModels⽂件夹中。在UserModels包中新建新 packge命名为UserFunctions,并在UserFunctions中新建函数callpython⽤于测试python函数调⽤,同时在UserModels包中新建 CtoPython模型测试函数调⽤。结构如下图所⽰ 注 此处如果直接函数右键call funciton测试,不会调⽤DDE sever,会导致调⽤C/C++时默认采⽤x86环境,与64位python冲 突。 之后在UserModels⽂件夹中新建Resource⽂件夹,内部保存的是需要调⽤的C⽂件squarenum.c与python⽂件test_python.py。选择 打开UserModels包并将⼯作 ⽬录转移到UserModels包,新建的callpython函数与CtoPython模型代码如下 package UserModels package UserFunctions function callpython input Real input_ num; output Real output_ num; external C output_ num squarenum(input_ num) annotation(IncludeDirectory modelica:// UserModels.Resource, Include #include \squarenum.c\) ; end callpython; end UserFunctions; model CtoPython Real x(start 1.0), y ; equation der(x) 1; y UserFunctions.callpython(x) ; annotation (Icon(coordinateSystem(preserveAspectRatio false)), Diagram( coordinateSystem(preserveAspectRatio false))) ; end CtoPython; end UserModels; ′ 可以看到,CtoPython中f (x) = 1,即表⽰x从 1开始递增,y则是通过c引⽤的python中的numpy的square函数等于x的平⽅。需要注 意的是,引⽤外部C⽂件路径如下表⽰ IncludeDirectory= “modelica://UserModels.Resource” 其中modelica://表⽰刚刚打开并重新定位的程序运⾏路径,此处需要填写UserModels.Resource⽽不能只写Resource,这是modelica 相对位置引⽤的规则。 接下来是C⽂件squarenum.c: #include Python.h #include stdio.h double squarenum(double input_ num){ double output_ num 0; Py_ Initialize() ; PyObject* pModule NULL; PyObject* pFunc NULL; PyObject* args Py_ BuildValue((d), input_ num) ; // 此处注意函数路径 !!!! pModule PyImport_ ImportModule(Resource.test_ python) ; if (pModule ! NULL){

文档评论(0)

151****0181 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档