根据布尔值禁用连接器中的变量

时间:2015-10-28 09:33:42

标签: modelica

我正在构建使用复数或只是连接器中变量的实部的电气模型。根据布尔值,我在两个方程组之间切换。 我的问题是:当我不想使用它时,处理想象的最佳方法是什么。将其设置为零会导致在连接其他组件时出现问题,因为变量是超定的。 有没有办法禁用虚部或更改连接器,因此如果我使用实值方程组,它只有一个实数变量? 下面我贴了方程组。

equation 
   if transient then
     v = Complex(Vnom*cos(theta + phiV),0); // how can I avoid setting im to zero here?
   else
     v = Complex(Vnom*cos(phiV), Vnom*sin(phiV));
   end if;

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

流体问题和多体问题实际上存在类似的问题。在流体情况下,“状态方程”改变,这会影响有多少自由度。在多体系统的情况下,您遇到的问题是需要某种机械接地元件,但如果组件中有“环”,则会过度约束。

在我看来,你的问题更接近流动性问题(但我现在根本没有AC域,所以我只是在猜测)。在这种情况下,您可以做的是通过层次结构信息向下级联,以确切了解要使用的配方类型。如果要使用不同的连接器,则可以使用replaceable package在层次结构中级联新的连接器类型。这有点牵扯。但是,如果您只想知道是使用一个等式还是另一个等式(跨越一堆组件),那么您可以通过所有内容(,例如,<)来级联(Boolean?)参数值/ em>你的transient标志。)

您可能考虑的另一件事是使用innerouter隐式地通过层次结构级联参数。一些库使用所谓的world对象来提供有关模型的全局信息。通过这种方式,您可以在根目录中放置inner world对象,并且同一层次结构中的所有组件都可以使用outer关键字访问它。我尽量避免inner / outer并使用更明确的参数级联。但这取决于你。