#!/bin/sh
######################################
##### Model Transformation Tools #####
######################################
# Bourne shell script: def2write.r
# Generates r code to write matrices
# Copyright (C) 2000 by Peter J. Gawthrop
###############################################################
## Version control history
###############################################################
## $Id$
## $Log$
## Revision 1.3 2000/10/11 09:07:17 peterg
## Added csex rep (cse without E)
##
## Revision 1.2 2000/10/10 21:02:17 peterg
## Added cse reps
##
## Revision 1.1 2000/10/10 09:07:32 peterg
## Initial revision
##
###############################################################
sys=$1 # System name
rep=$2 # System representation
# Inform User
echo Creating $1_$2_write.r
# Find system constants
Nx=`mtt_getsize $sys x` # States
Nxx=`mtt_getsize $sys xx` # States x States
Nu=`mtt_getsize $sys u` # Inputs
Ny=`mtt_getsize $sys y` # Outputs
Nyz=`mtt_getsize $sys yz` # Zero outputs
Npar=`wc -l $sys\_sympar.txt | awk '{print $1}'`
# Set up representation-specific stuff
case $rep in
cse)
matrices='EdX E'
ns="$Nx $Nx"
ms="1 $Nx"
;;
csex)
matrices='EdX'
ns="$Nx"
ms="1"
;;
cseo)
matrices='Y'
ns="$Ny"
ms="1"
;;
ode)
matrices='dX'
ns="$Nx"
ms="1"
;;
odeo)
matrices='Y Yz'
ns="$Ny $Nyz"
ms="1 1"
;;
sm)
matrices='A B C D'
ns="$Nx $Nx $Ny $Ny"
ms="$Nx $Nu $Nx $Nu"
;;
*)
echo def2write_r: representation $rep not recognised
exit
esac
# Write out the code
echo 'off echo$ load scope$' >$1_$2_write.r
for matrix in $matrices; do
n=`first "$ns"`; ns=`rest "$ns"`
m=`first "$ms"`; ms=`rest "$ms"`
is=`n2m 1 $n`;
js=`n2m 1 $m`;
for i in $is; do
for j in $js; do
echo 'optimize' >>$1_$2_write.r
name=`echo MTT$matrix'('$i','$j')'`
echo ' '$comma$name ':=:' $name >>$1_$2_write.r
echo 'INAME mtt_tmp$' >>$1_$2_write.r
comma=''
done
done
done
echo 'END$' >>$1_$2_write.r