0
|
6646 Views
|
3 Replies
|
4 Total Likes
View groups...
Share
GROUPS:

# Problem with LAPACK library compiling

Posted 10 years ago
 Dear All, when i want to use a LAPACK function in my code i get the error, please help function SVDRLS   import Modelica.Math.Matrices;   input Real A[3,2];   output Real sigmasvd[3,2];   output Real Usvd[3,3];   output Real VTsvd[2,2]; algorithm (sigmasvd,Usvd,VTsvd):=Matrices.singularValues(A); end SVDRLS;ERROR:Error: Tuple assignment only allowed when rhs is function call (in Matrices.singularValues(A))
3 Replies
Sort By:
Posted 10 years ago
 @Zaffer, I created this discussion about calling lapack subroutines. This is dedicated to the QR decomposition, yet the C code in this thread can have fairly generic application. You may want to take a look.
Posted 10 years ago
 There was a typo in the example file of SingularValue. You can create a new function with the following code. The only change I made is to move "info" to output and outside the protected scope.  function mysingularValues "Compute singular values and left and right singular vectors"     extends Modelica.Icons.Function;   input Real A[:,:] "Matrix";   output Real sigma[min(size(A, 1), size(A, 2))] "Singular values";   output Real U[size(A, 1),size(A, 1)]=identity(size(A, 1)) "Left orthogonal matrix";   output Real VT[size(A, 2),size(A, 2)]=identity(size(A, 2)) "Transposed right orthogonal matrix ";   output Integer info; protected   Integer n=min(size(A, 1), size(A, 2)) "Number of singular values";algorithm   if n > 0 then     (sigma,U,VT,info):=Modelica.Math.Matrices.LAPACK.dgesvd(A);    assert(info == 0, "The numerical algorithm to compute thesingular value decomposition did not converge");  end if;end mysingularValues;And the following sample model should give you a correct result: model test   Real q[2,2]={{1,3},{9,8}};   Real a;   Real b[2,2];   Real c[2,2];   Integer d; algorithm    (a,b,c,d):=mysingularValues(q); end test; Posted 10 years ago
 Thank you for bringing this to our attention. We will look into this.