Opened 12 years ago
Closed 11 years ago
#1941 closed defect (fixed)
outerProduct not implemented
Reported by: | Christian Schubert | Owned by: | Martin Sjölund |
---|---|---|---|
Priority: | normal | Milestone: | 1.9.1 |
Component: | Backend | Version: | trunk |
Keywords: | outerProduct | Cc: | Christian Schubert |
Description (last modified by )
I wrote a simple model using the outerProduct function
model outerProductTest Real n[3] = {1,2,3}; Real a[3,3]; equation a = outerProduct(n,n); end outerProductTest;
Unfortunately, it does not flatten giving the following errormessages:
[ModelicaBuiltin.mo:780:3-790:22:writable] Error: The lhs (result) of the external function declaration has array type (Integer[size(v1, 1), size(v2, 1)]), but this is not allowed in the specification. You need to pass it as an input to the function (preferably also with a size()-expression to avoid out-of-bounds errors in the external call).
[ModelicaBuiltin.mo:339:1-343:11:writable] Error: Internal error OpenModelica.Internal.outerProductInt not found in scope: <global scope>
[ModelicaBuiltin.mo:780:3-790:22:writable] Error: The lhs (result) of the external function declaration has array type (Integer[size(v1, 1), size(v2, 1)]), but this is not allowed in the specification. You need to pass it as an input to the function (preferably also with a size()-expression to avoid out-of-bounds errors in the external call).
[ModelicaBuiltin.mo:339:1-343:11:writable] Error: Internal error OpenModelica.Internal.outerProductInt not found in scope: <global scope>
[ModelicaBuiltin.mo:780:3-790:22:writable] Error: The lhs (result) of the external function declaration has array type (Integer[size(v1, 1), size(v2, 1)]), but this is not allowed in the specification. You need to pass it as an input to the function (preferably also with a size()-expression to avoid out-of-bounds errors in the external call).
[ModelicaBuiltin.mo:339:1-343:11:writable] Error: Internal error OpenModelica.Internal.outerProductInt not found in scope: <global scope>
[outerProductTest.mo:5:2-5:23:writable] Error: Class outerProduct not found in scope outerProductTest (looking for a function or record).
Error: Error occurred while flattening model outerProductTest
Attachments (2)
Change History (12)
by , 12 years ago
Attachment: | outerProductTest.mo added |
---|
comment:1 by , 12 years ago
Description: | modified (diff) |
---|
comment:2 by , 12 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
comment:3 by , 12 years ago
Cc: | added |
---|---|
Resolution: | fixed |
Status: | closed → reopened |
Now the model survives the frontend, but compilation fails.
Simulation failed for model: outerProductTestError: Error building simulator. Buildlog: gcc -falign-functions -msse2 -mfpmath=sse -I\"C:/OpenModelica1.9.0//include/omc\" -I. -c -o outerProductTest.o outerProductTest.c
outerProductTest.c: In function 'eqFunction_2':
outerProductTest.c:210: warning: passing argument 1 of 'copy_real_array_data_mem' from incompatible pointer type
C:/OpenModelica1.9.0//include/omc/real_array.h:76: note: expected 'const struct real_array_t *' but argument is of type 'modelica_real *'
gcc -falign-functions -msse2 -mfpmath=sse -I\"C:/OpenModelica1.9.0//include/omc\" -I. -c -o outerProductTest_records.o outerProductTest_records.c
g++ -I. -o outerProductTest.exe outerProductTest.o outerProductTest_records.o -I\"C:/OpenModelica1.9.0//include/omc\" -I. -falign-functions -msse2 -mfpmath=sse -L\"C:/OpenModelica1.9.0//lib/omc\" -lSimulationRuntimeC -linteractive -lregex -lexpat -static-libgcc -luuid -lole32 -lws2_32 -lsundials_kinsol -lsundials_nvecserial -llapack-mingw -Wl,-Bstatic -lf2c -Wl,-Bdynamic
outerProductTest.o:outerProductTest.c:(.text+0x5a0): undefined reference to `outerProduct'
collect2: ld returned 1 exit status
mingw32-make: * [omc_main_target] Error 1
comment:4 by , 12 years ago
Another problem occurs when compiling the slightly more complicated model
{{{model outerProductTest2
Real n[3] = {1,2,3};
Real b[3,3] = identity(3);
Real a[3,3];
Real phi = 0;
equation
a = (outerProduct(n, n) + identity(3))*b;
end outerProductTest2;}}}
Then we get an error from the frontend saying:
[outerProductTest.mo:7:2-7:42:writable] Error: Incompatible argument types to operation matrix multiplication in component <NO COMPONENT>, left type: Real[:, :], right type: Real[3, 3]
[outerProductTest.mo:7:2-7:42:writable] Error: Cannot resolve type of expression (outerProduct(n, n) + identity(3)) * b. The operands have types Real[:, :], Real[3, 3] in component <NO COMPONENT>.
Error: Error occurred while flattening model outerProductTest
by , 12 years ago
Attachment: | outerProductTest2.mo added |
---|
comment:5 by , 12 years ago
r13955 fixed the issue with code generation. Will look at the last part.
comment:10 by , 11 years ago
Resolution: | → fixed |
---|---|
Status: | reopened → closed |
Fixed in r13932