#! /bin/sh
######################################
##### Model Transformation Tools #####
######################################
# Bourne shell script: abg2lbl_fig2txt
#
# Acausal bond graph to causal bond graph: mfile format
###############################################################
## Version control history
###############################################################
## $Id$
## $Log$
## Revision 1.8 1999/11/09 22:32:41 peterg
## Under RCS ready for using arrays to contaain defaults.
##
## Revision 1.7 1998/07/04 10:37:21 peterg
## Major revision to include:
## aliases
## new Style
## prettyfied
##
## Revision 1.6 1998/03/05 10:09:47 peterg
## Corrected bug in writing "other" components
##
## Revision 1.5 1998/03/02 09:26:18 peterg
## Now does default CR and args for the basic components only
## SS,I,R,C,GY,TF
## C now has a default of effort input.
##
## Revision 1.4 1998/02/23 16:20:33 peterg
## Summary line just contains the model name
##
## Revision 1.3 1997/05/09 14:21:35 peterg
## Default to flow,component_name
##
# Revision 1.2 1997/03/19 12:08:01 peterg
# No longer writes out non-unique names - now done in rbg_fig2m
#
# Revision 1.1 1997/03/18 13:55:01 peterg
# Initial revision
#
###############################################################
# P.J.Gawthrop March 1997
# Copyright (c) P.J.Gawthrop, 1997
infofile='mtt_info.txt'
typefile="$1_type.sh"
# Remove the old log file
rm -f abg2lbl_fig2txt.log
rm -f $1_cbg.m
rm -f $typefile
rm -f $infofile
rm -f mtt_junk*
#Inform user
echo Creating $1_lbl.txt
( \
echo "%% Label file for system $1 ($1_lbl.txt)"; \
echo "%SUMMARY $1"; \
echo "%DESCRIPTION "; \
cat $MTTPATH/trans/m/rcs_header.txt; \
)>mtt_junk_top.txt
( \
echo; \
echo "%% Each line should be of one of the following forms:"; \
echo "% a comment (ie starting with %)"; \
echo "% component-name cr_name arg1,arg2,..argn"; \
echo "% blank"; \
echo; \
echo "% ---- Component labels ----"; \
)> mtt_junk_blurb.txt
awk '/:/ {print $NF}' $1_abg.fig | \
sed 's/\\001//' | \
sort | \
tee $1_raw_list | \
sort -u> $1_unique_raw_list
#Write out non-unique names
#echo 'Non-unique names (if any):'
#diff $1_unique_raw_list $1_raw_list | grep '>' | sed 's/>/ /'
#Write out the outline lbl file
grep -v '\[[0-9]*\]' $1_unique_raw_list | \
awk --field-separator ':' '
BEGIN {
}
{
##Aliases
if ($1 == "SS")
port_alias[++j] = $2;
else
alias[++i] = $2;
## Table of components
cr["SS"] = "SS"; arg["SS"] = "external,external";
cr["Se"] = "SS"; arg["Se"] = "external";
cr["Sf"] = "SS"; arg["Sf"] = "external";
cr["De"] = "SS"; arg["De"] = "external";
cr["Df"] = "SS"; arg["Df"] = "external";
cr["R"] = "lin"; arg["R"] = sprintf("flow,%s", $2);
cr["C"] = "lin"; arg["C"] = sprintf("effort,%s", $2);
cr["TF"] = "lin"; arg["TF"] = sprintf("flow,%s", $2);
cr["GY"] = "lin"; arg["GY"] = sprintf("flow,%s", $2);
## Heading
if (Component !~ $1) print "\n% Component type", $1
## Component
print "\t" $2 "\t" cr[$1] "\t\t" arg[$1];
Component=$1
}
END{
print "\n% Port aliases" >> "mtt_junk_alias.txt";
for (k=1;k<=j;k++){
if (port_alias[k] ~ "\\["){ # Only do ports
port_name = substr(port_alias[k],2,length(port_alias[k])-2);
print "%ALIAS\t" port_name "\t" port_name >> "mtt_junk_alias.txt";
}
}
print "\n% Argument aliases" >> "mtt_junk_alias.txt";
for (k=1;k<=i;k++){
print "%ALIAS\t\$" k "\t" alias[k] >> "mtt_junk_alias.txt";
}
}' > mtt_junk_body.txt
cat mtt_junk_top.txt mtt_junk_alias.txt mtt_junk_blurb.txt mtt_junk_body.txt > $1_lbl.txt