热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Modelica中的温差量未按预期运行

我正在尝试获取温度差异量,以便以非绝对温度标尺显示时报告正确的结果。请参见以下

我正在尝试获取温度差异量,以便以非绝对温度标尺显示时报告正确的结果。请参见以下示例:

model tempDiffTest
Modelica.Blocks.Interfaces.RealOutput test1(quantity="ThermodynamicTemperature",unit="K") = 1 annotation(absoluteValue=false);
Real test2(quantity="ThermodynamicTemperature",unit="K") = 2 annotation(absoluteValue=false);
Modelica.SIunits.TemperatureDifference test3 = 3;
end tempDiffTest;

请注意

type TemperatureDifference = Real (
final quantity="ThermodynamicTemperature",final unit="K") annotation(absoluteValue=false);

这是促使我对test1和test2变量进行修改的原因。

现在,期望是当我以摄氏度显示我的结果时,对于test1,test2和test3,它们应该分别为1、2和3。实际结果显示在Dymola中:

Modelica中的温差量未按预期运行

因此,只有test3显然是成功的(请注意,在Openmodelica中没有任何结果是成功的)。现在,我的问题是如何实现对test1和test2的追求?


Dymola不支持在absoluteValuetest1的声明中使用test2注释。

如果您在Dymola中启用注释检查,则使用

Advanced.EnableAnnotatiOnCheck=true

检查期间的迪摩拉报告


  

在tempDiffTest组件test1类中,注释'absoluteValue'是未知的。

查看Modelica规范,我们注意到它说明了


  

简单类型或简单类型的组件可能具有:
  注解(absoluteValue = false);

我认为这有点含糊,您的代码应该可以工作(因为test2是预定义类型Real的组件)。但是Dymola仅在类定义中接受注释。

因此,要解决您的问题,只需声明一个连接器和一个类型即可使用此注释。

package tempDiffTest
connector Test1 = Modelica.Blocks.Interfaces.RealOutput (quantity="ThermodynamicTemperature",unit="K") annotation(absoluteValue=false);
type Test2 = Real(quantity="ThermodynamicTemperature",unit="K") annotation(absoluteValue=false);
model Example
Test1 test1 = 1;
Test2 test2 = 2;
Modelica.SIunits.TemperatureDifference test3 = 3;
end Example;
end tempDiffTest;

,

来自Modelica Language Specification:


  

简单类型或简单类型的组件可能具有:

  
  

annotation(absoluteValue = false);

  
  

如果为false,则变量定义相对数量,如果为true,则定义绝对数量。 [在单位之间转换时(在用于绘制和输入参数的用户界面中),对于注释为absoluteValue = false定义的变量,必须忽略偏移量。此注释在Modelica标准库中使用,例如在Modelica.SIunits中用于类型定义TemperatureDifference。]

因此,仅当从实际的unit转换为具有为此操作定义的偏移量的displayUnit时,注释才有所不同。如果添加了annotation(absoluteValue=false),则忽略偏移量。对于温度差异,这是有意义的,因为对于例如摄氏或开氏温度。

关于您的代码:它的作用是将开氏温度分配给test1test2,然后以°C显示。因此,显示的是正确的。

为此,重要的是要知道在Modelica中,值始终以变量具有的单位分配,在您的情况下为Kelvin。然后将其重新计算为摄氏度,以在UI中显示。您需要分配274.15K才能获得1°C。由于这是很常见的重新计算,因此在MSL中有一个函数:Modelica.SIunits.Conversions.from_degC

所以我建议将您的代码修改为:

model tempDiffTest
import Modelica.SIunits.Conversions.from_degC;
Modelica.Blocks.Interfaces.RealOutput test1(quantity="Temperature",unit="K",displayUnit="degC") = from_degC(1);
Modelica.SIunits.Temperature test2 = from_degC(2) annotation(absoluteValue=false);
Modelica.SIunits.TemperatureDifference test3 = 3;
Modelica.SIunits.TemperatureDifference test4 = test1-test2;
end tempDiffTest;

结果是:

Variable Browser Result

Table Result


推荐阅读
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • Whatsthedifferencebetweento_aandto_ary?to_a和to_ary有什么区别? ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • Spring学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
  • (三)多表代码生成的实现方法
    本文介绍了一种实现多表代码生成的方法,使用了java代码和org.jeecg框架中的相关类和接口。通过设置主表配置,可以生成父子表的数据模型。 ... [详细]
author-avatar
爱碩爱你_静莫失心
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有