the following model 'Checkimport1' simulates in openmodelica old frontend and not in new frontend
package DatabaseA
package Data//Database
model DataStructure //properties
parameter Integer A;
parameter String B;
parameter Real C;
parameter Real D[3];
end DataStructure;
model Comp1//values for properties
extends DataStructure(A = 1, B = "Comp1", C = 10, D={0.1,1,-1});
end Comp1;
model Comp2//values for properties
extends DataStructure(A = 2, B = "Comp2", C = 20, D={0.2,2,-2});
end Comp2;
model Comp3//values for properties
extends DataStructure(A = 3, B = "Comp3", C = 30, D={0.3,3,-3});
end Comp3;
end Data;
model Checkimport1
import DatabaseA.Data.*;
parameter Comp1 AB;
parameter Comp3 AC;
parameter DataStructure List[:] = {AB,AC};
end Checkimport1;
end DatabaseA;
openmodelica 1.22.1 version. 'Checkimport1' simulates with old frontend and new frontend reports error
Component 'List' may not have a binding equation due to class specialization 'model'
The answer by @Prims is a good step, but it should be improved even further to be correct Modelica by also changing Comp1
and Comp3
to be record
:
package DatabaseA
package Data
record DataStructure //Changed from model to record
parameter Integer A;
parameter String B;
parameter Real C;
parameter Real D[3];
end DataStructure;
record Comp1
extends DataStructure(A = 1, B = "Comp1", C = 10, D={0.1,1,-1});
end Comp1;
record Comp2
extends DataStructure(A = 2, B = "Comp2", C = 20, D={0.2,2,-2});
end Comp2;
record Comp3
extends DataStructure(A = 3, B = "Comp3", C = 30, D={0.3,3,-3});
end Comp3;
end Data;
model Checkimport1
import DatabaseA.Data.*;
parameter Comp1 AB;
parameter Comp3 AC;
parameter DataStructure List[:] = {AB,AC};
end Checkimport1;
end DatabaseA;
The reason is that a model
cannot be parameter
(this also applies to DataStructure
itself) https://specification.modelica.org/master/class-predefined-types-and-declarations.html#prefix-rules
Note that Comp2
inheriting from a record
could technically be a model
since it is not used - but I opted for consistency, https://specification.modelica.org/master/inheritance-modification-and-redeclaration.html#restrictions-on-the-kind-of-base-class