Skip to content

Commit 4179ac2

Browse files
author
x97davka
committed
Specify inner and outer connectors.
git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@209 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
1 parent af110c1 commit 4179ac2

File tree

1 file changed

+59
-41
lines changed

1 file changed

+59
-41
lines changed

modeq/inst.rml

Lines changed: 59 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -67,61 +67,77 @@ relation inst_list : (Env, Mod, Prefix, Connect.Sets,
6767

6868
end
6969

70-
(* FIXME flow variables. This needs to be totally reworked *)
71-
72-
relation connect_vars : (Connect.Sets, Exp.ComponentRef, Exp.ComponentRef,
70+
relation connect_vars : (Connect.Sets,
71+
Exp.ComponentRef, Connect.Face,
72+
Exp.ComponentRef, Connect.Face,
7373
Types.Var list) => Connect.Sets =
7474

75-
axiom connect_vars(sets,_,_,[]) => sets
75+
axiom connect_vars(sets,_,_,_,_,[]) => sets
7676

7777
rule Exp.extend_cref(c1, n, []) => c1' &
7878
Exp.extend_cref(c2, n, []) => c2' &
79-
print " connect_vars: " &
79+
(* print " connect_vars: " &
8080
Dump.dump_component_ref c1' & print " <-> " &
8181
Dump.dump_component_ref c2' &
82-
print "\n" &
83-
connect_components(sets,[], c1', c2', ty, flow) => sets' &
84-
connect_vars(sets',c1,c2,xs) => sets''
82+
print "\n" & *)
83+
connect_components(sets,[], c1',f1, c2',f2, ty, flow) => sets' &
84+
connect_vars(sets',c1,f1,c2,f2,xs) => sets''
85+
--------------------------------------
86+
connect_vars(sets,c1,f1,c2,f2,(n,Types.ATTR(_,flow,_,_),ty)::xs)
87+
=> sets''
88+
89+
end
90+
91+
relation component_face : Exp.ComponentRef => Connect.Face =
92+
93+
axiom component_face (c as [_,_]) => Connect.INNER
94+
95+
axiom component_face (c as [_]) => Connect.OUTER
96+
97+
rule print "# component_face error: " &
98+
Dump.dump_component_ref c & print "\n"
8599
--------------------------------------
86-
connect_vars(sets,c1,c2,(n,Types.ATTR(_,flow,_,_),ty)::xs) => sets''
100+
component_face c => fail
87101

88102
end
89103

90104
relation connect_components: (Connect.Sets,
91105
Prefix,
92-
Explode.ComponentRef,
93-
Explode.ComponentRef,
106+
Explode.ComponentRef, Connect.Face,
107+
Explode.ComponentRef, Connect.Face,
94108
Types.Type, bool) => Connect.Sets =
95109

96110
rule Prefix.prefix_cref(pre, c1) => c1' &
97111
Prefix.prefix_cref(pre, c2) => c2' &
98-
print " connect_components flow: " &
99-
Dump.dump_component_ref c1' & print " <-> " &
100-
Dump.dump_component_ref c2' &
101-
print "\n" &
102-
Connect.add_flow(sets, c1, Connect.IN, c2, Connect.IN) => sets'
112+
(* print " connect_components flow: " &
113+
Dump.dump_component_ref c1' & print " <-> " &
114+
Dump.dump_component_ref c2' &
115+
print "\n" & *)
116+
Connect.add_flow(sets, c1, f1, c2, f2) => sets'
103117
-----------------------------------------
104-
connect_components(sets, pre, c1, c2, Types.BUILTIN(_), true) => sets'
118+
connect_components(sets, pre, c1, f1, c2, f2, Types.BUILTIN(_), true)
119+
=> sets'
105120

106121
rule Prefix.prefix_cref(pre, c1) => c1' &
107122
Prefix.prefix_cref(pre, c2) => c2' &
108-
print " connect_components non-flow: " &
109-
Dump.dump_component_ref c1' & print " <-> " &
110-
Dump.dump_component_ref c2' &
111-
print "\n" &
123+
(* print " connect_components non-flow: " &
124+
Dump.dump_component_ref c1' & print " <-> " &
125+
Dump.dump_component_ref c2' &
126+
print "\n" & *)
112127
Connect.add_equ(sets, c1, c2) => sets'
113128
-----------------------------------------
114-
connect_components(sets, pre, c1, c2, Types.BUILTIN(_), false) => sets'
129+
connect_components(sets, pre, c1, _, c2, _, Types.BUILTIN(_), false)
130+
=> sets'
115131

116132
rule Prefix.prefix_cref(pre, c1) => c1' &
117133
Prefix.prefix_cref(pre, c2) => c2' &
118-
print " connect_components 2: " &
119-
Dump.dump_component_ref c1' & print " <-> " &
120-
Dump.dump_component_ref c2' &
121-
print "\n" &
122-
connect_vars(sets,c1',c2', l) => sets'
134+
(* print " connect_components 2: " &
135+
Dump.dump_component_ref c1' & print " <-> " &
136+
Dump.dump_component_ref c2' &
137+
print "\n" & *)
138+
connect_vars(sets,c1',f1,c2',f2, l) => sets'
123139
----------------------------------------
124-
connect_components(sets,pre,c1,c2,Types.COMPLEX(l),_) => sets'
140+
connect_components(sets,pre,c1,f1,c2,f2,Types.COMPLEX(l),_) => sets'
125141

126142
end
127143

@@ -136,16 +152,18 @@ relation inst_connect: (Connect.Sets, Env, Prefix,
136152
Explode.ComponentRef,Explode.ComponentRef)
137153
=> Connect.Sets =
138154

139-
rule print " trying to connect " &
140-
Dump.dump_component_ref(o1) & print " with " &
141-
Dump.dump_component_ref(o2) & print "\n" &
142-
Env.lookup_var(env,o1) => (Types.ATTR(_,flow1,_,dir1),ty1) &
143-
Env.lookup_var(env,o2) => (Types.ATTR(_,flow2,_,dir2),ty2) &
155+
rule print " connecting " &
156+
Dump.dump_component_ref(c1) & print " with " &
157+
Dump.dump_component_ref(c2) & print "\n" &
158+
Env.lookup_var(env,c1) => (Types.ATTR(_,flow1,_,dir1),ty1) &
159+
Env.lookup_var(env,c2) => (Types.ATTR(_,flow2,_,dir2),ty2) &
144160
Types.same_type(ty1, ty2) &
145161
check_flow(flow1, flow2) &
146-
connect_components(sets, pre, o1, o2, ty1, flow1) => sets'
162+
component_face(c1) => f1 &
163+
component_face(c2) => f2 &
164+
connect_components(sets, pre, c1, f1, c2, f2, ty1, flow1) => sets'
147165
---------------------------------
148-
inst_connect(sets, env,pre,o1,o2) => sets'
166+
inst_connect(sets, env,pre,c1,c2) => sets'
149167

150168
rule print "# could not connect\n"
151169
---------------------------------
@@ -479,10 +497,13 @@ and inst_class: (Env, Mod, Prefix, Connect.Sets, Explode.Class)
479497
=> (DAE.DAEcomp list, Connect.Sets, Types.Type) =
480498

481499
rule Env.new_frame(env) => env' &
482-
inst_class_in(env', mod, pre, csets, c, false) => (dae,_,csets',tys) &
500+
inst_class_in(env', mod, pre, csets, c, false) => (dae1,_,csets',tys) &
501+
Connect.dump_sets csets' &
502+
Connect.equations csets' => dae2 &
503+
list_append(dae1, dae2) => dae &
483504
mktype(tys) => ty
484505
-------------------------------------------
485-
inst_class(env, mod, pre, csets, c) => (dae, csets', ty)
506+
inst_class(env, mod, pre, csets, c) => (dae, [], ty)
486507

487508
end
488509

@@ -493,10 +514,7 @@ relation inst_program : (Env, Explode.Program) => DAE.DAEcomp list =
493514
inst_program(env,[]) => fail
494515

495516
rule Env.extend_frame_c(env,c,Mod.NOMOD) => env' &
496-
inst_class(env',Mod.NOMOD,[],[],c) => (dae1,csets,_) &
497-
Connect.dump_sets csets &
498-
Connect.equations csets => dae2 &
499-
list_append(dae1, dae2) => dae
517+
inst_class(env',Mod.NOMOD,[],[],c) => (dae,csets,_)
500518
-----------------------------
501519
inst_program(env,[c]) => dae
502520

0 commit comments

Comments
 (0)