Если массив определен в 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.
Я был бы признателен, если бы кто-нибудь мог дать рекомендации или комментарии о том, почему это происходит, и если / почему это поведение дизайна.