#! /bin/sh

     ###################################### 
     ##### Model Transformation Tools #####
     ######################################

# Bourne shell script: ss_r2m
# Reduce steady-state values to Fortran
# P.J.Gawthrop 10 July 1990, Dec 1993, Jan 1994, May 1994.
# Copyright (c) P.J.Gawthrop, 1989, 1990, 1993, 1994.

###############################################################
## Version control history
###############################################################
## $Id$
## $Log$
###############################################################

#Inform user
echo Creating $1_ss.m
# Remove the old log file
rm -f ss_r2m.log

# Usv reduce to accomplish the transformation
reduce >ss_r2m.log << EOF

%Read the reduce definitions file
in "$1_def.r";

%Set up the number of argument variables to zero in case the user has forgotten
MTTNVar := 0;

%Read the reduce steady-state values file
in "$1_ss.r";

%Read in the parameter file
in "$1_sympar.r";

ON BigFloat, numval;
PRECISION 16; %Compatible with Matlab

OUT "$1_ss.m";
%Headings - Matlab style
%(Note. The ;; are deleted by for2mat)

IF MTTNvar>0 THEN
BEGIN
  write "function [MTTX0,MTTY0,MTTU0] = $1_ss(...";
  FOR i := 1:MTTNvar DO
  BEGIN
     IF i<MTTNvar THEN write MTTVar(i,1), ",..."
                  ELSE write MTTVar(i,1), ");;";
  END;
END
ELSE write "function [MTTX0,MTTY0,MTTU0] = $1_ss;;";


IF MTTNvar>0 THEN
BEGIN
  write "%function [MTTX0,MTTY0,MTTU0] = $1_ss(...";
  FOR i := 1:MTTNvar DO
  BEGIN
     IF i<MTTNvar THEN write "%", MTTVar(i,1), ",..."
                  ELSE write "%", MTTVar(i,1), ");;";
  END;
END
ELSE write "%function [MTTX0,MTTY0,MTTU0] = $1_ss;;";


write "%Steady-state values for system $1";
write "%File $1_ss.m";
write "%Generated by MTT";


ON NERO;	% Suppress zero elements.

%Fortran switches - one line expressions
OFF echo;
ON fort$
cardno!* := 1$
fortwidth!* := 100$
OFF period$

write "MTTX0 = zeros(", MTTNx, ",1)";
write "MTTy0 = zeros(", MTTNy, ",1)";
write "MTTu0 = zeros(", MTTNu, ",1)";


MTTX0 := MTTX0;
MTTY0 := MTTY0;
MTTU0 := MTTU0;

SHUT "$1_ss.m";

