徽标支持包
LOGOS 是一个用于工业三维建模和多学科工程分析的软件包。 与 AnyMath 的集成是通过徽标"平台"模块中的 用户功能(PF)机制组织的,该模块旨在连接第三方计算模块。
|
与徽标集成需要安装并运行*AnyMath子系统。整合*。 在开始集成之前,请确保客户端程序正在运行并连接到当前的 AnyMath 会话。 有关详细的安装和配置说明,请参阅文章 恩吉。综合服务. |
通过在LOGOS集成求解器的上下文中注册用Python编写的用户定义函数来执行集成。 这些函数通过特定端口通过UDP协议从/向 AnyMath 接收和发送数据。:
-
* 端口6848*--用于接收来自*AnyMath*到标志的信号;
-
* 端口6849*--用于将信号从徽标传输到*AnyMath*。
这种交互使得组织cosimulation成为可能,这是一种联合计算,两个系统都可以实时交换数据。 这为:
-
在标志强度计算中使用专门的*AnyMath*模型;
-
在每个集成步骤在系统之间传输计算参数;
-
创建复杂的模型,结合来自不同领域的物理.
徽标中的自定义功能
|
用户函数(PF)是计算模块在任务计算过程中调用的回调函数。 PF机制允许您更改或补充现有计算模块的行为,而无需修改它。 PF连接器是一个接口(指向函数的指针),计算模块通过该接口调用具有预定义参数集的用户函数。 在任务初始化期间,接口模块从PF加载库,初始化连接器,并在正确的计算时刻调用PF。 每个PF都有自己的API参数集和返回值。 创建或启用自定义功能时,PF界面可以自动显示在 徽标平台 编辑器中。 |
PF操作的一般方案:
-
计算模块(例如,LOGOS-Heat 或 LOGOS-Strength)包含内置的 PF连接器 ,用户可以将其功能连接到其中。
-
连接器向PF传输电流计算步骤所需的所有数据(例如,温度、电压、密度等)。).
-
PF执行用户逻辑(例如,重新计算导热系数或计算破坏准则)。
-
结果被返回到计算模块,在那里它们被用于建模过程。
|
为了使PF正常工作,它的接口必须与它所连接的连接器的接口相匹配。 |
|
下面给出了LOGOS计算模块中的PF列表。 有关PF徽标的更多信息,请参阅官方徽标文档。 徽标计算模块的内置用户功能
列出的用户函数内置于主要的LOGOS计算模块中,可以在Python中开发自己的PF或与 AnyMath 集成时用作模板。 |
Cosimulation模块
Cosimulation模块 cosimulation.py -这是Python中的一个辅助模块,通过UDP协议提供 AnyMath 和LOGOS之间的交换。 该模块允许您根据以下逻辑实时组织系统之间的双向信号交换:
-
创建两个UDP套接字:接收(端口6848)和传输(端口6849);
-
模块初始化连接一次,并存储*AnyMath模型的时间*;
-
自定义徽标函数调用
cosimulate(时间,信号)并从*AnyMath*获取值列表。
要工作,放置就足够了 cosimulation.py 在自定义函数旁边,并在代码开头导入它:
import cosimulation # или: from cosimulation import engee_sim
|
下面是一个完整的示例文件 在文件末尾创建一个全局对象。 文件内容
|
在自定义函数中使用
要将徽标中的计算与 AnyMath 模型链接,您需要连接模块 cosimulation.py 并调用他的方法 cosimulate() 户功能(PF)内。
这将允许您在每个步骤交换信号:从徽标发送数据到 AnyMath 并从那里接收可用于计算的值。
-
在 平台 模块中打开您的自定义功能。
-
在函数的最开始,添加导入行:
import cosimulation # или: from cosimulation import engee_sim -
然后添加一个挑战
cosimulate()与 AnyMath 交换数据。
该功能的现成示例如下所示。:
import cosimulation # Подключаем модуль косимуляции
def erosion_user(nsh, nip, ncmr, nhv, Cmr, strainVelF, strain, stress,
pu, eu, epsp, rou, divU, ts, loc, tt, time, eraseFlag):
# Отправляем в {docs_engee} три сигнала: давление, энергию и плотность
signals_from_engee = cosimulation.engee_sim.cosimulate(time, [pu, eu, rou])
# Если данных нет ({docs_engee} еще не ответил) — возвращаем все без изменений
if not signals_from_engee:
return nsh, nip, ncmr, nhv, Cmr, strainVelF, strain, stress, \
pu, eu, epsp, rou, divU, ts, loc, tt, time, eraseFlag
# Извлекаем сигналы, полученные из {docs_engee}
strain_from_engee = signals_from_engee[0] # предельная пластическая деформация
epsp_from_engee = signals_from_engee[1] # текущая пластическая деформация
# Критерий разрушения: если epsp >= strain, элемент считается разрушенным
if epsp_from_engee >= strain_from_engee:
eraseFlag = True
#将更新的值返回到LOGOS计算
返回nsh,nip,ncmr,nhv,Cmr,strainVelF,应变,应力, \
pu,eu,epsp_from_engee,rou,divU,ts,loc,tt,time,eraseFlag
它是如何工作的:
-
模块导入--导入时
cosimulation.py会自动创建和配置对象工程师_传真,它打开到 AnyMath 的UDP连接。 -
挑战
cosimulate()-在计算的每一步,标志:-
当前模型时间作为第一个参数传递(
时间); -
第二个是需要发送到 AnyMath 的信号列表(例如,
[pu,eu,rou]).
-
-
数据交换:
-
模块通过端口 6849将这些信号发送到AnyMath**;
-
接下来,预计将有来自 AnyMath*on port*6848的响应;
-
如果收到响应,模块将返回来自 AnyMath 的值列表。
-
-
数据使用--返回的值可以在函数的逻辑中使用,例如,设置某些条件。
-
如果没有可用的数据 —
cosimulate()返回一个空列表,计算继续而不交换。
在徽标中注册和启动自定义功能
准备模块后 cosimulation.py 并编写自定义函数(例如, [医]使用者)有必要将其连接到徽标,并开始与 AnyMath 的联合计算。
第1步。 将功能连接到徽标
-
打开徽标中的 "平台" 模块。
-
项目 选项卡→选择所需的计算任务。 项目所在的路径示例:
VNIIEF/LOGOS-EXAMPLES-5.3.24.109/LOGOS-MIP/Projects/project_name
-
右键单击任务并选择 "属性"。

