Если в Dymola определен массив и любому элементу массива присвоено значение в разделе алгоритма, то получается, что Dymola неявно добавляет уравнения для всех неназначенных элементов массива. Рассмотрим пример ниже:
model AlgorithmAssignment
// Declare an array with two elements
Real myArray[2];
algorithm
// Assign a value to array element 1 in algorithm section
// This yields no error and implicitly assigns myArray[2] := 0;
myArray[1] := 10;
end AlgorithmAssignment;
Эта проблема привлекла мое внимание при попытке запустить модель, подобную приведенной ниже:
model EquationAndAlgorithmAssignment
// Declare an array with two elements
Real myArray[2];
equation
// Define element 1 in the equation section
myArray[1] = 10;
algorithm
// Define element 2 in the algorithm section
myArray[2] := 1;
// This model is over-defined because the equation myArray[2] := 1 in the
// algorithm section implicitly adds an equation myArray[1] := 0
// This behavior is unexpected.
end EquationAndAlgorithmAssignment;
Как отмечено в комментариях к коду, это поведение кажется мне странным. Один элемент массива назначается в разделе уравнения, другой - в разделе алгоритма. Для меня не интуитивно понятно, что Димола неявно добавляет уравнение myArray [1]: = 0 просто потому, что секция алгоритма содержит уравнение myArray [2]: = 1.
Буду признателен, если кто-нибудь предоставит руководство или комментарии о том, почему это происходит, и если / почему это поведение при проектировании.