#! /bin/sh
######################################
##### Model Transformation Tools #####
######################################
# Bourne shell script: sspar2ss_r
# Reduce steady steady-state parameter file to reduce steady-state:
# X0, and Y0 and U0;
# P.J.Gawthrop 10 July 1990, 22 April 1991, Dec 1993, April 1994
# Copyright (c) P.J.Gawthrop, 1990, 1994.
###############################################################
## Version control history
###############################################################
## $Id$
## $Log$
###############################################################
#Inform user
echo Creating $1_ss.r
# Remove the old log file
rm -f sspar2ss_r.log
# Use reduce to accomplish the transformation
reduce >sspar2ss_r.log << EOF
%Read the definition file
in "$1_def.r";
%Read the constitutive relationships (May be used in rss file).
in "$1_cr.r";
%Read the steady-state values
in "$1_sspar.r";
%Read in the parameter file
in "$1_sympar.r";
OFF Echo;
OFF Nat;
OUT "$1_ss.r";
%Write out the steady-state values (if any)
write "%Steady-state values";
IF MTTNx>0 THEN
BEGIN
write "matrix MTTX0(", MTTNx, ",1)";
END;
MTTX0 := MTTX;
IF MTTNu>0 THEN
BEGIN
write "matrix MTTU0(", MTTNu, ",1)";
END;
MTTU0 := MTTU;
IF MTTNy>0 THEN
BEGIN
write "matrix MTTY0(", MTTNy, ",1)";
END;
MTTY0 := MTTY;
%Write them out by component - but only if values have been set
%(This assumes that if element 1 not set then the rest aren't either)
clear MTTx1;
IF MTTNx>0 THEN
IF MTTX0(1,1) NEQ MTTX1 THEN
FOR i := 1:MTTNx DO
BEGIN
write "MTTX", i, " := ", MTTX0(i,1);
END;
clear MTTu1;
IF MTTNu>0 THEN
IF MTTu0(1,1) NEQ MTTu1 THEN
FOR i := 1:MTTNu DO
BEGIN
write "MTTu", i, " := ", MTTu0(i,1);
END;
%Derivatives are zero in the steady-state
IF MTTNz>0 THEN
FOR i := 1:MTTNz DO
BEGIN
write "MTTdz", i, " := 0";
END;
write "END;";
SHUT "$1_ss.r";
quit;
EOF
# Now invoke the standard error handling.
mtt_error_r sspar2ss_r.log