将打开 单个任务编辑器窗口:

-
在PF连接器列表中,找到合适的连接器(例如,
[医]使用者来计算侵蚀)。
-
双击连接器以打开 自定义函数编辑器。
-
在打开的编辑器中,使用以下方法粘贴函数的代码
cosimulate():import cosimulation # Импортируем модуль косимуляции def erosion_user(nsh, nip, ncmr, nhv, Cmr, strainVelF, strain, stress, pu, eu, epsp, rou, divU, ts, loc, tt, time, eraseFlag): #标志与工程师之间的信号交换 信号=共仿真。engee_sim.cosimulate(时间,[pu,eu,rou]) 如果没有信号: 返回nsh,nip,ncmr,nhv,Cmr,strainVelF,应变,应力, \ pu,eu,epsp,rou,divU,ts,loc,tt,time,eraseFlag strain_from_engee,epsp_from_engee=信号 #破坏准则:如果epsp>=应变,则认为该元素被破坏 如果epsp_from_engee>=strain_from_engee: eraseFlag=真 返回nsh,nip,ncmr,nhv,Cmr,strainVelF,strain_from_engee,应力, \ pu,eu,epsp_from_engee,rou,divU,ts,loc,tt,time,eraseFlag -
回到 任务编辑器,选择创建的函数并将其连接到相应的连接器。
|
徽标可以为每个任务拥有自己的一组连接器。 在连接之前,请确保函数的签名(参数列表)与所选连接器的接口匹配。 |
第2步。 开始模拟
启动顺序对于正确同步AnyMath和徽标非常重要。
-
首先,在 AnyMath 中运行模型。 它应该被加载并等待来自徽标的连接。
-
然后在LOGOS中运行计算(在 AnyMath 中启动模型后1分钟内)。

|
AnyMath必须先启动! 如果在 AnyMath 中启动模型之前启动徽标,则不会建立连接。 AnyMath 中的计算步骤必须等于或是LOGOS计算步骤的倍数。 |
第三步。 检查成功的连接
启动后,检查 AnyMath 日志中的消息。 成功的连接如下所示:
INFO | Object has been created: Logos INFO | Successfully interconnected with LOGOS!
第4步。 传输信号的控制
要验证来自徽标的数据,请打开 数据检查员
在 工程师:

在这里,您可以实时观察系统之间传输的信号的值。
第5步。 完成计算
计算完成后,两个程序同步关闭。 计算结果可以通过 Scientific View 模块在LOGOS中查看—在 Postprocessor中选择所需的输出文件:
