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

Disabling variables in connector depending on boolean

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

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;

提前感谢您的帮助!

流体问题和多体问题实际上都存在类似的问题。在流体情况下,"equation of state" 的变化会影响自由度的多少。在多体系统的情况下,您会遇到需要某种机械地面元素的问题,但如果您的组件中有 "loop",它将受到过度约束。

在我看来,您的问题更接近流体问题(但我现在对 AC 域一点也不了解,所以我只是猜测)。在这种情况下,您可以做的是通过有关确切使用哪种公式的层次结构信息向下级联。如果要使用不同的连接器,则可以使用 replaceable package 通过层次结构级联新的连接器类型。这有点涉及。但是,如果您只想知道是使用一个方程式还是另一个方程式(跨一堆组件),那么您可以将一个(Boolean?)参数值级联到所有东西(例如, 你的 transient 标志)。

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