From 563e24c54b18f9a8cf2991effbd41233bd6b560a Mon Sep 17 00:00:00 2001 From: otter Date: Thu, 18 Feb 2016 16:47:28 +0000 Subject: [PATCH] #1890 further improved (Complex matrix vector multiplication added in MSL trunk) As suggested, introduced function MatrixVectorProduct and used it. This works in Dymola. git-svn-id: https://svn.modelica.org/projects/Modelica/trunk@9051 7ce873d0-865f-4ce7-a662-4bb36ea78beb --- Modelica/ComplexMath.mo | 9 +++++++++ .../Electrical/QuasiStationary/MultiPhase.mo | 12 ++++++++---- .../Magnetic/QuasiStatic/FundamentalWave.mo | 18 ++++++++++++------ 3 files changed, 29 insertions(+), 10 deletions(-) diff --git a/Modelica/ComplexMath.mo b/Modelica/ComplexMath.mo index f7923ba1ad..68917f3ef1 100644 --- a/Modelica/ComplexMath.mo +++ b/Modelica/ComplexMath.mo @@ -316,6 +316,15 @@ to the original vector are given, such that sorted_v = v[indices]. ")); end sort; + function matrixVectorProduct "Returns M*v of a Complex matrix M and a Complex vector v" + extends Modelica.Icons.Function; + input Complex M[:,:] "Complex matrix"; + input Complex v[size(M,2)] "Complex vector"; + output Complex result[size(M,1)] "Complex result vector M*v"; + algorithm + result:={Modelica.ComplexMath.'sum'({M[j,k]*v[k] for k in 1:size(M,2)}) for j in 1:size(M,1)}; + annotation(Inline=true); + end matrixVectorProduct; annotation(Documentation(info="

This library provides functions operating on vectors diff --git a/Modelica/Electrical/QuasiStationary/MultiPhase.mo b/Modelica/Electrical/QuasiStationary/MultiPhase.mo index 6760737835..5dae3c87a7 100644 --- a/Modelica/Electrical/QuasiStationary/MultiPhase.mo +++ b/Modelica/Electrical/QuasiStationary/MultiPhase.mo @@ -2018,6 +2018,7 @@ This block determines the continuous quasi