Matrices.eigenValueMatrix(eigenvalues);
The function call returns a block diagonal matrix
J from the two-column matrix
eigenvalues
(computed by function Matrices.eigenValues).
Matrix eigenvalues
must have the real part of the
eigenvalues in the first column and the imaginary part in the
second column. If an eigenvalue i has a vanishing imaginary part,
then J[i,i] = eigenvalues[i,1], i.e., the diagonal
element of J is the real eigenvalue. Otherwise,
eigenvalue i and conjugate complex eigenvalue i+1 are used to
construct a 2 by 2 diagonal block of J:
J[i , i] := eigenvalues[i,1]; J[i , i+1] := eigenvalues[i,2]; J[i+1, i] := eigenvalues[i+1,2]; J[i+1, i+1] := eigenvalues[i+1,1];
function eigenValueMatrix extends Modelica.Icons.Function; input Real eigenValues[:, 2] "Eigen values from function eigenValues(..) (Re: first column, Im: second column)"; output Real J[size(eigenValues, 1), size(eigenValues, 1)] "Real valued block diagonal matrix with eigen values (Re: 1x1 block, Im: 2x2 block)"; end eigenValueMatrix;