Ticket #3999: total.mo

File total.mo, 11.0 KB (added by Martin Sjölund, 10 years ago)

Total model of the attached example

Line 
1class Model2Unit1 = TestLibrary.Containers.Container1.SubContainer1.Unit1(redeclare TestLibrary.Models.ModelContainer2.Model2.SubModel1 sm1, redeclare TestLibrary.Models.ModelContainer2.Model2.SubModel3 sm3, redeclare TestLibrary.Models.ModelContainer2.Model2.SubModel4 sm4, redeclare TestLibrary.Models.ModelContainer2.Model2.SubModel5 sm5);
2class Model2Unit2 = TestLibrary.Containers.Container1.SubContainer1.Unit2(redeclare TestLibrary.Models.ModelContainer2.Model2.SubModel5 sm5);
3
4model Model2Test
5 Model2Unit1 i;
6 Model2Unit2 e;
7equation
8 connect(i.sm5, e.sm5);
9end Model2Test;
10
11package TestLibrary "Test library"
12 package Models
13 package ModelContainer2
14 package Model2
15 encapsulated type States = enumeration(S1, X1, S2, S3, S4, S5, X2, S6, X3, X4, X5, X6, S7, X7, S8, S9, S10);
16 encapsulated type Composites = enumeration(C1, C2);
17 encapsulated type Species = enumeration(SP1, SP2, SP3, SP4, SP5, SP6, SP7, SP8, SP9, SP10);
18
19 class SubModel1
20 Real[States] states;
21 parameter Real S1 = 2.0;
22 parameter Real X1 = 150.0;
23 parameter Real S2 = 50.0;
24 parameter Real S3 = 0.0;
25 parameter Real S4 = 25.0;
26 parameter Real S5 = 30.0;
27 parameter Real X2 = 10.0;
28 parameter Real S6 = 0.0;
29 parameter Real X3 = 10.0;
30 parameter Real X4 = 160.0;
31 parameter Real X5 = 20.0;
32 parameter Real X6 = 0.0;
33 parameter Real S7 = 16.0;
34 parameter Real X7 = 50.0;
35 parameter Real S8 = 0.005;
36 parameter Real S9 = 0.005;
37 parameter Real S10 = 0.005;
38 equation
39 states[States.S1] = S1;
40 states[States.X1] = X1;
41 states[States.S2] = S2;
42 states[States.S3] = S3;
43 states[States.S4] = S4;
44 states[States.S5] = S5;
45 states[States.X2] = X2;
46 states[States.S6] = S6;
47 states[States.X3] = X3;
48 states[States.X4] = X4;
49 states[States.X5] = X5;
50 states[States.X6] = X6;
51 states[States.S7] = S7;
52 states[States.X7] = X7;
53 states[States.S8] = S8;
54 states[States.S9] = S9;
55 states[States.S10] = S10;
56 end SubModel1;
57
58 class Parameters
59 parameter Real pa1 = 3;
60 parameter Real pa2 = 0.03;
61 parameter Real pa3 = 0.4;
62 parameter Real pa4 = 6;
63 parameter Real pa5 = 0.8;
64 parameter Real pa6 = 20;
65 parameter Real pa7 = 0.62;
66 parameter Real pa8 = 0.2;
67 parameter Real pa9 = 0.5;
68 parameter Real pa10 = 0.05;
69 parameter Real pa11 = 0.8;
70 parameter Real pa12 = 0.15;
71 parameter Real pa13 = 0.08;
72 parameter Real pa14 = 0.4;
73 parameter Real pa15 = 1;
74 parameter Real pa16 = 0.67;
75 parameter Real pa17 = 0.08;
76 parameter Real pa18 = 0.24;
77 parameter Real pa19 = 0.086;
78 parameter Real pa20 = 0.06;
79 parameter Real pa21 = 2.85714285714;
80 parameter Real pa22 = -4.57142857143;
81 parameter Real pa23 = -1.71428571429;
82 parameter Real pa24 = 0.0714285714286;
83 parameter Real pa25 = -0.0714285714286;
84 parameter Real pa26 = 1.48;
85 parameter Real T = 20.0;
86 end Parameters;
87
88 class SubModel3
89 Parameters parameters;
90 Real[States] states;
91 Real[Composites] composites;
92 constant States X1 = States.X1;
93 constant States S2 = States.S2;
94 constant States S5 = States.S5;
95 constant States X2 = States.X2;
96 constant States X4 = States.X4;
97 constant States X5 = States.X5;
98 constant States X6 = States.X6;
99 constant Composites C1 = Composites.C1;
100 constant Composites C2 = Composites.C2;
101 equation
102 composites[C1] = states[X1] + states[S2] + states[S5] + states[X2] + states[X4] + states[X5] + states[X6];
103 composites[C2] = states[S2] + states[X2] + states[X4] + states[X5];
104 end SubModel3;
105
106 class SubModel4
107 Parameters parameters;
108 Real[States] states;
109 Real[Species] species;
110 Real var68;
111 Real var74;
112 Real var50;
113 Real var51;
114 Real var69;
115 Real var70;
116 Real var52;
117 Real var53;
118 Real var54;
119 Real var55;
120 Real var56;
121 Real var57;
122 Real var58;
123 Real var59;
124 Real var60;
125 Real var61;
126 Real var72;
127 Real var71;
128 Real var76;
129 Real var75;
130 Real var73;
131 Real var62;
132 constant Species SP1 = Species.SP1;
133 constant Species SP2 = Species.SP2;
134 constant Species SP3 = Species.SP3;
135 constant Species SP4 = Species.SP4;
136 constant Species SP5 = Species.SP5;
137 constant Species SP6 = Species.SP6;
138 constant Species SP7 = Species.SP7;
139 constant Species SP8 = Species.SP8;
140 constant Species SP9 = Species.SP9;
141 constant Species SP10 = Species.SP10;
142 constant States S3 = States.S3;
143 constant States S4 = States.S4;
144 constant States S8 = States.S8;
145 constant States S9 = States.S9;
146 constant States S10 = States.S10;
147 constant Real var63 = 6.867e-15;
148 constant Real var65 = -285.84;
149 constant Real var66 = -229.994;
150 constant Real var67 = -286.93308;
151 constant Real var64 = 298.15;
152 constant Real R = 8.314;
153 equation
154 var68 = -log10(species[SP1]);
155 species[SP2] = var74 / species[SP1];
156 species[SP3] = states[S4] / 14000 * var51 / (species[SP1] + var51);
157 species[SP4] = states[S4] / 14000 * species[SP1] / (species[SP1] + var51);
158 species[SP5] = states[S3] / 14000;
159 species[SP6] = states[S8] * species[SP1] ^ 2 / (species[SP1] ^ 2 + species[SP1] * var69 + var69 * var70);
160 species[SP7] = species[SP1] * var69 * states[S8] / (species[SP1] ^ 2 + species[SP1] * var69 + var69 * var70);
161 species[SP8] = var70 * var69 * states[S8] / (species[SP1] ^ 2 + species[SP1] * var69 + var69 * var70);
162 species[SP9] = states[S9];
163 species[SP10] = states[S10];
164 var61 = min(var72, 0.3);
165 var72 = 0.5 * ((+1) ^ 2 * species[SP1] + (-1) ^ 2 * species[SP2] + 0 ^ 2 * species[SP3] + (+1) ^ 2 * species[SP4] + (-1) ^ 2 * species[SP5] + 0 ^ 2 * species[SP6] + (-1) ^ 2 * species[SP7] + (-2) ^ 2 * species[SP8] + (+1) ^ 2 * species[SP9] + (-1) ^ 2 * species[SP10]);
166 var71 = var75 - var76;
167 var75 = (+1) * species[SP1] + (+1) * species[SP4] + (+1) * species[SP9];
168 var76 = (-1) * species[SP2] + (-1) * species[SP5] + (-1) * species[SP7] + (-2) * species[SP8] + (-1) * species[SP10];
169 var76 = var75;
170 var55 = 10 ^ (-var58 * 1 ^ 2 * (var61 ^ 0.5 / (1 + 1.5 * var61 ^ 0.5) - 0.3 * var61));
171 var56 = 10 ^ (-var58 * 2 ^ 2 * (var61 ^ 0.5 / (1 + 1.5 * var61 ^ 0.5) - 0.3 * var61));
172 var57 = 10 ^ (-var58 * 3 ^ 2 * (var61 ^ 0.5 / (1 + 1.5 * var61 ^ 0.5) - 0.3 * var61));
173 var58 = 1.82483 * 10 ^ 6 * var59 ^ 0.5 * (var60 * var73) ^ (-1.5);
174 var60 = 2727.586 + 0.6224107 * var73 - 466.9151 * log(var73) - 52000.87 / var73;
175 var73 = parameters.T + 273.16;
176 var59 = 1 - (parameters.T - 3.9863) ^ 2 * (parameters.T + 288.9414) / (508929.2 * (parameters.T + 68.12963)) + 0.011445 * exp(-374.3 / parameters.T);
177 var74 = var50 / var55 ^ 2;
178 var50 = var63 * exp(var54 / R * (1 / var64 - 1 / var73));
179 var54 = var66 + var65 - 2 * var67;
180 var69 = var52 / var55 ^ 2;
181 var70 = var53 / var56;
182 var52 = 10 ^ (-(3404.7 / var73 - 14.8435 + var73 * 0.03279));
183 var53 = 10 ^ (-(2902.4 / var73 - 6.498 + var73 * 0.02379));
184 var51 = 10 ^ (-(2835.8 / var73 - 0.6322 + 0.00123 * var73));
185 var62 = species[SP2] + species[SP3] + species[SP7] + 2 * species[SP8] - species[SP1];
186 end SubModel4;
187
188 connector SubModel5
189 flow Real Q;
190 Real[States] states;
191 Real[Composites] composites;
192 Real[Species] species;
193 end SubModel5;
194 end Model2;
195 end ModelContainer2;
196
197 package ModelContainer1
198 package Model1
199 encapsulated type States = enumeration(S1, X1, S2);
200 encapsulated type Composites = enumeration(C1, C2);
201 encapsulated type Species = enumeration(SP1);
202
203 class SubModel1 "SubModel1"
204 Real[States] states "State variable concentrations";
205 parameter Real S2 = 0.0;
206 parameter Real S1 = 120.0;
207 parameter Real X1 = 40.0;
208 equation
209 states[States.S2] = S2;
210 states[States.S1] = S1;
211 states[States.X1] = X1;
212 end SubModel1;
213
214 class Parameters
215 parameter Real p1 = 6.0;
216 parameter Real p2 = 0.62;
217 parameter Real K_S1 = 20.0;
218 parameter Real K_S2 = 0.2;
219 parameter Real p3 = 0.67;
220 end Parameters;
221
222 class SubModel3
223 Parameters parameters;
224 Real[States] states;
225 Real[Composites] composites;
226 constant States S1 = States.S1;
227 constant States X1 = States.X1;
228 constant Composites C1 = Composites.C1;
229 constant Composites C2 = Composites.C2;
230 equation
231 composites[C1] = states[S1] + states[X1];
232 composites[C2] = states[S1] + states[X1];
233 end SubModel3;
234
235 class SubModel4
236 Parameters parameters;
237 Real[States] states;
238 Real[Species] species;
239 constant Species SP1 = Species.SP1;
240 equation
241 species[SP1] = 7.0;
242 end SubModel4;
243
244 connector SubModel5
245 flow Real Q;
246 Real[States] states "State variable concentrations";
247 Real[Composites] composites "Composite variable concentrations";
248 Real[Species] species "Ionic species";
249 end SubModel5;
250 end Model1;
251 end ModelContainer1;
252 end Models;
253
254 package Containers
255 package Container1
256 package SubContainer1
257 class Unit2 "Unit2"
258 replaceable TestLibrary.Models.ModelContainer1.Model1.SubModel5 sm5;
259 end Unit2;
260
261 class Unit1 "Unit1"
262 replaceable TestLibrary.Models.ModelContainer1.Model1.SubModel5 sm5;
263 replaceable TestLibrary.Models.ModelContainer1.Model1.SubModel1 sm1;
264 replaceable TestLibrary.Models.ModelContainer1.Model1.SubModel3 sm3;
265 replaceable TestLibrary.Models.ModelContainer1.Model1.SubModel4 sm4;
266 parameter Real Q = 10000;
267 equation
268 sm3.states = sm1.states;
269 sm4.states = sm1.states;
270 sm5.Q = -Q;
271 sm5.states = sm1.states;
272 sm5.composites = sm3.composites;
273 sm5.species = sm4.species;
274 end Unit1;
275 end SubContainer1;
276 end Container1;
277 end Containers;
278end TestLibrary;
279
280model Model2Test_total
281 extends Model2Test;
282end Model2Test_total;