首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Modelica中的计算参数

Modelica中的计算参数
EN

Stack Overflow用户
提问于 2022-06-08 03:22:18
回答 1查看 51关注 0票数 3

我有一个模型,其中一个参数应该通过求解一个非线性方程来确定。是否有可能在Modelica中实现这样的情况?例如:

代码语言:javascript
复制
parameter Real Rs

应该通过求解方程来找到:

代码语言:javascript
复制
(VmaxP*(Isc+I0_diode-2*ImaxP)-ImaxP*I0_diode*Rs)/(VmaxP-Rs*ImaxP)+I0_diode*exp((VmaxP+Rs*ImaxP)/(a*Ns*Vth_diode))*((Rs*(ImaxP-Isc)+VmaxP-a*Ns*Vth_diode)/(a*Ns*Vth_diode))=0;

在上述非线性方程中,只有Rs是未知的。

EN

回答 1

Stack Overflow用户

发布于 2022-06-08 06:50:54

当参数用fixed=false声明时,可以在初始方程段中计算它们。只要把你的非线性方程放进这一节,Rs就会被计算出来,如果所有其他变量都是已知的。

代码语言:javascript
复制
model FixedFalse

  parameter Real Rs(fixed=false);

  // dummy values to let the model simulate
  Real VmaxP=1; Real Isc=1; Real I0_diode=1;
  Real ImaxP=1; Real a = 1; Real Ns = 1; Real Vth_diode = 1;

initial equation 

  (VmaxP*(Isc+I0_diode-2*ImaxP)-ImaxP*I0_diode*Rs)/(VmaxP-Rs*ImaxP)+I0_diode*exp((VmaxP+Rs*ImaxP)/(a*Ns*Vth_diode))*((Rs*(ImaxP-Isc)+VmaxP-a*Ns*Vth_diode)/(a*Ns*Vth_diode))=0;

end FixedFalse;

为了防止该参数显示在参数对话框中,您可以保护它并添加一个非最终参数,例如用于绘图:

代码语言:javascript
复制
  ...

  final parameter Real Rs = _Rs;

protected 
  parameter Real _Rs(fixed=false);

initial equation 
  // Now use _Rs here
  ...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72539684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档