小鹿数值仿真-国产冷、热、电数值模拟平台
第一章 功能介绍、使用入门
第二章 模块编辑器教程,编写自己的第一个算法模块
第三章 模块调用调用物性库计算流体物性
第四章 模块端口如何并入流体管网电网解算
第五章 软件下载、安装与新账户权限以及分享好友奖励说明
文章目录
- 小鹿数值仿真-国产冷、热、电数值模拟平台
- 前言
- 一、新建模块
- 二、模块编辑器编写算法
- 1.布局介绍
- 2.图形化搭建
- 3.通路设置
- 4.变量编辑
- 5.算法编写
- 6.运行调试
- 8.外部对接数据
- 9.成熟模块分享
- 10.在项目中使用
- 总结(下两篇预告)
前言
提示:这里可以添加本文要记录的大概内容:
------前期准备:只需要下载软件,安装,注册账户即可(下载地址:2024年10月15日23点59分59秒之前会放上链接,现在还在做最后的用户体验测试以及打包,已放出,下载链接请见上文系列目录第五章)。
------知识储备:不需要认真学过计算机,只要上过大学里程序语言设计课程,即可,忘没忘、挂没挂科都不重要。
提示:以下是本篇文章正文内容,下面案例可供参考
一、新建模块
----首先,打开软件并登录,登陆后,左下角会显示用户名称,如果此账户拥有模块编辑器的授权,继续。
----挑选分组,将鼠标悬浮在选中的组上,会弹出添加符号
----弹出名称输入,请注意,这里支持字符、数字、下划线,其他仍然会提示错误。在这里我给命名为“DIYIGEMOKUAI”。
----添加完毕后,左侧模块列表会出现亲添加的模块
![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=htps%3A%2F%2Fi-blog.csdnimg.cn%2Fdirect%2Fbadac031eb404d21b6f1e4d31dbfb322.jpeg&pos_id=img-rTFc5T6w1e4d31dbfb322.jpe----鼠标悬浮在模块上,会看到一个“文件夹”样式的按钮,点击打开模块编辑器
二、模块编辑器编写算法
1.布局介绍
----最上侧是功能页按钮,从左至右分别是绘制模块页、变量编辑、变量值、运行代码、设计函数、头文件编辑、通用设置(其实是通路设置)、保存全部。
----中间位置是画布,右侧的组件可拖拽出来,摆放到这里。
----当拖拽、摆放或者之后再次单击选中组件,右下角会显示组件的属性参数。
----最右侧三个按钮,是编译完毕模块后,可以运行调试。具体调试bug方法请看后续文章
2.图形化搭建
----图片插入,拖拽右侧组件中,最上方的Picture组件到画布中,双击框框,即可选择系统中的图片,此处选择的图片会以二级制方式保存入模块中,不必担心图片位置问题,选择图片后,图片会出现在画布中,右下角显示其长款,可手动修改尺寸并保存。
----端口摆放,鼠标从右侧组件面板中拖拽流体端口,摆放到画布中。此处我们放置两个入口两个出口。
----单击端口,右下角会显示端口的编号、前缀名称(EX0_代表出口IM0_代表入口)、端口类别、端口类型、出入口属性。
3.通路设置
----这是可选项,也可以不做,在上一篇简介文章中,提到的可智能解算流体管网,加入您写的是一个泵模块,如果想要此模块能够并网解算流量,就需要设置通路。
----点击“通用设置”菜单切换过去,将通路0的出入口分别给分配为IM0_、EX0_。
当看到表格最右侧的“启用”显示为“是”,则这两个端口就绑定为一个通路了,意思是,这俩端口是一根管的出入口(如果是电端口,意思就是一根电线的出入口)。
此时,退回“绘制模块”,点击模块图标,属性页面会显示为“阻力型”。
4.变量编辑
----点击顶部菜单进入“变量属性”页,出现变量列表。
----变量表有6列,分别是变量名称、变量类型(double、int、double[8]、int[8])、端口、所绑定的端口、中文备注、典显属性。
----端口自带变量,可以看到四个端口,两进两出,每个端口分别有7个前缀为IM0_、IM1_、EX0_、EX1_这类的变量,其中每个端口有6个double和1个8位的double数组。包含流量、压强、焓值、温度、密度、气液质量混合比、工质物性混合比。
----右下角设有一个“重点类型”的box,可以设置本模块的一个重点变量,重点类型可以选择为开关、可调、数显,填写重点变量名称后,可以在项目界面中调节。
----变量属性列表中,通道一列,是此端口是否绑定通路,若绑定了就显示通路号,从零开始,未绑定则显示N。
右下角变量框中填写自定义变量,选择位double类型,点击保存,就可以在列表中创建变量,也可以单选变量后点击删除(只能删除自己定义的变量,端口绑定和模块加粗自带的变量不能删除)。
5.算法编写
----以上文咱自定义的变量“wozuiniubi”为例,可以直接在运行代码中对“wozuiniubi”进行加减乘除运算。
点击运行代码页,咱先编写最简单的逻辑:每一个循环加1,到了1000后归零。是不是很简单,只要会基本计算逻辑地表达就可以。(记得长按ctrl+s保存哦,前几年流行编辑一下就自动保存一下,结果经常出现误操作(睡午觉流哈喇子一擦…不是我…)给删没了而且自动保存了,悲剧…,故又改回了手动保存)
----咱把设计函数也写上这个相同的代码:
----写完之后,回到模块列表,点击“编译”按钮如下图:
----如果写的算法代码有错误咋办?咱程序会提示的,精确到第几行,比如下图我故意乱写,编译时会有提示,依照提示行数找到位置修改即可。
6.运行调试
切换到变量值界面,点击右侧的运行调试,可以看到刚才咱设置的值,可以助阵逐步增加,注意“S_T“变量,这个是补偿时间,就是每一个循环的时长设置,单位毫秒,当检测到小于等于零时,默认为10ms,亦可自行设置。
8.外部对接数据
此时,外面的unity、网页、BIM等,想要对接这个变量的话,那就简单啦~~不用咱写程序,只需要将变量"wozuiniubi",加个前缀"EditTest_MOD"+“ID”,变成变量名"EditTest_MOD10_wozuiniubi",给外面就好啦,不用咱写啥数据库啥的,变量表里的都可以对接。关于这个10是怎么来的,请看下图。对接方法以及外部unity、网页、BIM的方法,请见第一章”简介“最后面。
9.成熟模块分享
----以比较成熟的管道模块为例,先上图:
----将俩端口分别设置为通路0的入口和出口:
然后上代码:
//***************************************************************
//启动物性计算库
//***************************************************************
double PI=3.1415926;
int ico,ai=0;
FUD_SETUP(FORM, ico);//启用物性库
//***************************************************************
// 定义必备的变量
//***************************************************************
double density,dl,dv,energy,entropy,cv,cp,w,wm,dp,PD,POD;
double xliq[20], xvap[20];
double temp=0;
//***************************************************************
//判断流量正负,对焓值进行赋值
//***************************************************************
IM0_FLOW = EX0_FLOW;
if( EX0_FLOW >=0 )
{
EX0_ENTHALPY = IM0_ENTHALPY;
for(ai=0;ai<ico;ai++)
{
MIX[ai]=IM0_X[ai];
EX0_X[ai]=MIX[ai];
}
FUD_PH(EX0_PRE, EX0_ENTHALPY, EX0_X, EX0_TEMP, EX0_VOLUME, dl, dv,
xliq, xvap,EX0_Q,energy, entropy, cv,cp, w);
}
else
{
IM0_ENTHALPY = EX0_ENTHALPY;
for(ai=0;ai<ico;ai++)
{
MIX[ai]=EX0_X[ai];
IM0_X[ai]=MIX[ai];
}
FUD_PH(IM0_PRE, IM0_ENTHALPY, IM0_X, IM0_TEMP, IM0_VOLUME, dl, dv,
xliq, xvap,IM0_Q,energy, entropy, cv,cp, w);
}
//***************************************************************
//计算平均参数,密度、温度、中间压力、中间温度、体积流量等
//***************************************************************
DENSITY = (IM0_VOLUME + EX0_VOLUME) / 2.0;
if(DENSITY<=0)
{
DENSITY=0.1;
}
temp=(IM0_TEMP+EX0_TEMP)/2;
MID_PRE=(IM0_PRE+EX0_PRE)/2;
FLOW_VOLUME=3600*EX0_FLOW/DENSITY;
if(PL<=0.01)
{
PL=0.01;
}
if(DN<15)
{
DN=15;
}
//***************************************************************
//计算阻力参数,带入并网函数
//***************************************************************
//PIPECV(temp,DENSITY, MIX, EX0_FLOW, DN , PL, CV,RLS, FLOW_SPD,RE);
PIPECV_Grade(IM0_TEMP,EX0_TEMP,IM0_VOLUME,EX0_VOLUME, MIX, EX0_FLOW, DN , PL, CV,RLS, FLOW_SPD,RE,10);//我们给写好的流通能力计算函数,直接调用即可
Netlink_Pipe(0, RLS, CV, DENSITY, DHIGH);//已经写好的并网函数,直接调用即可
10.在项目中使用
咱上面编译好的"DIYIGEMOKUAI",在新建的项目中就可以拖拽使用啦…
总结(下两篇预告)
建立模块的简单流程讲完了,宝子们估计也能发现用这个写算法真的不用会啥编程,只需要会加减乘除,会if/else就好了。
接下来会讲咱流体、热力学等工科专业的宝子们,如何调用这里面的工具函数。后两篇分别是"如何方便的调用物性库计算流体的的焓值温度压强密度熵值音速等等等等"、“如何将通路运用起来,让项目自动计算流量和压力节点”。