ADDED mttroot/mtt/bin/trans/dae2ker_r Index: mttroot/mtt/bin/trans/dae2ker_r ================================================================== --- /dev/null +++ mttroot/mtt/bin/trans/dae2ker_r @@ -0,0 +1,89 @@ +#!/bin/sh +## Shell script dae2ker_r +## Converts dae to behavioral kernal rep. + + +echo Creating $1_ker.r + +$SYMBOLIC > dae2ker.log <MTTNu THEN + v_list := append({w_i},v_list) + ELSE + v_list := append({u_i},v_list); +END; + +eq_list; v_list; +sol := solve(eq_list,v_list); +sol := first(sol); + +% Pluck out the manifest variable solutions +behaviour_list:={}; +FOR i:=1:(MTTNy-MTTNu) DO +BEGIN + soli := first(sol); + sol := rest(sol); + behaviour := DEN(RHS(soli))*LHS(soli) - NUM(RHS(soli)) = 0; + behaviour_list := append(behaviour_list, {behaviour}); +END; +behaviour_list := behaviour_list; + +MATRIX MTTR(MTTNy-MTTNu,MTTNy); +FOR i:=1:(MTTNy-MTTNu) DO +BEGIN + FOR j:=1:MTTNy DO + BEGIN + w_j := mkid(mttw,j); + coeffs := coeff(lhs(first(behaviour_list)),w_j); + IF length(coeffs)>1 THEN + MTTR(i,j) := second(coeff(lhs(first(behaviour_list)),w_j)); + END; + behaviour_list := rest(behaviour_list); +END; + +%% Now do coefficient matrices + +OFF NAT; +OUT "$1_ker.r"; +write "MATRIX MTTR(", MTTNy-MTTNu, ",", MTTNy, ");"; +MTTR := MTTR; +SHUT "$1_ker.r"; + + +EOF