Skip to content

Commit

Permalink
Made DAELow and SimCodegen handle variables marked discrete
Browse files Browse the repository at this point in the history
git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@1790 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
Håkan Lundvall committed May 19, 2005
1 parent 45e9566 commit 6fcd5b7
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 0 deletions.
11 changes: 11 additions & 0 deletions Compiler/DAELow.rml
Expand Up @@ -695,6 +695,7 @@ relation is_non_state: VarKind => () =
axiom is_non_state (VARIABLE) => ()
axiom is_non_state (DUMMY_DER) => ()
axiom is_non_state (DUMMY_STATE) => ()
axiom is_non_state (DISCRETE) => ()
end

(** relation: dump
Expand Down Expand Up @@ -1942,6 +1943,10 @@ relation incidence_row_exp: (Exp.Exp, Variables )
-----------------------------
incidence_row_exp(Exp.CREF(cr,_),vars) => [p]

rule get_var(cr,vars) => (VAR(_,DISCRETE,_,_,_, _,_,_,_,_,_,_,_),p)
-----------------------------
incidence_row_exp(Exp.CREF(cr,_),vars) => [p]

rule get_var(cr,vars) => (VAR(_,DUMMY_DER,_,_,_ ,_,_,_,_,_,_,_,_),p)
-----------------------------
incidence_row_exp(Exp.CREF(cr,_),vars) => [p]
Expand Down Expand Up @@ -4398,6 +4403,12 @@ relation calculate_var_sizes:( Var list, int, int) => (int, int) =
calculate_var_sizes(VAR(_,VARIABLE,_,_,_, _,_,_,_,_,_,_,_)::vs,nx,ny)
=> (nx'',ny'')

rule int_add(ny,1) => ny' &
calculate_var_sizes(vs,nx,ny') => (nx'',ny'')
----------------------------
calculate_var_sizes(VAR(_,DISCRETE,_,_,_, _,_,_,_,_,_,_,_)::vs,nx,ny)
=> (nx'',ny'')

rule int_add(nx,1) => nx' &
calculate_var_sizes(vs,nx',ny) => (nx'',ny'')
----------------------------
Expand Down
19 changes: 19 additions & 0 deletions Compiler/SimCodegen.rml
Expand Up @@ -350,6 +350,13 @@ relation generate_var_names_algvars:(DAELow.Var list) => string list =
_,value,indx,origname,_,dae_var_attr,comment)::vs)
=> origname'::res

rule generate_var_names_algvars(vs) => res &
Util.string_append_list(["\"",origname,"\""]) => origname'
-----------------------
generate_var_names_algvars(DAELow.VAR(cr,DAELow.DISCRETE,_,_,_,_,
_,value,indx,origname,_,dae_var_attr,comment)::vs)
=> origname'::res

rule generate_var_names_algvars(vs) => res &
Util.string_append_list(["\"",origname,"\""]) => origname'
-----------------------
Expand Down Expand Up @@ -534,6 +541,18 @@ relation generate_init_data3:(DAELow.Var list,
nxarr,nxdarr,nyarr,nparr)
=> (nxarr,nxdarr,nyarr,nparr)

rule (* algebraic variables *)
print_exp_str_opt(value) => v &
Util.string_append_list([v, " // ",origname]) => str &
array_setnth(nyarr,indx,str) => nyarr &
generate_init_data3(rest,nxarr,nxdarr,nyarr,nparr)
=> (nxarr,nxdarr,nyarr,nparr)
--------------------
generate_init_data3(DAELow.VAR(cr,DAELow.DISCRETE,_,_,_,_,
_,value,indx,origname,_,dae_var_attr,comment)::rest,
nxarr,nxdarr,nyarr,nparr)
=> (nxarr,nxdarr,nyarr,nparr)

rule (* State variables *)
print_exp_str_opt(value) => v &
Util.string_append_list([v, " // ",origname]) => str &
Expand Down

0 comments on commit 6fcd5b7

Please sign in to comment.