Artifact c272bb180dae7d08266a0d0b8a080dd9bf44731d0f3b233aecbf45e1abf150ce:
- Executable file
mttroot/mtt/bin/mtt
— part of check-in
[a9bb0711f0]
at
2004-08-29 13:17:30
on branch origin/master
— Added rules to use sae (sorted algebraic equations) instead
of ae if sorted equations are being used.Converted temporary variable names to lowercase in sorted
sympar.h to match code output from mtt_r2m. (user: geraint@users.sourceforge.net, size: 118153) [annotate] [blame] [check-ins using] [more...]
#! /bin/sh
######################################
##### Model Transformation Tools #####
######################################
# Bourne shell script: mtt
# This is the main shell script for MTT
# P.J.Gawthrop Oct 1989, Dec 1989, 1990, 1991, Oct 1993, Dec 1993, Jan 1994, Dec 95, Nov 1996.
# Copyright (c) P.J.Gawthrop, 1989, 1990, 1991, 1993, 1994, 1995, 1996, 1997,1998,1999
# Copyright (C) 2000 by Peter J. Gawthrop
# Copyright (C) 2001 by Peter J. Gawthrop
###############################################################
## Version control history
###############################################################
## $Header$
## $Log$
## Revision 1.396 2004/08/29 02:59:30 geraint
## Added -make-sort option and rules to generate simulation using sesx and sesy.
##
## Revision 1.395 2004/08/28 23:48:06 geraint
## Removed dependency of ae.r on cse.r if -ae is not specified as an option.
## This prevents an implicit -A and thus removes a dependency on cse
## (and hence Reduce) for sorted systems.
##
## Revision 1.394 2004/08/28 22:14:12 geraint
## Removed -ibg option: now the default method.
##
## Revision 1.393 2004/08/26 16:20:17 geraint
## Creates postscript files of either dia or fig bond graphs.
##
## Revision 1.392 2004/08/26 12:50:12 geraint
## Replaced some implicit rules with explicit tests and patterns.
## Better than having make search through every possible implicit rule.
##
## Revision 1.391 2004/08/26 00:07:06 geraint
## Added rule to create cbg.dia.
##
## Revision 1.390 2004/08/13 09:49:13 geraint
## Only use one level of MTT_work to prevent MTT from repeatedly copying or creating the same files.
##
## Revision 1.389 2004/08/13 01:32:03 geraint
## Use ibg.m by default for both Xfig and Dia models.
##
## Revision 1.388 2004/08/11 08:18:07 geraint
## Ignores diy make files if the file ${rep}_rep.make.ignore exists, thus allowing user-defined makefiles to use the default MTT rules for languages which they do not override. See odes_rep.make and odeso_rep.make for an example of its use.
##
## Revision 1.387 2004/08/11 07:44:18 geraint
## Included cmp.m as a prerequisite for abg.m
##
## Revision 1.386 2004/08/05 00:02:57 geraint
## Uses lbl2cmp_txt2m.pl to generate _cmp.m.
##
## Revision 1.385 2004/08/02 20:25:47 geraint
## abg.m requires lbl.txt to allow units to be checked.
##
## Revision 1.384 2004/08/01 20:13:30 geraint
## ibg2abg transformation does not require lbl.txt (directly)
##
## Revision 1.383 2004/08/01 19:50:07 geraint
## Moved rules for ibg.m and abg.m so that -ibg can be used with dia models.
## Need to create cmp.m files before this combination will work.
##
## Revision 1.382 2003/09/23 20:53:49 geraint
## Updated version number (5.0).
##
## Revision 1.381 2003/08/10 18:56:55 gawthrop
## Explicitly generate eps files
##
## Revision 1.380 2003/08/06 14:44:51 gawthrop
## Don't include -q or -u in long file names via ${__ARGS}
##
## Revision 1.379 2003/08/06 10:33:42 gawthrop
## User now warned not to use -c which is unsupported.
##
## Revision 1.378 2003/08/04 09:15:09 gawthrop
## -ss switch reinstated
##
## Revision 1.377 2003/06/11 15:48:02 gawthrop
## Copies (aliased) subsystems first.
## Include switches in .ps file names.
##
## Revision 1.376 2003/05/09 09:46:35 gawthrop
## Fixed html output of figures
##
## Revision 1.375 2003/05/08 18:42:52 gawthrop
## Generate pdf from ps (using hyperref package for links etc)
##
## Revision 1.374 2003/04/17 20:57:27 geraint
## Added -sort option to allow direct generation of ode2odes.m using sese.m
## instead of ode/csex.
##
## "mtt -sort rc odeso view" works without Reduce installed!!!
##
## Revision 1.373 2003/04/17 20:07:32 geraint
## Added rule to create _sese.m
##
## Revision 1.372 2003/03/24 12:03:36 gawthrop
## Added -I switch to sese transformation
##
## Revision 1.371 2003/03/13 15:47:35 gawthrop
## Added sese rep.
##
## Revision 1.370 2003/02/11 20:04:08 geraint
## Reverted to line-by-line optimisation as default and added caution to
## description of -optg.
##
## Global optimisation has been observed to create assignments using
## uninitialised temporary variables.
##
## Revision 1.369 2003/02/06 20:28:40 geraint
## Added -ibg switch to aid testing during development of ibg2abg.m
##
## Revision 1.368 2002/12/12 17:18:41 geraint
## Fixed [ 647664 ] Namespace clash: LANG
## Prepended MTT_ to SYS, OPTS and LANG environment variables.
##
## Revision 1.367 2002/12/09 00:14:08 geraint
## Hierarchical dia and mixed dia/fig bond graphs now working.
##
## Revision 1.366 2002/12/06 21:56:21 geraint
## Cosmetic change: removed commented-out lines.
##
## Revision 1.365 2002/12/06 12:45:25 gawthrop
## Simplified rule for sub.sh: both fig and dia go via cmp.txt now.
##
## Revision 1.364 2002/12/03 23:28:44 geraint
## Added dependencies for bond graphs built with dia.
##
## Revision 1.363 2002/11/30 13:39:50 gawthrop
## Split abg2lbl_fig2txt into two parts:
## abg2cmp_fig2txt
## cmp2lbl_txt
## and incorporated into mtt
##
## Revision 1.362 2002/09/19 08:12:53 gawthrop
## Merged version after documentation update
##
## Revision 1.361 2002/09/16 08:08:00 geraint
## Merged changes from global-optimisation branch.
##
## Revision 1.360.2.3 2002/09/16 07:59:26 geraint
## Changed default optimisation to global.
##
## Revision 1.360.2.2 2002/09/04 10:44:59 geraint
## Added option to specify number of tmp variables declared (-ntmpvar <N>).
##
## Revision 1.360.2.1 2002/09/03 23:44:43 geraint
## adding global optimisation (-optg).
##
## Revision 1.360 2002/08/20 15:51:16 gawthrop
## Update to work with ident DIY rep
##
## Revision 1.359 2002/08/07 14:27:14 geraint
## Changes to make "-i dassl" work again.
##
## Revision 1.358 2002/08/07 11:04:40 geraint
## Now updates timestamp on lbl.txt after processing in make. This eliminates the delay where MTT spends a long period of time uselessly recursing through the model on subsequent passes if the label file is older than the bondgraph.
##
## Revision 1.357 2002/06/28 10:13:40 geraint
## Includes fix_c.r in ese2rdae and def2write_r to eliminate occurrances of x**y.
##
## Revision 1.356 2002/06/17 13:14:50 geraint
## Fixed some rules to reduce number of implicit rule searches.
##
## Revision 1.355 2002/06/10 23:18:44 geraint
## Adjusted cr.h comment delimiters to be C compliant.
##
## Revision 1.354 2002/06/10 10:43:19 gawthrop
## ode2odes now prerequisite for sim.m and ssim.m
##
## Revision 1.353 2002/05/28 18:08:38 geraint
## Fixed [ 547294 ] CRs are not sought from MTT_CRS.
##
## Revision 1.352 2002/05/24 11:04:10 geraint
## Removed unnecessary message about *.log file not existing when -D option is used.
##
## Revision 1.351 2002/05/23 17:08:20 geraint
## `mtt sys sfun zip` now produces an input block and an interface block for MTT models.
## Models can be embedded within larger Simulink models by the 2 ports.
## The user must edit 2 code blocks in <sys>_sfun_interface.c before compiling with mex.
##
## Revision 1.350 2002/05/21 08:45:36 gawthrop
## DIY reps: no longer skips rep if file exists already.
## Avoids problems in rep.txt when options change
##
## Revision 1.349 2002/05/20 10:29:59 gawthrop
## -oct now forces an m target language to be oct
## (if the rep is an the list: "ae input logic numpar simpar state")
##
## Revision 1.348 2002/05/20 08:50:12 geraint
## Cleans _sfun_ae.mexglx.
##
## Revision 1.347 2002/05/20 07:12:05 gawthrop
## Trying to get oct files generated with -oct
##
## Revision 1.346 2002/05/17 11:15:38 gawthrop
## Messages about copying when using -dr now only appear in verbose (-v) mode.
##
## Revision 1.345 2002/05/15 14:22:25 geraint
## Code for Simulink S-function target written direct to sfun.cc instead of
## calling .mexglx files. This eliminates the sfun dependency on Octave
## ColumnVectors. sys_sfun.cc should build directly on a MS Windows machine
## (can't test this yet).
##
## added sfun.zip target to create source code to export.
##
## Revision 1.344 2002/05/11 01:14:17 geraint
## Fix for [ 553218 ] simpar.oct and simpar.m different.
## Translation added between ColumnVector in base .cc and Octave_map in .oct.
##
## Revision 1.343 2002/05/10 14:07:16 geraint
## Preserve .cc files.
##
## Revision 1.342 2002/05/10 13:24:58 geraint
## Added initial support for building Simulink S-functions.
## Rates do not update properly yet.
## Inertial switches do not work yet.
## Implicit integration not supported yet.
##
## build with: mtt -i euler MotorGenerator sfun mexglx.
##
## Revision 1.341 2002/05/09 15:40:22 gawthrop
## -dr touches copied files to redo timestamp
##
## Revision 1.340 2002/05/08 22:13:47 geraint
## Removed redundant path from mtt_*.cc targets in mexglx build line.
##
## Revision 1.339 2002/05/08 21:32:26 geraint
## Tidied up $1_ode2odes_*.* targets and renamed dummies as *.stamp.
##
## Revision 1.338 2002/05/08 16:03:32 geraint
## Added mex support for ode2odes: mtt sys ode2odes mexglx.
## This mex stuff seems to require octave2.1-headers.
##
## Revision 1.337 2002/05/08 14:51:03 geraint
## Moved matlab/octave data type conversion functions to a separate file.
##
## Revision 1.336 2002/05/07 23:50:34 geraint
## Preliminary support for Matlab dynamically linked shared objects:
## invoke with: mtt -cc sys rep mexglx
## ode2odes support is not yet included.
##
## Revision 1.335 2002/05/01 17:30:55 geraint
## Improved pre-processor directives to better accommodate future alternatives (matlab)
## if necessary.
##
## Revision 1.334 2002/05/01 14:10:22 gawthrop
## Added -dr foo (reads from dir foo) option
##
## Revision 1.333 2002/04/28 18:41:26 geraint
## Fixed [ 549658 ] awk should be gawk.
## Replaced calls to awk with call to gawk.
##
## Revision 1.332 2002/04/26 23:19:00 geraint
## Fixed path to info files for "mtt info".
##
## Revision 1.331 2002/04/19 09:24:29 gawthrop
## 2 changes to ode2odes_out generation: only compiles the specified c
## file; outside the computation=c clause
##
## Revision 1.330 2002/04/17 10:03:12 geraint
## Marked .sg as a major representation.
##
## Revision 1.329 2002/04/16 14:58:00 gawthrop
## mtt copy does NOT now copy the CVS directory
## $directory --> ${directory} (just to be tidy)
##
## Revision 1.328 2002/02/19 16:27:05 geraint
## Changes to make MTT work out of the box with Debian.
##
## Revision 1.327 2001/11/15 02:56:17 geraint
## Added DASSL as an option for solution of algebraic equations (-ae dassl).
## Requires octave-2.1.35.
##
## Revision 1.326 2001/10/26 01:01:47 geraint
## fixcc when rdae_is_dae (-cr).
##
## Revision 1.325 2001/10/11 03:15:55 geraint
## Fixed make dependencies for c++ simulation code
## - re-simulation no longer required for different output format.
##
## Revision 1.324 2001/10/05 23:39:43 geraint
## Made odes.dat2 .PRECIOUS to prevent deletion when simulation receives ^C.
##
## Revision 1.323 2001/08/08 02:14:59 geraint
## Rationalisation of solver code, beginning with algebraic solvers.
##
## Revision 1.322 2001/08/01 04:06:07 geraint
## Added -i dassl for -cc and -oct.
##
## Revision 1.321 2001/07/27 23:43:34 geraint
## Added -cc to usage options (required for use with xmtt).
##
## Revision 1.320 2001/07/27 23:38:38 geraint
## Changed comment below (# SUMMARY) - fixes xmtt.
##
## Revision 1.319 2001/07/27 23:29:10 geraint
## *** empty log message ***
##
## Revision 1.318 2001/07/24 04:17:30 gawthrop
## Removed all " from # SUMMARY lines - messes up xmtt
##
## Revision 1.317 2001/07/24 00:55:17 gawthrop
## Resolved clashes -- marked with ## >>>
##
## Revision 1.316 2001/07/22 19:24:03 geraint
## Multiple '-v' increases verbosity.
##
## Revision 1.315 2001/07/13 04:54:04 geraint
## Branch merge: numerical-algebraic-solution back to main.
##
## Revision 1.314 2001/07/13 04:19:03 gawthrop
## Now loads _subs.r with _cr.r file when using -cr option
##
## Revision 1.313 2001/06/13 14:53:59 gawthrop
## MTT now gas the double-colon option in the abg.fig file
## eg R:r:a^2+3*b
##
## Revision 1.312 2001/06/11 19:43:49 gawthrop
## MTT is now much more sophisticated in generating lbl files
## Labels can contain maths
## Repetative components are now broken
##
## Revision 1.311 2001/05/26 18:36:43 gawthrop
## Further modifications. Now works on rcPPP
## -- next jobs:
## add identification to ppp_nlin_sim
## create real-time ppp_nlin_run
##
## Revision 1.310 2001/05/08 08:30:12 gawthrop
## Added line to reverse the x^y --> pow(x,y) in default _simp file to
## prettyfy LaTeX
##
## Revision 1.309.2.3 2001/07/13 04:02:31 geraint
## Implemented numerical algebraic solution for _ode2odes.oct.
##
## Revision 1.309.2.2 2001/06/05 03:20:39 geraint
## added -ae option to select algebraic equation solution method.
##
## Revision 1.309.2.1 2001/05/04 04:07:24 geraint
## Numerical solution of algebraic equations.
## sys_ae.cc written for unsolved inputs.
## Solution of equations using hybrd from MINPACK (as used by Octave fsolve).
##
## Revision 1.309 2001/04/28 03:15:03 geraint
## Fixed comment (interfered with "mtt help representations").
##
## Revision 1.308 2001/04/25 22:17:45 geraint
## Fixed icd.txt2 dependency.
##
## Revision 1.307 2001/04/15 21:15:41 geraint
## Added interface definition rep: _ICD.(txt|c|cc|m).
##
## Revision 1.305 2001/04/11 09:44:26 gawthrop
## Fixed cc and c problems to do with pow(x,y) and integers
## mtt/lib/reduce/fix_c.r is included in rdae2dae and cse2smx_lang for
## -c, -cc and -oct options
##
## Revision 1.304 2001/04/11 07:35:22 gawthrop
## Now uses system_cr.h in place of system.h in .c rep -
## compatible with older code
##
## Revision 1.303 2001/04/10 12:54:50 gawthrop
## Minor fixes for sensitivity versions
##
## Revision 1.302 2001/04/06 05:24:30 geraint
## -stdin for .cc reps.
##
## Revision 1.301 2001/04/05 03:46:12 geraint
## Added mtt_prepend.sh, -p preserves time attribute of base file
## - eliminates error in dependencies due to update of ese.r by modpar.r.
##
## Revision 1.300 2001/04/04 10:06:49 gawthrop
## New ssim (sensitiveity simulation) rep
##
## Revision 1.299 2001/04/03 14:49:42 gawthrop
## Revised to incorporate new ssim (sensitivity simulation)
## representation (m only just now).
##
## Revision 1.298 2001/04/02 17:36:20 gawthrop
## Resolved $sys name clash when using -s
##
## Revision 1.297 2001/03/29 19:20:45 gawthrop
## Can now use c representations of crs when using -c option
##
## Revision 1.296 2001/03/27 01:07:34 geraint
## Improved determination of Octave version for ode2odes.exe creation.
## Removed FORCE check_update of .txts.
##
## Revision 1.295 2001/03/23 11:21:29 gawthrop
## Show -pdf oprion in help list
##
## Revision 1.294 2001/03/19 02:28:52 geraint
## Branch merge: merging-ode2odes-exe back to MAIN.
##
## Revision 1.293.2.8 2001/03/19 01:35:31 geraint
## Reverted forced update check to main branch form, ready for merge.
##
## Revision 1.293.2.7 2001/03/17 09:51:06 geraint
## Implemented Runge-Kutta IV fixed-step method (-i rk4).
##
## Revision 1.293.2.6 2001/03/03 06:50:38 geraint
## Added summary lines for ode2odes.
##
## Revision 1.293.2.5 2001/03/03 00:27:14 geraint
## Fixed ar options to work with GNU ar. Allow mtt to create dependencies for mtt_%.cc when making mtt_%.oct.
##
## Revision 1.293.2.4 2001/03/02 00:45:21 geraint
## Separated Euler and Implicit methods in .cc code and dependencies.
##
## Revision 1.293.2.3 2001/03/01 05:05:53 geraint
## Minor revisions.
##
## Revision 1.293.2.2 2001/02/23 03:53:53 geraint
## Minor revisions. (ode2odes.exe works on GNU/Linux and ~GNU/Irix)
##
## Revision 1.293.2.1 2001/02/22 06:41:40 geraint
## Initial merge of ode2odes.exe into main mtt.
## standalone_rep.make deleted: rules moved to mtt, variables to mttrc.
##
## Revision 1.293 2001/02/06 04:39:08 geraint
## Added _standalone.exe representation.
##
## Revision 1.292 2001/02/05 17:27:40 gawthrop
## Make sure _def.r exists before creating _state.txt
##
## Revision 1.291 2000/12/27 14:50:40 peterg
## This is the first CVS version (4.9).
## Commented out code now deleted
##
## Revision 1.290 2000/12/05 09:59:37 peterg
## Generates $1_cr.h - allows inclusion of c functions for crs
##
## Revision 1.289 2000/12/05 09:01:52 peterg
## Changed == to =
##
## Revision 1.288 2000/12/01 17:59:01 peterg
## Added .PRECIOUS: %.cc to hang on to cc files - thanks Geraint
##
## Revision 1.287 2000/12/01 16:04:24 peterg
## More partitioning achieved -- now needs the connections to be properly
## sorted in cbg2ese_r
##
## Revision 1.286 2000/12/01 14:18:44 peterg
## -partition now partially works up to cse.m
## but need to think about indexing, struc files etc for subsystems.
##
## Revision 1.285 2000/11/27 11:51:21 peterg
## Fixed a few pdf /fig bugs
##
## Revision 1.284 2000/11/27 10:33:35 peterg
## -pdf option now coerces ps-->pdf
##
## Revision 1.283 2000/11/24 15:11:50 peterg
## -pdf switch for simple displays
##
## Revision 1.282 2000/11/24 14:53:53 peterg
## Added lagrange rep : lde.r and lde.tex
##
## Revision 1.281 2000/11/16 13:51:15 peterg
## Added units stuff
##
## Revision 1.280 2000/11/10 14:45:16 peterg
## Finished up changes to incorporate Geraint's cc stuff
##
## Revision 1.279 2000/11/08 09:51:52 peterg
## Started incorporating Geraints CC/oct conversions
##
## Revision 1.278 2000/11/07 16:39:21 peterg
## *** empty log message ***
##
## Revision 1.277 2000/10/17 09:54:07 peterg
## logic rep sorted out
##
## Revision 1.276 2000/10/15 09:30:31 peterg
## *** empty log message ***
##
## Revision 1.275 2000/10/12 18:38:47 peterg
## New method of sympar generation implemented - uses mtt_make_sympar
## Check/update of numpar.txt is forced.
##
## Revision 1.274 2000/10/12 15:11:54 peterg
## Added the update function for numpar only
##
## Revision 1.273 2000/10/10 21:00:27 peterg
## More changes for new code gneration
##
## Revision 1.272 2000/10/06 16:20:00 peterg
## added ode_write rule
##
## Revision 1.271 2000/10/03 12:14:25 peterg
## Version 4.8
##
## Revision 1.270 2000/10/03 12:13:51 peterg
## Corrected MTT_LIB paths
##
## Revision 1.269 2000/09/30 14:12:03 peterg
## Fixed bug with no-parameter systems - changed mtt_txt2m and mtt_m2p
##
## Revision 1.268 2000/09/27 16:15:55 peterg
## Now sh (as opposed to bash) compatible - fixed dat22dat again
##
## Revision 1.267 2000/09/21 10:08:30 peterg
## Version 4.7.1 - bug in odes.dat representation fixed in dat22dat
##
## Revision 1.266 2000/09/19 07:47:38 peterg
## fig2dev back to eps - ps produces a4 style output.
##
## Revision 1.265 2000/09/19 07:45:28 peterg
## Version 4.7
##
## Revision 1.264 2000/09/15 08:37:27 peterg
## Fixed bug using -sub in cbg view
##
## Revision 1.263 2000/09/15 07:33:35 peterg
## Replace fig2dev language eps by ps to avoid version problem.
##
## Revision 1.262 2000/09/14 17:16:33 peterg
## Fixes some outstanding bugs:
## perpendicular strokes in cbg.fig
## proper display of hierachical cbg file (-sub and -viewlevel)
##
## Revision 1.261 2000/09/14 12:43:46 peterg
## view of ps s files now uses -sub and -viewlevel options
##
## Revision 1.260 2000/09/14 09:59:08 peterg
## Added -viewlevel switch
##
## Revision 1.259 2000/09/11 08:21:27 peterg
## Introduced MML - but for _tf rep only.
##
## Revision 1.258 2000/09/11 08:17:28 peterg
## Extended _simp.r to incude default switches
##
## Revision 1.257 2000/09/02 15:53:53 peterg
## Now does partitioning up to dae.view
##
## Revision 1.256 2000/09/02 14:24:06 peterg
## -sub switch introduced - works up to dae.r
##
## Revision 1.255 2000/08/30 11:43:04 peterg
## Put in the -opt switch for code optimisation
##
## Revision 1.254 2000/08/29 09:59:47 peterg
## Version 4.5 -- includes code optimisation using the "Scope" package in reduce
##
## Revision 1.253 2000/08/24 08:53:35 peterg
## New makesubs to create a .subs.r file with output switches to simplify output.
##
## Revision 1.252 2000/08/09 10:31:17 peterg
## Use -d option to find if its a book-style report
##
## Revision 1.251 2000/08/04 10:54:33 peterg
## Rationalised call to gcc using -lp2c to access p2c lib.
##
## Revision 1.250 2000/08/01 19:29:27 peterg
## Explcit zero of input in the simulations
##
## Revision 1.249 2000/08/01 12:28:02 peterg
## VERSION 4.4
## euler now works
## stepfactor applies to both int. algorithms
##
## Revision 1.248 2000/07/20 07:46:07 peterg
## Version 4.3
##
## Revision 1.247 2000/07/13 07:21:12 peterg
## Interface to Octave Control Systems Toolbox (OCST) - mtt2sys.m
##
## Revision 1.246 2000/05/21 18:00:11 peterg
## Make manual if not already done.
## Released 4.2 version
## (Train Durham -- Glasgow).
##
## Revision 1.245 2000/05/19 17:50:10 peterg
## Changes to state rep - now has parameter
##
## Revision 1.244 2000/05/19 14:19:46 peterg
## Added library path for representations
##
## Revision 1.243 2000/05/19 11:36:36 peterg
## Added logic rep.
##
## Revision 1.242 2000/05/18 20:12:02 peterg
## Version 4.2
##
## Revision 1.241 2000/05/16 11:42:14 peterg
## Addded /usr/lib/libp2c.a to gcc
##
## Revision 1.240 2000/05/10 09:38:58 peterg
## Added Make to list of copied files.
##
## Revision 1.239 2000/04/11 18:08:33 peterg
## Fixed cse.tex bug
##
## Revision 1.238 2000/04/10 10:06:41 peterg
## Sorted out implicit rules for p2oct conversion
##
## Revision 1.237 2000/04/07 19:10:24 peterg
## New smxa and smxax reps
##
## Revision 1.236 2000/04/06 10:55:36 peterg
## Removed debug lines
##
## Revision 1.235 2000/04/06 10:52:53 peterg
## Replace $PWD with `pwd` for sh compatibility
##
## Revision 1.234 2000/04/04 16:14:08 peterg
## Sorted mtt help
##
## Revision 1.233 2000/03/16 10:16:11 peterg
## Clean no longer zaps the abg.m files
##
## Revision 1.232 2000/03/16 09:43:35 peterg
## Put in $mtt_switches in mtt comand line when creating _state.txt and
## _input.txt
##
## Revision 1.231 2000/03/15 21:24:23 peterg
## Version 4.1:
## Fixed problems with -abg mode
## Old-style SS lbl no longer supported
##
## Revision 1.230 2000/03/15 20:31:06 peterg
## Replaced lbl2cr by abg2cr_m2txt
##
## Revision 1.229 2000/03/15 19:39:40 peterg
## Replaced sub creation cmp2sub_m2sh by abg2sub_m2sh
##
## Revision 1.228 2000/03/07 10:54:14 peterg
## Added $1_lbl.txt to sympar.txt
##
## Revision 1.227 2000/02/16 15:05:46 peterg
## Replaced spurious 8spaces by tab
##
## Revision 1.226 2000/02/10 18:51:31 peterg
## Included OFF exp; in subs.r default
##
## Revision 1.225 2000/02/10 15:03:10 peterg
## Put subs.r file into the m-code generation -- allows the off exp;
## switch for simpler expresions.
##
## Revision 1.224 2000/02/08 10:27:04 peterg
## Removed obselete .h stuff
##
## Revision 1.223 2000/02/08 09:55:00 peterg
## Added .oct language for ode
## -- octave loadable builtin
##
## Revision 1.222 1999/12/23 10:03:42 peterg
## Added $1_sympars.txt to numpar.m target
##
## Revision 1.221 1999/12/22 05:15:51 peterg
## Set to version 4.0.
##
## Revision 1.220 1999/12/17 03:17:57 peterg
## reps_made is now $1_reps_made - stops clash between two reps per directory
##
## Revision 1.219 1999/12/14 00:36:50 peterg
## Changed $source to $stdin and added to mtt_m2p arg list
##
## Revision 1.218 1999/12/03 00:04:50 peterg
## Version to eric.
## -stdin switch added
##
## Revision 1.217 1999/11/16 22:15:55 peterg
## Changed compcopy to test for abg, not lbl file
##
## Revision 1.216 1999/11/16 05:53:21 peterg
## Added sensitivity (-s) switch
##
## Revision 1.215 1999/11/15 22:45:31 peterg
## Reorganised integration method using -i switch
## Introduced -r (reset) switch
##
## Revision 1.214 1999/11/14 21:27:11 peterg
## *** empty log message ***
##
## Revision 1.213 1999/09/02 23:24:40 peterg
## Now explicitly generates executable _ode2odes.out file
## Which takes command line arguments
##
## Revision 1.212 1999/08/18 06:20:32 peterg
## Put -u back again .....
##
## Revision 1.211 1999/08/17 04:10:38 peterg
## Removed the -u switch from cp - it doesnt work on non GNU cps
##
## Revision 1.210 1999/08/02 12:52:12 peterg
## Removed redundant .p copying.
##
## Revision 1.209 1999/07/27 03:50:13 peterg
## Fixed odeo.p bug.
## Fixed compound object bug in fig.
##
## Revision 1.208 1999/07/20 23:43:05 peterg
## V 3.8 ( to Eric)
##
## Revision 1.207 1999/04/02 07:17:37 peterg
## Upped version to 3.6 -- the new implicit solver with switches
##
## Revision 1.206 1999/04/02 06:28:54 peterg
## New implicit method - solves numerical prob with ISW
##
## Revision 1.205 1999/03/15 23:27:43 peterg
## Modified generation of odes.dat2 data
##
## Revision 1.204 1999/03/15 05:53:33 peterg
## Put in user-defined representations
##
## Revision 1.203 1999/03/08 03:51:12 peterg
## Version 3.5 for Linux Red Hat 5.2 (Newcastle)
##
## Revision 1.202 1999/02/17 01:59:20 peterg
## Now handles html copy correctely (ie mv directory to ..)
## Fixed path probs with html
##
## Revision 1.201 1999/02/16 03:50:09 peterg
## Removed explicit _smx targets
##
## Revision 1.200 1998/12/03 17:11:03 peterg
## Added -dc (derivative causality) switch.
##
## Revision 1.199 1998/12/03 16:53:50 peterg
## Now completes causality using component, not bond, status.
##
## Revision 1.198 1998/11/20 16:12:30 peterg
## Now copies aliased systems BEFORE generating rgb etc.
##
## Revision 1.197 1998/11/20 09:00:45 peterg
## Number of changes to underlying tools
##
## Revision 1.196 1998/11/10 11:55:40 peterg
## Added $info_switch to abg2cbg invocation
##
## Revision 1.195 1998/10/28 13:58:57 peterg
## Added $1_sympars.txt prerequisite to _tf.m target
##
## Revision 1.194 1998/10/20 09:00:43 peterg
## Added a few summary lines - to help with xmtt
##
## Revision 1.193 1998/10/01 16:11:42 peterg
## Implicit integration now handles switches
##
## Revision 1.192 1998/09/29 20:09:46 peterg
## Fixed nyfr and nifr plotting bug
##
## Revision 1.191 1998/09/02 12:05:39 peterg
## Added INPUT to simpar
## Revision 1.190 1998/09/02 11:48:51 peterg
## VERSION 3.2 (Swansea)
## abg data structure now uses explicti port and subsystem lists so that
## processing is in predetermined order.
##
## Revision 1.189 1998/08/31 10:49:15 peterg
## Minor changes to -abg operation
##
## Revision 1.188 1998/08/27 08:33:21 peterg
## New reduce integration methods - euler/Implicit only
##
## Revision 1.187 1998/08/25 20:06:56 peterg
## New data structure for abg.m and cbg.m
##
## Revision 1.186 1998/08/18 10:49:05 peterg
## VERSION 3.1 release
##
## Revision 1.185 1998/08/18 09:21:14 peterg
## Removed "" from default simpar file.
##
## Revision 1.184 1998/08/18 09:08:26 peterg
## Now grabs components (specified in lbl file as alias) at the rbg stage
## - this makes sure that they are there when needed.
##
## Revision 1.183 1998/08/18 08:48:43 peterg
## Sorted out problem with ifeq ($REPTYPE,data) block - added else.
##
## Revision 1.182 1998/08/17 15:48:39 peterg
## Replaced SVD solver with LUD solver
##
## Revision 1.181 1998/08/15 13:45:28 peterg
## Added new integration methods in Pascal/c version
## Revised the various translations appropriately
##
## Revision 1.180 1998/08/12 14:15:13 peterg
## Implicit integration - c implemetation now included.
##
## Revision 1.179 1998/08/12 12:29:18 peterg
## Put back some of the args stuff -- needed for plots.
##
## Revision 1.178 1998/08/11 13:38:35 peterg
## Zapped the obsolete args stuff
##
## Revision 1.177 1998/07/30 17:32:44 peterg
## VERSION 3.0
##
## Revision 1.176 1998/07/27 20:25:15 peterg
## Sorted out new mtt_r2m
##
## Revision 1.175 1998/07/27 18:49:09 peterg
## Fixed the frequency stuff
##
## Revision 1.174 1998/07/27 07:10:10 peterg
## Removed dummy global stuff.
##
## Revision 1.173 1998/07/26 14:38:20 peterg
## *** empty log message ***
##
## Revision 1.172 1998/07/26 11:13:38 peterg
## Fixed name classes with globs - ide is that all @strong{MTT} variables
## start with @strong{MTT}
##
## Revision 1.171 1998/07/25 20:37:22 peterg
## Removes -s (switches) option -- they are now assumed to be present
## I still need to shift the old switch
##
## Revision 1.170 1998/07/25 19:16:22 peterg
## Sorted out sympar + switch variables - new sympars rep combines both
##
## Revision 1.169 1998/07/25 16:35:12 peterg
## Incorporated mtt_p2c (uses p2c)
##
## Revision 1.168 1998/07/25 09:44:25 peterg
## Uses Pascal as step on the way to c code -- MUCH nicer!
## State and input now use the simple default - no steady states
##
## Revision 1.167 1998/07/24 17:10:34 peterg
## *** empty log message ***
##
## Revision 1.166 1998/07/22 08:37:30 peterg
## Implicit integration now the default - for octave anyway.
##
## Revision 1.165 1998/07/19 16:00:22 peterg
## Added smx representation
##
## Revision 1.164 1998/07/17 19:45:58 peterg
## Component aliases implemented.
##
## Revision 1.163 1998/07/17 08:27:33 peterg
## Added find target
##
## Revision 1.162 1998/07/16 16:14:27 peterg
## Now stops if a transformation forces error.
##
## Revision 1.161 1998/07/08 11:21:32 peterg
## Added -I switch
##
## Revision 1.160 1998/07/04 11:38:51 peterg
## Version 3.0-- (Seascale)
##
## Revision 1.159 1998/07/04 11:37:43 peterg
## Aliases implemented for parameters + lots of associated goodies
## New-style lbl files - no more SS nonsense.
##
## Revision 1.158 1998/07/03 09:06:39 peterg
## Alias implemented for ports
##
## Revision 1.157 1998/07/01 10:22:11 peterg
## Moved tidy stuff to end of preamble -- needed to make muti-plot copy
## correctely
## Now copies ps file with arguments to WD
##
## Revision 1.156 1998/06/26 14:19:43 peterg
## Copy hidden files (eg .octaverc) in tidy mode
##
## Revision 1.155 1998/06/24 07:43:42 peterg
## Version 2.91 -- includes implicit integration (octave)
##
## Revision 1.154 1998/06/17 14:14:09 peterg
## Removed struc.txt prerequisite for simpar.txt - switch version
##
## Revision 1.153 1998/05/28 09:36:38 peterg
## --version and --versions switch
##
## Revision 1.152 1998/05/24 15:43:10 peterg
## Added symbolic solution of alg. equations (-A)
##
## Revision 1.151 1998/05/23 16:18:37 peterg
## ordinary differential equation.m files generated with the new ode2lang
## method.
##
## Revision 1.150 1998/05/19 19:47:37 peterg
## Updated the odesso representation to use simpar file.
##
## Revision 1.149 1998/05/14 15:16:13 peterg
## Sorted out Differential-Algebraic Equation simulation
## Added LSODE methode to ordinary differential equation simulation
##
## Revision 1.148 1998/05/12 14:42:07 peterg
## Added ese_tidy and new method for organising ese files -
## Each subsystem has an array of variables - effort, flow and state for
## each bond
##
## Revision 1.147 1998/04/15 18:41:47 peterg
## Fixed various probs with multiple systems in one directory
##
## Revision 1.146 1998/04/04 11:00:20 peterg
## Modified various parts to allow coercing directions at ports
##
## Revision 1.145 1998/04/03 11:17:44 peterg
## VERSION 2.9
##
## Revision 1.144 1998/03/27 13:32:25 peterg
## Removed sympar prerequisites from ss reps.
##
## Revision 1.143 1998/03/22 21:14:03 peterg
## Added obspar.r representation
## Help now case insensitive
##
## Revision 1.142 1998/03/20 15:09:26 peterg
## Changed order of prerequisites for _dae.r to put _rdae.r first.
##
## Revision 1.141 1998/03/11 10:45:19 peterg
## Added rclean - recursive clean
##
## Revision 1.140 1998/03/09 10:23:30 peterg
## PS view now runs as a background process.
##
## Revision 1.139 1998/03/07 16:04:23 peterg
## Added some more txt view reps: input, lbl, numpar, state
##
## Revision 1.138 1998/03/07 15:23:40 peterg
## Uses sort_sympar to uniquely produce the sympar list.
##
## Revision 1.137 1998/03/07 14:04:17 peterg
## dae creation split into 2 parts:
## 1. create a raw (ie without constitutive relationship) dae (rdae)
## 2. add the raw dae to the crs to get the dae.
## reduce has less work to do with this approach
##
## Revision 1.136 1998/03/04 16:34:19 peterg
## New local (_cr.r) and generic (.cr) CR structure.
## CR and lbl now have view mode.
## CRS in abg_tex.
##
## Revision 1.135 1998/02/25 22:09:48 peterg
## Added simpar representation.
##
## Revision 1.134 1998/02/25 15:28:34 peterg
## Added state.m rep.
##
## Revision 1.133 1998/02/24 22:35:33 peterg
## Added -p (preserve) switch to cp in tidy mode.
##
## Revision 1.132 1998/02/24 22:33:23 peterg
## new state reresentation included
##
## Revision 1.131 1998/02/23 16:21:21 peterg
## Just do model name in summary line of lbl file
##
## Revision 1.130 1998/02/19 13:40:24 peterg
## Removed prerequisit from sspar.r target.
##
## Revision 1.129 1998/02/12 08:18:42 peterg
## VERSION 2.8 (St. Annes)
##
## Revision 1.128 1998/02/12 07:48:04 peterg
## Tidy mode copies all files (containing .) to work dir -- this makes
## sure that files such a .c .constitutive relationship go across.
##
## Revision 1.127 1998/02/11 19:36:29 peterg
## Only displays one level of cbg file now.
##
## Revision 1.126 1998/02/11 19:26:03 peterg
## Added verbose (-v) mode.
##
## Revision 1.125 1998/02/11 11:36:28 peterg
## Updated version control mode - make it untidy.
## cp --> cp -u after tidy-mode .
##
## Revision 1.124 1998/02/10 13:03:36 peterg
## Now includes controller transfer function (ctf).
##
## Revision 1.123 1998/02/09 13:51:04 peterg
## Fixed directory string bug.
##
## Revision 1.122 1998/02/06 15:02:26 peterg
## New default sspar -- sets all states to zero.
##
## Revision 1.121 1998/02/06 14:36:51 peterg
## Report on copying back from MTT_work
##
## Revision 1.120 1998/02/05 16:06:53 peterg
## Removed debugging lines.
## Auto parts in books.
##
## Revision 1.119 1998/02/05 15:04:25 peterg
## Fixed problem with book in tidy mode.
##
## Revision 1.118 1998/02/05 12:00:11 peterg
## Tidy mode now default.
## It seems to work ok but not for book type documents.
##
## Revision 1.117 1998/02/04 16:50:50 peterg
## Introduced the tidy (-t and -T) options
##
## Revision 1.116 1998/02/04 11:00:04 peterg
## Added view of subsystems.
##
## Revision 1.115 1998/01/29 19:37:31 peterg
## Fixed spurious call to X server bug
##
## Revision 1.114 1998/01/23 13:38:07 peterg
## VERSION 2.7
##
## Revision 1.113 1998/01/23 13:27:13 peterg
## Added state-feedback control representations:
## smc,smo,ssk,ssl
##
## Revision 1.112 1998/01/21 09:24:46 peterg
## Removed 'touch $1_rep.txt' -- perhaps best to do this by hand if
## necessary. As it is, it cuased probs wene reediting the _rep.txt file.
##
## Revision 1.111 1998/01/16 14:56:59 peterg
## Argument now correctely recognised as a string beginning with -
## (rather than containing -)
##
# Revision 1.110 1998/01/06 13:59:30 peterg
# Added rename function.
#
# Revision 1.109 1998/01/06 09:20:02 peterg
# Made LATEX2HTML an environment variable.
#
# Revision 1.108 1997/12/19 08:48:55 peterg
# Lille modifications - bicausal algebraic loops supported
#
## Revision 1.107 1997/12/11 10:59:50 peterg
## This is version 2.6
##
# Revision 1.106 1997/12/11 10:59:07 peterg
# Added debug -D switch + echos directory when -d switch used.
#
# Revision 1.105 1997/12/11 09:04:47 peterg
# Reduced default rep.txt file to just abg.txt -- this is to document
# components which may not be causally complete
#
# Revision 1.104 1997/12/07 21:05:10 peterg
# Removed a debbugging echo
#
## Revision 1.103 1997/12/07 20:10:36 peterg
## Fixed bugs with reprots and distinguish between book, article and
## section reports.
##
## Revision 1.102 1997/12/07 12:14:43 peterg
## Hnadles book, article and section reports seperately
##
## Revision 1.101 1997/12/06 18:54:53 peterg
## Now tidies up after itself.
## Major modifications to do a rep on a directory -- creates a book with
## each example as a chapter.
##
## Revision 1.100 1997/12/06 12:14:39 peterg
## Put a conditional around the PS data rep to check for set arguments.
##
## Revision 1.99 1997/12/04 22:06:53 peterg
## Added view arguments for graph plotting
##
## Revision 1.98 1997/12/04 10:58:15 peterg
## Tidied up switches
##
## Revision 1.97 1997/12/04 10:44:33 peterg
## Changed $cc to $CC
##
## Revision 1.96 1997/12/04 10:40:26 peterg
## Added -p switch - print enviromment variables
##
## Revision 1.95 1997/12/04 10:05:02 peterg
## Compiler now symbolocic $cc
##
# Revision 1.94 1997/11/20 11:23:16 peterg
# Changed gcc to cc
#
## Revision 1.93 1997/09/18 16:57:28 peterg
## _sympar.txt now has a second column - the system type from whence the
## parameter (in the first column) came.
## Done on the train Glasgow-Warrington !
##
## Revision 1.92 1997/09/11 17:08:46 peterg
## Added spreadsheet version of odeso
##
## Revision 1.91 1997/09/11 08:21:08 peterg
## copy utility split into two:
## copy: copies examples (copies the entire directory)
## compcopy: (just used internally) copies components.
##
## Revision 1.90 1997/08/30 19:35:39 peterg
## Added date to mtt line
##
## Revision 1.89 1997/08/26 15:20:25 peterg
## Added explicit evaluation of report representations
## Version now 2.5++
##
## Revision 1.88 1997/08/25 07:51:47 peterg
## Version 2.5.
##
## Revision 1.87 1997/07/27 13:11:11 peterg
## Added path checking code -- mtt_check_vars
##
# Revision 1.86 1997/06/29 19:05:51 peterg
# Seascale changes -- mainly to new rep format.
#
## Revision 1.85 1997/06/27 12:14:49 peterg
## Upped version to 2.4++
##
# Revision 1.84 1997/06/13 14:08:23 peterg
# Changed default rep.txt
#
# Revision 1.83 1997/06/13 09:18:28 peterg
# Removed all params.m
#
# Revision 1.82 1997/06/13 08:59:03 peterg
# Set to version 2.4
#
## Revision 1.81 1997/05/22 10:11:04 peterg
## Fixed dat2gdat bug (with parameters)
##
## Revision 1.80 1997/05/22 07:38:27 peterg
## Added command line info to .doc files (makedoc)
##
## Revision 1.79 1997/05/19 16:44:12 peterg
## Many changes to get rep.html mode working properly.
##
# Revision 1.78 1997/05/19 13:17:50 peterg
# Explicit inclusion of mtt.sty in .doc files -- latex2html prefers this
#
# Revision 1.77 1997/05/19 11:29:37 peterg
# Added desc.tex and abg.tex descriptions.
#
# Revision 1.76 1997/05/15 09:43:46 peterg
# New version of _input.txt for -s option
#
# Revision 1.75 1997/05/15 09:15:54 peterg
# Included switch.c in dependancy list for _input.c (when -s switch set)
#
# Revision 1.74 1997/05/13 16:58:02 peterg
# Added -s switch to get mtt to search for (Bond Graph) switches
#
## Revision 1.73 1997/05/09 09:18:45 peterg
## Put ./ in front of a.out (again)
##
# Revision 1.72 1997/05/06 13:54:21 peterg
# Changed gcc arguments for the ode simulation -- all files now included
# in the _odes.c file
#
# Revision 1.71 1997/05/03 15:50:18 peterg
# c functions not included in gcc arg list -- they are now included in
# the main prog.
#
# Revision 1.70 1997/05/03 14:17:13 peterg
# Now copies c utilities (eg dsvdcmp.c) from $MTTPATH/trans/c.
#
# Revision 1.69 1997/05/03 13:58:35 peterg
# Implicit integration for sm representation added.
#
# Revision 1.68 1997/05/01 08:39:20 peterg
# params.c and params.m not used any more.
# _numpar.txt is the common base from which _numpar.c and numpar.m is
# generated.
#
# Revision 1.67 1997/04/23 07:26:49 peterg
# Added -o switch -- ode and dae are the same
# Added switches to default menu
#
# Revision 1.66 1997/04/16 09:46:01 peterg
# More informative copy message
#
# Revision 1.65 1997/04/15 15:16:12 peterg
# Added structure (_struc) files.
# Fixed prob with dvi2ps conversion -- removed .doc extension.
#
# Revision 1.64 1997/04/09 09:26:44 peterg
# Added crcopy feature to pull crs from library -- similar to copy
# feature.
#
# Revision 1.63 1997/03/22 17:09:11 peterg
# Fixed bug in recursive cr.txt generation.
# Fixed bug in recursive sympar.txt generation.
#
# Revision 1.62 1997/03/20 17:48:50 peterg
# Better _input.c file default.
#
# Revision 1.61 1997/03/20 16:53:01 peterg
# Generates c files using include statements.
#
# Revision 1.60 1997/03/20 10:25:41 peterg
# Generates a compehensive default params file.
#
# Revision 1.59 1997/03/19 10:14:04 peterg
# Now produces a stripped acausal bond graph.
#
# Revision 1.58 1997/03/18 17:58:12 peterg
# Generates label files containing all variables in fig file.
# Generates sympar file for all levels in system.
# Generates txt version of sympar file.
#
# Revision 1.57 1997/03/10 09:24:58 peterg
# a.out now deleted in the clean operation
#
# Revision 1.56 1997/03/05 08:24:09 peterg
# Delete a.out after it has run.
#
# Revision 1.55 1997/02/24 19:31:10 peterg
# Removed numpar.m requirement from .m files
#
## Revision 1.54 1997/02/09 20:33:13 peterg
## Replaced a.out with ./a.out
##
## Revision 1.53 1997/02/09 20:30:04 peterg
## Copied from tweedledum.
##
# Revision 1.54 1997/02/07 13:33:03 peterg
# Added ; to _input.c file - bug fix.
#
# Revision 1.53 1997/02/07 13:25:04 peterg
# Version 2.3
#
# Revision 1.52 1997/01/21 22:55:59 peterg
# Minor bug fixes
#
## Revision 1.51 1997/01/21 13:16:40 peterg
## Included transformations to language c for:
## ode
## params
## numpar
##
## Revision 1.50 1996/12/21 19:46:52 peterg
## Set to 2.2++
## Changed \* --> \\* in rbg_fig2m.awk
##
## Revision 1.49 1996/12/19 19:55:22 peterg
## Version 2.2 -- Linux.
##
## Revision 1.48 1996/12/07 21:33:52 peterg
## Changed _input file to give unit step on ALL inputs
##
## Revision 1.47 1996/12/07 20:50:16 peterg
## *** empty log message ***
##
## Revision 1.46 1996/12/05 10:48:51 peterg
## Put sympar in clean list.
## sympar now sucks in params.r file
##
## Revision 1.45 1996/12/05 10:41:39 peterg
## Saved many changes over past 2 weeks.
##
# Revision 1.44 1996/11/12 16:04:25 peterg
# Really VERSION 2.1
#
# Revision 1.43 1996/11/12 08:52:57 peterg
# Fixed bug in test arg to if - missing "".
#
# Revision 1.42 1996/11/11 17:23:03 peterg
# Added numpar.m requirement to all .m targets
#
## Revision 1.41 1996/11/11 17:18:32 peterg
## VERSION 2.1
##
## Revision 1.40 1996/11/09 21:17:38 peterg
## Fixed bug with copying at level 0.
##
## Revision 1.39 1996/11/09 20:22:54 peterg
## VERSION 2.0
##
## Revision 1.38 1996/11/09 20:17:34 peterg
## Fixed bug with null ARGS argument
## Put in new lib paths.
##
## Revision 1.37 1996/11/09 18:47:46 peterg
## Added new copy command (using find).
## More documaentation stuff.
##
# Revision 1.36 1996/11/03 21:19:02 peterg
# Recursice generation of Constitutive Relationship files.
#
## Revision 1.35 1996/11/02 10:19:19 peterg
## Constitutive Relationship generation from lbl file
##
## Revision 1.34 1996/11/01 13:34:35 peterg
## -q (quiet) switch added
##
## Revision 1.33 1996/11/01 12:34:45 peterg
## Added browser - mtt_help
##
## Revision 1.32 1996/10/31 20:48:41 peterg
## Revised html generation.
## Stopped deletion of rep.txt file.
##
# Revision 1.31 1996/10/20 19:23:54 peterg
# Automatic generation of sub-system abg.m files.
#
## Revision 1.30 1996/10/01 14:08:05 peterg
## Replaced $() by ``
## Replaced make with gmake
##
# Revision 1.29 1996/10/01 11:04:05 peter
# Changed name of html document.
#
## Revision 1.28 1996/09/13 18:44:11 peter
## Added params dependencies.
##
## Revision 1.27 1996/09/12 19:24:56 peter
## New numpar/params setup.
##
## Revision 1.26 1996/09/10 17:04:47 peter
## Added impulse response (ir) representation.
##
## Revision 1.25 1996/08/30 20:03:45 peter
## Removed dependencies from vc
##
## Revision 1.24 1996/08/30 18:37:17 peter
## inor changes.
##
## Revision 1.23 1996/08/30 11:10:37 peter
## More files in clean up.
##
## Revision 1.22 1996/08/30 10:07:51 peter
## Removed impicit creation of abg.fig file.
##
## Revision 1.21 1996/08/22 12:19:51 peter
## Added various document viewers.
##
## Revision 1.20 1996/08/20 08:24:53 peter
## Now with version control.
##
## Revision 1.19 1996/08/19 15:33:22 peter
## Included new state matric (sm) rep.
## Generate step response (sr) from sm.
##
## Revision 1.18 1996/08/19 13:30:54 peter
## New CLEAN target.
##
## Revision 1.17 1996/08/19 06:48:14 peter
## Explicit figure editing.
##
## Revision 1.16 1996/08/18 19:58:36 peter
## Report generation included.
##
## Revision 1.15 1996/08/18 12:01:01 peter
## Unified format of time responses.
##
## Revision 1.14 1996/08/16 14:52:24 peter
## Added two alternative view options - dview and pview.
##
## Revision 1.13 1996/08/16 08:24:31 peter
## Correctly chooses how to make a ps file using $REPTYPE.
##
## Revision 1.12 1996/08/15 16:47:47 peter
## DAE solution (experimental) included.
##
## Revision 1.11 1996/08/15 11:55:30 peter
## Checks for changed argument.
## Handles frequency response.
##
## Revision 1.10 1996/08/15 07:44:24 peter
## Now handles generic transformations using %.
##
## Revision 1.9 1996/08/14 09:16:08 peter
## Step response now goes through m, dat and gdat conversions
##
## Revision 1.8 1996/08/12 20:19:52 peter
## Arguments now passed via $1_args.m file
##
## Revision 1.7 1996/08/11 19:49:27 peter
## Parameter passing (via $4) added.
##
## Revision 1.6 1996/08/11 10:40:56 peter
## Added new numpar stuff.
## Added step response.
##
## Revision 1.5 1996/08/10 14:13:47 peter
## Added impulse and frequency response stuff.
##
## Revision 1.4 1996/08/10 09:19:48 peter
## Put in help, info and warranty stuff.
##
## Revision 1.3 1996/08/09 15:13:13 peter
## Generic viewing of any representation via ps files implemented.
##
## Revision 1.2 1996/08/05 19:50:55 peter
## Put in fig.fig target.
##
## Revision 1.1 1996/08/04 17:29:42 peter
## Initial revision
##
###############################################################
set_oct() {
## Sets ${m} to oct if such a rep is supported
m=m
supported_reps="ae input logic numpar simpar state"
for supported_rep in ${supported_reps}; do
if [ "${rep}" = "${supported_rep}" ]; then
m=oct
fi
done
}
#Check $MTTPATH has been set
mtt_check_var "$MTTPATH" "MTTPATH"
#Version
version='5.0'
# MTT recursion level is zero unless explicitly set
level=0
#Computation mode is octave by default
computation=octave
#By default, the dae and ode representations are different
dae_is_ode=0
#By default, the ode and cse reps are different
ode_is_cse=0
# By default, don't look for BG switches
switches=0
#By default, don't print the environment variables
print='';
# By default, make it tidy
tidy=tidy;
# Default not verbose
verbose=' -s'
verbosity=0
# Default integration method
integration_method=implicit;
# Default algebraic equation solver
algebraic_solver=noAlgebraicSolver;
# Default no info
info_switch=''
# Default use m, not oct files
m='m';
# Default use ps files
ps=ps
eps=eps
psview=$PSVIEW
# Default declare 500 temporary variables
num_tmp_var=500
# Default no equation sorting
use_sorted_equations=''
#Initialise list of switches
mtt_switches='';
#Initialise read dirs
read_dirs=''
#Look for a command line argument
while [ -n "`echo $1 | grep '^-'`" ]; do
case $1 in
-q )
mtt_switches="$mtt_switches $1";
quiet=quiet;;
-r )
mtt_switches="$mtt_switches $1";
reset=reset;;
-p )
mtt_switches="$mtt_switches $1";
print='-p';;
-c )
echo "-c is obsolete. Please use -cc instead"
fixcc='-fixcc'
mtt_switches="$mtt_switches $1";
matrix_smxa="-matrix";
computation=c ;;
-cc )
fixcc='-fixcc'
mtt_switches="$mtt_switches $1";
matrix_smxa="-matrix";
computation=cc ;;
-cr )
mtt_switches="$mtt_switches $1";
rdae_is_dae=1 ;
cr_first='-cr';;
-o )
mtt_switches="$mtt_switches $1";
dae_is_ode=1 ;;
-nocr )
mtt_switches="$mtt_switches $1";
rdae_is_dae=1 ;;
-i )
mtt_switches="$mtt_switches $1";
shift;
case $1 in
dassl)
integration_method=dassl;
mtt_switches="$mtt_switches dassl";
;;
euler)
integration_method=euler;
mtt_switches="$mtt_switches euler";
;;
implicit)
integration_method=implicit;
mtt_switches="$mtt_switches implicit";
;;
rk4)
integration_method=rk4;
mtt_switches="$mtt_switches rk4";
;;
*)
echo $1 is an unknown integration method - use dassl, euler, rk4 or implicit;
exit;;
esac;;
-ae )
mtt_switches="$mtt_switches $1";
case $2 in
dassl)
mtt_switches="$mtt_switches $2";
algebraic_solver=Dassl_Solver;
shift;
;;
fsolve | hybrd)
mtt_switches="$mtt_switches $2";
algebraic_solver=Hybrd_Solver;
shift;
;;
hooke)
mtt_switches="$mtt_switches $2";
algebraic_solver=HJ_Solver;
shift;
;;
reduce)
mtt_switches="$mtt_switches $2";
algebraic_solver=Reduce_Solver;
Solve='-A';
shift;
;;
*)
echo $1 is an unknown solver - use hybrd, hooke or reduce;
exit;;
esac;;
-s )
sensitivity_switch='-s';
mtt_switches="$mtt_switches $1";
sensitivity=sensitivity ;;
-make-sort )
mtt_switches="$mtt_switches $1";
use_sorted_equations="make";
num_tmp_var=0;
integration_method="euler";;
-sort )
mtt_switches="$mtt_switches $1";
use_sorted_equations="seqn";
integration_method="sorted_euler";;
-ss )
mtt_switches="$mtt_switches $1";
steadystate_computation=yes ;;
-d )
directory=$2; cd $directory; shift ;;
-dc )
mtt_switches="$mtt_switches $1";
causality_switch='-derivative' ;;
-S )
directory=$2; shift;;
-D )
mtt_switches="$mtt_switches $1";
debug=debug ;;
-v )
mtt_switches="$mtt_switches $1";
info_switch='-I';
Verbose='verbose';
verbosity=`expr $verbosity + 1`;
if [ $verbosity -ge 1 ]; then verbose=' -w '; fi;
if [ $verbosity -ge 2 ]; then set -x; fi;
if [ $verbosity -ge 3 ]; then verbose_make=' -d '; fi;
;;
-I )
mtt_switches="$mtt_switches $1";
info_switch='-I' ;;
-t )
tidy=tidy ;;
-trace )
mtt_switches="$mtt_switches $1";
trace='-n' ;;
-T )
tidy=tidy;
verytidy=verytidy ;;
-u )
tidy=untidy ;
mtt_switches="$mtt_switches $1";
;;
-l )
mtt_switches="$mtt_switches $1 $2";
level=$2; shift ;;
-A )
mtt_switches="$mtt_switches $1";
Solve='-A';;
-abg )
mtt_switches="$mtt_switches $1";
start_at_abg='yes';;
-stdin )
mtt_switches="$mtt_switches $1";
stdin=stdin;;
-sub ) mtt_switches="$mtt_switches $1 $2";
sub='-sub';
subsystem="_"$2;
shift;;
-oct )
fixcc='-fixcc'
mtt_switches="$mtt_switches $1";
using_oct=yes;
;;
-opt | -optl )
mtt_switches="$mtt_switches $1";
optimise='-optimise_local';;
-optg )
mtt_switches="$mtt_switches $1";
optimise='-optimise_global';;
-ntmpvar )
num_tmp_var=$2;
mtt_switches="$mtt_switches $1 $2";
shift;;
-partition ) mtt_switches="$mtt_switches $1";
partition='-partition';
;;
-pdf ) mtt_switches="$mtt_switches $1";
## ps=pdf;
## eps=pdf;
## pdf='-pdf';
psview=$PDFVIEW;
;;
-dr ) mtt_switches="$mtt_switches $1"; shift
mtt_switches="$mtt_switches $1"; read_dir=$1
if [ -d "${read_dir}" ]; then
read_dirs="${read_dirs} ${read_dir}"
else
echo "${read_dir} does not exist - ignoring"
fi
;;
-viewlevel ) mtt_switches="$mtt_switches $1 $2";
viewlevel=$2;
shift;;
--version)
echo 'MTT version' $version; exit;;
--versions)
mtt_versions; exit;;
*)
echo "$1 is an invalid argument - ignoring" ;;
esac
shift
done
## Create switches string for adding to file names.
MTT_SWITCHES=`echo ${mtt_switches} | sed 's/ //g' | sed 's/^-u-q//'`
#Print header if not in quiet (-q) mode.
if [ "$quiet" != "quiet" ]; then
echo
echo 'MTT (Model Transformation Tools) version' $version
echo '($Date$)'
echo 'This is free software with ABSOLUTELY NO WARRANTY.'
echo 'Type `mtt warranty'\' 'for details.'
echo
# Print current directory if in -d mode
if [ -n "$directory" ]; then
echo Using directory $directory
echo
fi
fi
#Print what's going on if in verbose mode
if [ -n "$Verbose" ]; then
echo Starting mtt $mtt_switches $1 $2 $3 $4 at level $level
echo " " current wd `pwd`
fi
#Check the principle paths
mtt_check_vars $print
# Exit if just printing paths
if [ "$print" != "" ]; then
exit
fi
if [ -z "$1" ]; then
if [ -z "$print" ]; then
echo 'Usage: mtt help -- mtt on-line help'
echo ' mtt find component -- find location of a compound component'
echo ' mtt info -- info-based manual'
echo ' mtt info topic'
echo ' mtt hinfo -- hypertext manual'
echo ' mtt manual -- pdf manual'
echo ' mtt warranty'
echo ' mtt clean -- cleans up intermediate files'
echo ' mtt rclean -- recursively cleans up intermediate files'
echo ' mtt Clean -- cleans up all generated files'
echo ' mtt <system_name> clean'
echo ' mtt copy <system_name> <path_name>'
echo ' mtt rename <old_name> <new_name>'
echo ' mtt <system_name> <representation> vc'
echo ' mtt <system_name> <representation> <language>'
echo ' mtt <system_name> <representation> <language> <parameters>'
echo 'Options: -q quiet mode -- suppress MTT banner'
echo ' -A solve algebraic equations symbolically'
echo ' -D debug -- leave log files etc'
echo ' -I prints more information'
echo ' -abg start at abg.m representation'
echo ' -c c-code generation'
echo ' -cc C++ code generation'
echo ' -cr Use cr before resolving equations'
echo ' -d <dir> use directory <dir>'
echo ' -dr <dir> use files contained in <dir>'
echo ' -dc Maximise derivative (not integral) causality'
echo ' -i <implicit|euler|rk4|dassl> Use implicit, euler, rk4 or dassl integration'
echo ' -ae <reduce|hybrd|dassl|hooke> Solve algebraic equations with specified solver'
echo ' -o ode is same as dae'
echo ' -oct use oct files in place of m files where appropriate'
echo ' -opt optimise code generation (equivalent to -optl)'
echo ' -optl optimise code generation (local : line-by-line)'
echo ' -optg optimise code generation (global : full vector) (EXPERIMENTAL)'
echo " -ntmpvar <N> declare N temporary variables (default=$num_tmp_var)"
echo ' -p print environment variables'
echo ' -partition partition hierachical system'
echo ' -pdf generate pdf in place of ps'
echo ' -r reset time stamp on representation'
echo ' -s generate sensitivity BG (use mtt -s sSys rep lang)'
echo ' -make-sort use sorted equations (sese, generated by make) and Euler integration (EXPERIMENTAL)'
echo ' -sort use sorted equations (sese, generated by seqn) and Euler integration (EXPERIMENTAL)'
echo ' -ss use steady-state info to initialise simulations'
echo ' -stdin read input data from standard input for simulations'
echo ' -sub <subsystem> operate on this subsystem'
echo ' -t tidy mode (default)'
echo ' -trace Just indicate what mtt will do - but do not do it'
echo ' -u untidy mode (leaves files in current dir)'
echo ' -v verbose mode (multiple uses of -v increase the verbosity level)'
echo ' -viewlevel <N> View N levels of hierachy'
echo ' --version print version and exit'
echo ' --versions print version of mtt and components and exit'
exit
fi
fi
if [ "$1" = "info" ] && [ "$3" = "" ]; then
(cd $MTT_DOC ; make --silent mtt.info)
echo "Invoking info in xterm"
xterm -e info -f $MTT_DOC/mtt.info $2
exit
fi
if [ "$1" = "help" ]; then
mtt_help $2 $3
exit
fi
if [ "$1" = "hinfo" ] && [$2 = ""]; then
mtt_check_var "$HTMLVIEW" HTMLVIEW
(cd $MTT_DOC/; make --silent mtt.html)
echo Invoking $HTMLVIEW
(cd $MTT_DOC; $HTMLVIEW file://$MTT_DOC/mtt.html)&
exit
fi
if [ "$1" = "manual" ] && [$2 = ""]; then
mtt_check_var "$PDFVIEW" PDFVIEW
(cd $MTT_DOC/; make --silent mtt.pdf)
echo Invoking $PDFVIEW
$PDFVIEW $MTT_DOC/mtt.pdf &
exit
fi
if [ $1 = "find" ]&& [$3 = ""]; then
mtt_find $MTT_COMPONENTS $2
find_status=$?
if [ $find_status = "1" ]; then
echo Component $2 not found - is MTT_COMPONENTS set correctly?
fi
exit $find_status
fi
if [ "$1" = "warranty" ] && [$2 = ""]; then
cat << EOF
Copyright (C) 1989, 1990, 1991, 1992, 1993,
1994, 1995, 1996, 1997, 1998, 1999 Peter J. Gawthrop
This is free software with ABSOLUTELY NO WARRANTY.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
EOF
exit
fi
# Start at abg representation
if [ -n "$start_at_abg" ]; then
if [ -f "$1_abg.m" ]; then
if [ "$quiet" != "quiet" ]; then
echo Starting from $1_abg.m
fi
else
echo $1_abg.m does not exist
exit
fi
fi
# Clean up
if [ "$1" = "clean" ]; then
echo Removing intermediate files in `pwd`
rm -fr MTT_work
exit
fi
# Recursively clean up
if [ "$1" = "rclean" ]; then
echo 'Removing intermediate files recursively'
dir2paths '.' | gawk '{print "mtt -q -d " $1 " clean " $2}' | sh
exit
fi
# The big clean up
if [ "$1" = "Clean" ] && [ "$2" = "" ]; then
echo 'Removing all generated files for all systems'
rm -f *.log mtt_info.txt warning.txt
rm -f *_abg.ps *_args.* *_cr.txt *_abg.tex
rm -f *_sabg.fig *_sabg.ps *_head.fig *_bnd.fig
rm -f *_sympar.r *_sympar.c *_sympar.h *_sympar.txt? *_sympar.tex
rm -f *_rbg.* *_cmp.* *_fig.fig *_*cbg.* *_ese.* *_def.* *_alias.*
rm -f *_sub.* *_type.sh
rm -f *_dae*.* *_cse.* *_ode.*
rm -f *_obs.* *_rfe.* *_ss.*
rm -f *_dm.* *_csm.* *_tf.* *_sr*.* *_ir*.* *_*fr.*
rm -f *_numpar.c *_input.m *_input.c *_switch.c *_switch.txt
rm -f *_sm.* *_can.*
rm -f *_struc.* *_sympar.txt *_sympar.c *_sympar.h *_sympar.m
rm -f *_odes.c *_odes.dat *_odes.gdat *_odes.m *_odes.ps *_odes.sg
rm -f *_odeso.dat *_odeso.gdat *_odeso.sdat *_odeso.m *_odeso.ps
rm -f *_*.doc *_*.idx *_*.ind *_*.ilg *_*.dvi *_*.aux *_*.lof *_*.toc
rm -f *_rep.tex
rm -f *_unique_raw_list *_raw_list
rm -f mtt_error.txt mtt_info.txt *_ode2odes.out
rm -f *_*_write.r *_simpar.m *_simpar.p
rm -f *_cseo.oct *_input.oct *_simpar.oct *_smxax.oct
rm -f *_csex.oct *_numpar.oct *_smxa.oct *_state.oct
rm -f *_ode.oct *_odeo.oct
rm -f *_cseo.mexglx *_input.mexglx *_simpar.mexglx *_smxax.mexglx
rm -f *_csex.mexglx *_numpar.mexglx *_smxa.mexglx *_state.mexglx
rm -f *_ode.mexglx *_odeo.mexglx
rm -f *_sfun.mexglx *_sfun_*.mexglx
rm -f *_cseo.cc *_input.cc *_simpar.cc *_smxax.cc
rm -f *_csex.cc *_numpar.cc *_smxa.cc *_state.cc
rm -f *_ode.cc *_odeo.cc
rm -f *_logic.m *_logic.cc *_logic.oct
rm -f *_state.m *_state.cc *_state.oct
rm -f *_ode2odes.* *.dat2 MTT.core
rm -f *_modpar.txt *_modpar.r
rm -f *_ICD.txt *_ICD.c *_ICD.cc *_ICD.m
rm -f *_ae.r *_ae.m *_ae.cc *_ae.oct
rm -f *_sese.r *_sese.m
rm -f *_sese.make *_sesx.* *_sesy.* _sae.*
rm -fR *_rep MTT_work
exit
fi
# Clean up named system
if [ "$2" = "Clean" ] && [ "$3" = "" ]; then
echo 'Removing all generated files for system ' $1
rm -f *.log mtt_info.txt warning.txt
rm -f $1_abg.ps $1_args.* $1_cr.txt $1_abg.tex
rm -f $1_sabg.fig $1_sabg.ps $1_head.fig $1_bnd.fig
rm -f $1_sympar.r $1_sympar.c $1_sympar.h $1_sympar.txt? $1_sympar.tex
rm -f $1_rbg.* $1_cmp.* $1_fig.fig $1*_*cbg.* $1*_ese.* $1_def.* $1_alias.*
rm -f $1_sub.* $1_type.sh
rm -f $1_dae*.* $1_cse.* $1_ode.* $1_obs.* $1_rfe.* $1_ss.*
rm -f $1_dm.* $1_csm.* $1_tf.* $1_sr*.* $1_ir*.* $1_*fr.*
rm -f $1_numpar.m $1_numpar.c $1_input.m $1_input.c $1_switch.c $1_switch.txt
rm -f $1_sm*.* $1_can.*
rm -f $1_struc.* $1_sympar.txt $1_sympar.c $1_sympar.h $1_sympar.m
rm -f $1_odes.c $1_odes.dat $1_odes.gdat $1_odes.sdat $1_odes.m $1_odes.ps $1_odes.sg
rm -f $1_odeso.dat $1_odeso.gdat $1_odeso.m $1_odeso.ps
rm -f $1_*.doc $1_*.idx $1_*.ind $1_*.ilg $1_*.dvi $1_*.aux $1_*.lof $1_*.toc
rm -f $1_rep.tex
rm -f $1_unique_raw_list $1_raw_list
rm -f mtt_error.txt mtt_info.txt $1_ode2odes.out
rm -f $1_*_write.r $1_simpar.m $1_simpar.p
rm -f $1_cseo.oct $1_input.oct $1_simpar.oct $1_smxax.oct
rm -f $1_csex.oct $1_numpar.oct $1_smxa.oct $1_state.oct
rm -f $1_ode.oct $1_odeo.oct
rm -f $1_cseo.mexglx $1_input.mexglx $1_simpar.mexglx $1_smxax.mexglx
rm -f $1_csex.mexglx $1_numpar.mexglx $1_smxa.mexglx $1_state.mexglx
rm -f $1_ode.mexglx $1_odeo.mexglx
rm -f $1_sfun.mexglx $1_sfun_*.mexglx
rm -f $1_cseo.cc $1_input.cc $1_simpar.cc $1_smxax.cc
rm -f $1_csex.cc $1_numpar.cc $1_smxa.cc $1_state.cc
rm -f $1_ode.cc $1_odeo.cc
rm -f $1_logic.m $1_logic.cc $1_logic.oct
rm -f $1_state.m $1_state.cc $1_state.oct
rm -f $1_ode2odes.* $1.dat2
rm -f $1_modpar.txt $1_modpar.r
rm -f $1_ICD.txt $1_ICD.c $1_ICD.cc $1_ICD.m
rm -f $1_ae.r $1_ae.m $1_ae.cc $1_ae.oct
rm -f $1_sese.r $1_sese.m
rm -f $1_sese.make $1_sesx.* $1_sesy.* $1_sae.*
rm -fR $1_rep MTT_work
exit
fi
if [ "$2" = "rep" ]; then
documenttype=article
# See if we are making a book -- ie representation rep on a directory
isMTT_work=`pwd | grep 'MTT_work'`
if [ -n "$isMTT_work" ]; then
dotdot='../'
fi
#isdirectory=`file $dotdot$1 | gawk '{print $2}' | grep directory`
if [ -d "$dotdot$1" ]; then
documenttype=book
fi
else
documenttype=section
fi
case $2 in
nyfr)
NyquistStyle='True'
;;
nifr)
NyquistStyle='True'
;;
*)
esac
#SUMMARY abg* acausal bond graph (fig)
#SUMMARY abg* acausal bond graph (dia)
#SUMMARY abg* acausal bond graph (ps)
#SUMMARY abg* acausal bond graph (view)
# Invoke explicit requests for modification
if [ "$2" = "abg" ] && [ "$3" = "fig" ]; then
mtt_check_var "$FIG" FIG
echo Editing $1_$2.$3
($FIG $1_$2.$3; cp $1_abg.fig $1_$1_abg.fig) &
exit
fi
# Rename a system
if [ "$1" = "rename" ]; then
mtt_rename_all $2 $3
exit
fi
# Copy systems from the example library
if [ "$1" = "copy" ]; then
#set up source and destination dirs
source=$3
if [ -z "$source" ]; then
source=$MTT_Examples
fi
destination=$4
if [ -z "${destination}" ]; then
destination=$2
fi
# check that its not here already
file_exists=`ls ${destination}/$2_abg.fig 2> /dev/null`
if [ -n "$file_exists" ]; then
if [ "$quiet" != "quiet" ]; then
echo System $2 exists already - no action taken
fi
else
source=$3
if [ -z "$source" ]; then
source=$MTT_EXAMPLES
fi
destination=$4
if [ -z "${destination}" ]; then
destination=$2
fi
echo Copying system $2 from $source into directory ${destination}
find $source -name "$2" -exec cp -fr {} . \;
rm -rf ${destination}/CVS
fi
exit
fi
# Copy components from the library
if [ "$1" = "compcopy" ]; then
#Pull out the base name (we may have a library as well)
name=`basename $2`
#set up source and destination dirs
source=$3
if [ -z "$source" ]; then
source=$MTT_COMPONENTS
fi
destination=$4
if [ -z "${destination}" ]; then
destination='.'
fi
# check that its not here already
file_exists=`ls ${destination}/"$name"_abg.fig 2> /dev/null`
if [ -n "$file_exists" ]; then
if [ "$quiet" != "quiet" ]; then
echo Component $name exists already - no action taken
fi
else
if [ $source = "." ]; then
cp -u *_*.* ${destination}
else
comp_path=`mtt_find $source $2 path_only`
n_found=`echo $comp_path | wc | gawk '{print $2}'`
if [ "$n_found" = "1" ]; then
echo Copying $2 from $comp_path to ${destination}
cp $comp_path/*_*.* ${destination}
exit 0
elif [ "$n_found" = "0" ]; then
if [ "$quiet" != "quiet" ]; then
echo Component $2 not found - is MTT_COMPONENTS set correctly?
fi
exit 1
elif [ "$n_found" > "1" ]; then
echo "Multiple versions of $2 found (see below) - use a more explicit alias"
mtt -q find $2
exit 2
fi
fi
fi
exit
fi
# Copy CRs from the library
if [ "$1" = "crcopy" ]; then
# check that its not here already (or a _cr.r version)
file_exists=`ls $2.cr $2_cr.r 2> /dev/null`
if [ -n "$file_exists" ]; then
if [ "$quiet" != "quiet" ]; then
echo $2.cr or $2_cr.r exists already - no action taken
fi
else
path_name=$3
if [ -z "$path_name" ]; then
path_name=""
for path in `echo $MTT_CRS | sed 's/:/ /g'`; do
path_name="$path_name $path/r"
done
fi
echo Copying CR $2 to here from $3
find $path_name -name "$2.cr" -exec cp {} . \;
fi
exit
fi
# Version control
VC=''
if [ "$3" = "vc" ]; then
tidy=untidy;
if [ -n "$4" ]; then
log_message=$4
else
log_message="No Message"
fi
case $2 in
abg )
VC='ok'
VCext='fig' ;;
lbl )
VC='ok'
VCext='txt' ;;
desc )
VC='ok'
VCext='tex' ;;
simp )
VC='ok'
VCext='r' ;;
rep )
VC='ok'
VCext='txt' ;;
numpar )
VC='ok'
VCext='txt' ;;
input )
VC='ok'
VCext='txt' ;;
state )
VC='ok'
VCext='txt' ;;
odes )
VC='ok'
VCext='h' ;;
sspar )
VC='ok'
VCext='r' ;;
*)
echo Version control is not appropriate for representation $2
exit ;;
esac
fi
# Classify the representation - needed for conversion route to postscript
PLOTTYPE='single';
case $2 in
abg )
REPTYPE='bg' ;;
sabg )
REPTYPE='bg' ;;
cbg )
REPTYPE='bg' ;;
input )
REPTYPE='txt' ;;
numpar )
REPTYPE='txt' ;;
state )
REPTYPE='txt' ;;
simpar )
REPTYPE='txt' ;;
obspar )
REPTYPE='txt' ;;
odes)
REPTYPE='data'; PLOTTYPE='multiple' ;;
odeso)
REPTYPE='data'; PLOTTYPE='multiple' ;;
sms)
REPTYPE='data'; PLOTTYPE='multiple' ;;
smso)
REPTYPE='data'; PLOTTYPE='multiple' ;;
odess)
REPTYPE='data' ;;
odesso)
REPTYPE='data' ;;
daes)
REPTYPE='data'; PLOTTYPE='multiple' ;;
daeso)
REPTYPE='data'; PLOTTYPE='multiple' ;;
ir)
REPTYPE='data' ;;
iro)
REPTYPE='data' ;;
sr)
REPTYPE='data' ;;
sro)
REPTYPE='data' ;;
lmfr)
REPTYPE='data' ;;
lpfr)
REPTYPE='data' ;;
nyfr)
REPTYPE='data' ;;
nifr)
REPTYPE='data' ;;
*)
REPTYPE='tex' ;;
esac
## Set up the main arguments
sys=$1
rep=$2
lang=$3
## Make ps pdf if -pdf set
if [ "$lang" = "ps" ]; then
lang=$ps
fi
# Create some strings
Subsystem=$1$subsystem;
Subsystem_=$Subsystem"_"
Subsystem_ese=$Subsystem"_ese"
Subsystem_def=$Subsystem"_def"
Subsystem_rdae=$Subsystem"_rdae"
Subsystem_dae=$Subsystem"_dae"
Subsystem_subs=$Subsystem"_subs"
Subsystem_cr=$Subsystem"_cr"
Subsystem_cbg=$Subsystem"_cbg"
## Create the make target name
if [ -z "${using_oct}" ]; then
target=${sys}_${rep}.${lang}
else
set_oct;
if [ "${lang}" = "m" ]; then
target=${sys}_${rep}.${m}
else
target=${sys}_${rep}.${lang}
fi
fi
##echo $target
##target=${sys}_${rep}.${lang}
## Arguments
ARGS=$4; _ARGS=-$4; __ARGS=`echo $_ARGS | tr ',' '-'`
__ARGS="${MTT_SWITCHES}${__ARGS}"
__ARGS=`echo ${__ARGS} | sed -e 's/-q//g' -e 's/-u//g'`
# Save up the argument list in a file; but only if argument has changed
#DIFF doesn't like empty files - so put a blank if empty
#if [ -z "$ARGS" ]; then
# ARGS=' ';
# _ARGS='';
#fi
#cat > $1_args.new <<EOF
#$ARGS
##EOF
#DIFF=`diff -bq $1_args.m $1_args.new 2>/dev/null`
#if [ -n "$DIFF" ]; then
# mv $1_args.new $1_args.m
#fi
## If in MTT_work, then copy from -dr read dirs
this_dir=`basename $PWD`
if [ "${this_dir}" = "MTT_work" ]; then
# Copy from read dirs to MTT_work
for dir in ${read_dirs}; do
if [ -n "$Verbose" ]; then
echo Copying ${dir}/*
cp --force ${dir}/* .
else
cp --force ${dir}/* . 2> /dev/null
fi
read_files=`echo ${dir}/*`
for read_file in ${read_files}; do
read_file_name=`basename ${read_file}`
touch ${read_file_name}
done
done
fi
# Tidy mode - operate in the directory MTT-work
if [[ "$tidy" = "tidy" && "$level" = "0" ]]; then
mkdir -p MTT_work
valid_files=`ls | grep -v '^MTT'`
##cp -p -u Makefile Make *.* .* MTT_work 2>/dev/null
cp -p -u -R ${valid_files} MTT_work 2>/dev/null
# Go to MTT_work
cd MTT_work
if [ -f ".octaverc" ]; then
touch .octaverc
else
echo Copying .octaverc
cp $MTT_LIB/octave/.octaverc .
fi
if [ -f "useful-functions.hh" ]; then
touch useful-functions.hh
else
echo Copying useful-functions.hh
cp $MTT_CC/include/useful-functions.hh .
fi
if [ -z "$directory" ]; then
Directory=''
else
Directory=$directory/MTT_work
fi
mtt -u -q $mtt_switches -S "$Directory" $1 $2 $3 $4
mtt_status=$?
# Exit on failure
if [ "$mtt_status" != "0" ]; then
echo Exiting MTT with error $mtt_status
exit 1
fi
# Copy back from working directory
if [ "$3" != "view" ] && [ "$3" != "hview" ] && [ -z "$reset" ]; then
if [ "$3" = "html" ]; then
echo Moving $1_$2
mv $1_$2 ..
else
if [ "$PLOTTYPE" = "multiple" -a -f $1_$2__ARGS.$ps ]; then
echo Copying $1_$2$__ARGS.$ps
cp $1_$2$__ARGS.$ps ..
else
if [ -f $1$subsystem"_"$2.$lang ]; then
echo Copying $1$subsystem"_"$2.$lang
cp -p -u $1$subsystem"_"$2.$lang ..
fi
fi
fi
fi
# Remove the MTT_work directory if very tidy
if [ "$verytidy" = "verytidy" ]; then
echo Removing all working files
rm -rf ../MTT_work
fi
exit
fi
# User defined representations
## Copy from library if not already here
## .make versions
if [ -f "$MTT_REP/$2_rep.make" ]; then
if [ -f "$2_rep.make" ]; then
echo Using $2_rep.make
else
echo Copying $2_rep.make from $MTT_REP
cp $MTT_REP/$2_rep.make .
fi
fi
if [ -f "$2_rep.make" ]; then
if [ -n "$4" ]; then
filename=$1_$2-$4.$3
else
filename=$1_$2.$3
fi
#if [ -f "$filename" ]; then
# echo $filename exists
#else
if [ ! -f "$2_rep.make.ignore" ]; then
if [ -n "$Verbose" ]; then
echo make -s -f $2_rep.make "MTT_SYS=$1" "MTT_LANG=$3" "MTT_ARG=$4" "MTT_OPTS=$mtt_switches"
fi
make -s -f $2_rep.make "MTT_SYS=$1" "MTT_LANG=$3" "MTT_ARG=$4" "MTT_OPTS=$mtt_switches"
if [ -n "$4" ]; then
echo Copying $1_$2$__ARGS.$ps
cp $1_$2$__ARGS.$ps ..
fi
#fi
exit
fi
fi
## Check for pre version 4.0 integration method specification.
if [ $level = "0" ]; then
if [ -f "$1_simpar.txt" ]; then
method_line=`grep -i METHOD $1_simpar.txt`
if [ -n "`echo $method_line | grep -i euler`" ]; then
echo Obsolete $1_simpar.txt contains: $method_line
echo " please use mtt -i euler in future"
mtt_switches="$mtt_switches -i euler";
elif [ -n "`echo $method_line | grep -i implicit`" ]; then
echo Obsolete $1_simpar.txt contains: $method_line
echo " please use mtt -i implicit in future"
mtt_switches="$mtt_switches -i implicit";
fi
fi
fi
if [ -n "$reset" ]; then
if [ -f "$1_$2.$3" ]; then
echo Resetting time stamp on $1_$2.$3
touch $1_$2.$3
else
echo $1_$2.$3 does not exist - no action taken
fi
exit;
fi
if [ -n "$sensitivity" ]; then
sys_s=`echo $1 | cut -c 2-`
sys_abg=${sys_s}_abg
fi
## Check octave version
case `$MATRIX --version | gawk -F\. '{print $2}'` in
0) define_octave_dev="";; # stable
1) define_octave_dev="-DOCTAVE_DEV";; # development
*) define_octave_dev="-DOCTAVE_DEV";;
esac
################################
# This is the main mtt programme
################################
#echo Target is $target, Subsystem is $Subsystem, options are $mtt_switches
##<<<<<<< mtt
##$MAKE -S ${trace} ${verbose} -f - ${target} << EOF
##=======
##$MAKE -S $verbose $verbose_make -f - $target << EOF
##>>>>>>> 1.316
$MAKE -S ${trace} $verbose $verbose_make -f - $target << EOF
# Cancel implicit rules I don't want
%.dvi: %.tex
# MTT implicit rules
## .oct files
$1_%.oct: $1_%.cc $1_def.h $1_sympar.h $1_cr.h
echo Creating $1_\$*.oct; $MKOCTFILE ${MTT_CXXINCS} -DCODEGENTARGET=OCTAVEDLD $1_\$*.cc
## pdf files from ps (new version)
$1_%.pdf: $1_%.ps
echo Creating $1_\$*.pdf; ps2pdf $1_\$*.ps $1_\$*.pdf
## eps from ps (NB ps files are actually eps anyway)
$1_%.eps: $1_%.ps
echo Creating $1_\$*.eps; cp $1_\$*.ps $1_\$*.eps
.PRECIOUS: mtt_%.oct
.PRECIOUS: $1_%.oct
mtt_%.oct: mtt_%.cc
echo Compiling \$<
${MKOCTFILE} ${MTT_CXXINCS} -DCODEGENTARGET=OCTAVEDLD $define_octave_dev \$<
## .mex files
$1_%.mexglx: $1_%.cc $1_def.h $1_sympar.h $1_cr.h mtt_kpathsea.cc mtt_matlab_octave.cc mtt_matlab_octave.hh
echo Creating $1_\$*.mexglx
${MTT_CXX} -shared -o $1_\$*.mexglx $1_\$*.cc \
${MTT_MATLAB_FLAGS} -DCODEGENTARGET=MATLABMEX \
${MTT_CXXINCS} ${MTT_CXXLIBS} ${MTT_CXXFLAGS} mtt_kpathsea.cc mtt_matlab_octave.cc
## .cc files
.PRECIOUS: %.cc # Don't let mtt delete them
.PRECIOUS: $1_%.cc # Don't let mtt delete them
$1_%.cc: $1_%.m
mtt_m2cc.sh $1 \$* cc cat
mtt_%.cc:: ${MTT_LIB}/cc/mtt_%.cc
cp ${MTT_LIB}/cc/mtt_\$*.cc mtt_\$*.cc
mtt_%.hh:: ${MTT_LIB}/cc/mtt_%.hh
cp ${MTT_LIB}/cc/mtt_\$*.hh mtt_\$*.hh
## .o files
.PRECIOUS: $1_%.o
$1_%.o: $1_%.cc $1_def.h $1_sympar.h $1_cr.h
echo Compiling $1_\$*.cc
${MTT_CXX} ${MTT_CXXFLAGS} ${MTT_CXXINCS} -c $< -DCODEGENTARGET=STANDALONE
.PRECIOUS: mtt_%.o
mtt_%.o: mtt_%.cc
echo Compiling mtt_\$*.cc
${MTT_CXX} ${MTT_CXXFLAGS} ${MTT_CXXINCS} -c $< -DCODEGENTARGET=STANDALONE $define_octave_dev
# Copy aliased subsystems
$1_aliased_subsystems_copied:
lbl2component $1 | sh || exit 1 # Grab specified components now
touch $1_aliased_subsystems_copied
# Generates code to write reduce code
$1_ode_write.r: $1_def.m
def2write_r $1 $2 $computation
ifeq ("$sensitivity","sensitivity")
ifeq ("$level","0")
$1_abg.fig: $sys_abg.fig
abg2sensitivity_fig $sys_s
else # Either find the sensitivity model or fetch the model and create sensitivity model
$1_abg.fig:
mtt -q -u $mtt_switches compcopy $1 || abg2sensitivity_fig $sys_s
endif
endif
ifneq ("$sensitivity","sensitivity")
ifneq ("$level","0")
# If level>0, try and get subsystem files; creating if necessary
ifneq ("\$(wildcard $1_abg.dia)","$1_abg.dia")
$1_abg.fig:
mtt -q -u $mtt_switches compcopy $1
else
$1_abg.fig:
endif
endif
endif
# Create an arg file if it doesn't exist
$1_args.m:
touch $1_args.m
#Create list of components
ifeq ("\$(wildcard $1_abg.dia)","$1_abg.dia")
$1_cmp.txt: $1_abg.dia
abg2cmp_dia2txt $1
else
$1_cmp.txt: $1_abg.fig
abg2cmp_fig2txt $1
endif
#Create skeleton files (with titles) if not already there
#SUMMARY lbl* label file (txt)
#SUMMARY lbl label file (txt)
#SUMMARY lbl* label file (view)
#SUMMARY lbl label file (view)
#SUMMARY lbl* label file (tex)
#SUMMARY lbl label file (tex)
$1_lbl.txt: $1_cmp.txt
cmp2lbl_txt $1 $sensitivity
touch $1_lbl.txt
$1_lbl.tex: $1_lbl.txt
lbl_txt2tex $1
#SUMMARY alias name aliases for each subsystem (txt)
$1_alias.txt: $1_lbl.txt
lbl2alias_txt2txt $1
#SUMMARY modpar name modulated parameters for each subsystem (txt)
$1_modpar.txt: $1_lbl.txt
lbl2modpar_txt $1
#SUMMARY modpar name modulated parameters for each subsystem (r)
$1_modpar.r: $1_modpar.txt $1_struc.txt
modpar_txt2r $1
#SUMMARY alias name aliases for each subsystem (m)
$1_alias.m: $1_alias.txt
alias_txt2m $1
##SUMMARY icd interface definition for system (c)
##SUMMARY icd interface definition for system (cc)
##SUMMARY icd interface definition for system (m)
##SUMMARY icd interface definition for system (txt)
$1_ICD.c: $1_ICD.txt
ICD_txt2lang.sh $1 c
$1_ICD.cc: $1_ICD.txt
ICD_txt2lang.sh $1 cc
$1_ICD.m: $1_ICD.txt
ICD_txt2lang.sh $1 m
$1_ICD.txt: $1_icd.txt2
icd2ICD_txt22txt.sh $1
$1_icd.txt2: $1_ese.r
touch $1_icd.txt2
#SUMMARY icd interface definitions for each subsystem (m)
$1_icd.m: $1_icd.txt
icd_txt2m.sh $1
#SUMMARY icd interface definitions for each subsystem (txt)
$1_icd.txt: $1_lbl.txt
lbl2icd_txt2txt.sh $1
#SUMMARY cr constitutive relationship for each subsystem (txt)
$1_cr.txt: $1_abg.m $1_sub.sh
abg2cr_m2txt $1
if [ "$level" = "0" ]; then \
mv $1_cr.txt MTT_cr.txt; \
else \
cat $1_cr.txt >> MTT_cr.txt; \
fi
sh $1_sub.sh "rm -f " '_cr.txt' # Remove the txt.cr files
sh $1_sub.sh "mtt $mtt_switches -q -u -l $level+1 " ' cr txt' #Create new ones
if [ "$level" = "0" ]; then \
sort -u MTT_cr.txt> $1_cr.txt; \
fi
#SUMMARY cr constitutive relationship for each subsystem (r)
$1_cr.r: $1_cr.txt
cr_txt2r $1
#SUMMARY cr constitutive relationship header (c)
$1_cr.h:
echo Creating $1_cr.h
echo "/* CR headers for system $1 */" > $1_cr.h
# Cheat a bit and use the top level cr file for the subsystem as well
ifneq ($sub,)
$Subsystem_cr.r: $1_cr.r
echo Creating $Subsystem_cr.r "(copying $1_cr.r)"
cp $1_cr.r $Subsystem_cr.r
endif
#SUMMARY cr constitutive relationship for each subsystem (tex)
#SUMMARY cr constitutive relationship for each subsystem (view)
$1_cr.tex: $1_cr.r
txt2tex $1 cr r
#SUMMARY sympar symbolic parameters (txt)
#SUMMARY sympar* symbolic parameters (view)
$1_sympar.txt: $1_type.sh $1_abg.m $1_aliased.txt
mtt_make_sympar $1
#SUMMARY sympar symbolic parameters (r)
$1_sympar.r: $1_sympar.txt
sympar_txt2r $1
$1_sympar.m: $1_sympar.txt
sympar_txt2m $1
ifneq ($use_sorted_equations,make)
$1_sympar.h: $1_sympar.txt
sympar_txt2h.sh $1 $num_tmp_var
else
$1_sympar.h: $1_sympar.txt $1_sese.make
sympar_txt2h.sh $1 $num_tmp_var
declaration="static double" \
make -f $1_sese.make declare_tmpvars |\
tr [A-Z] [a-z] >> \$@
endif
#SUMMARY sympar symbolic parameters (c)
# txt to c sympar conversion
$1_sympar.c: $1_sympar.txt
sympar_txt2c $1
#SUMMARY sympar symbolic parameters (tex)
# txt to tex (LaTeX) sympar conversion
$1_sympar.tex: $1_sympar.txt
sympar_txt2tex $1
#SUMMARY logic Dynamic switch logic (tex)
#SUMMARY logic Dynamic switch logic (view)
$1_logic.tex: $1_logic.txt
txt2tex $1 logic txt
#SUMMARY switch Dynamic switch information (txt)
$1_switch.txt: $1_struc.txt
struc2switch_txt $1
#$1_switchopen.m: $1_switch.txt $1_sympars.txt $1_logic.txt
# switch_txt2m $1
#SUMMARY sympars sympar + dynamic switch information (txt)
$1_sympars.txt: $1_sympar.txt $1_switch.txt
echo Creating $1_sympars.txt
cat $1_sympar.txt $1_switch.txt > $1_sympars.txt
#SUMMARY simp simplification information (r)
$1_simp.r:
echo Creating $1_simp.r
( \
echo "%% Reduce commands to simplify output for system $1 ($1_simp.r)"; \
cat $MTTPATH/trans/m/rcs_header.txt; \
echo 'ON ALLFAC; %Multiplicative factors'; \
echo 'OFF DIV; %Polynomial division'; \
echo 'OFF FACTOR; %Factorise polynomials'; \
echo 'OFF LIST; %Each term on a new line'; \
echo 'FOR ALL x,y LET pow(x,y) = x^y; %Readable pow function'; \
echo 'END;'; \
)> $1_simp.r
#SUMMARY subs algebraic substitution (r)
$Subsystem_subs.r:
mtt $mtt_switches -q -u $1 sympar txt;
makesubs $Subsystem;
#SUMMARY obspar GPC observability function parameters (r)
$1_obspar.r:
echo Creating $1_obspar.r
( \
echo "%% Reduce GPC observability function parameters for system $1 ($1_obspar.r)"; \
cat $MTTPATH/trans/m/rcs_header.txt; \
echo 'MTTGPCNy := 5;'; \
echo 'MTTGPCNu := 0;'; \
echo 'Matrix MTTdU(5,1);'; \
echo 'MTTdU(1,1) := MTTdU1;'; \
echo 'MTTdU(2,1) := MTTdU2;'; \
echo 'MTTdU(3,1) := MTTdU3;'; \
echo 'MTTdU(4,1) := MTTdU4;'; \
echo 'MTTdU(5,1) := MTTdU5;'; \
echo 'Matrix MTTUU(1,5);'; \
echo 'MTTUU(1,1) := MTTu1;'; \
echo 'MTTUU(1,2) := MTTu11;'; \
echo 'MTTUU(1,3) := MTTu12;'; \
echo 'MTTUU(1,4) := MTTu13;'; \
echo 'MTTUU(1,5) := MTTu14;'; \
echo 'END;'; \
)> $1_obspar.r
#SUMMARY simpar simulation information (txt)
$1_simpar.txt:
echo Creating $1_simpar.txt
( \
echo '# -*-octave-*- Put Emacs into octave-mode'; \
echo "# Simulation parameters for system $1 ($1_simpar.txt)"; \
echo "# Generated by MTT on" `date`.; \
cat $MTTPATH/trans/rcs_header.sh; \
echo ;\
echo 'FIRST = 0.0; # First time in simulation output'; \
echo 'DT = 0.1; # Print interval'; \
echo 'LAST = 10.0; # Last time in simulation'; \
echo 'STEPFACTOR = 1; # Integration steps per print interval'; \
echo 'WMIN = -1; # Minimum frequency = 10^WMIN'; \
echo 'WMAX = 2; # Maximum frequency = 10^WMAX'; \
echo 'WSTEPS = 100; # Number of frequency steps'; \
echo 'INPUT = 1; # Index of the input'; \
)> $1_simpar.txt
#SUMMARY simpar simulation information (m)
$1_simpar.m: $1_simpar.txt $1_def.r $1_sympar.txt
mtt_txt2m $1 simpar
#SUMMARY numpar numerical parameter declaration -- default (txt)
$1_numpar.txt : $1_sympar.txt $1_def.r
ifeq ($target,$1_numpar.txt)
mtt_update $1 numpar update
else
mtt_update $1 numpar
endif
#SUMMARY state numerical state declaration -- default (txt)
ifeq ($steadystate_computation,yes)
$1_state.txt : $1_struc.txt $1_sympar.txt $1_def.r $1_ss.r
else
$1_state.txt : $1_struc.txt $1_sympar.txt $1_def.r
endif
ifeq ($target,$1_state.txt)
mtt_update $1 state update
else
mtt_update $1 state
endif
#SUMMARY input numerical state declaration -- default (txt)
$1_input.txt : $1_struc.txt $1_sympar.txt
ifeq ($target,$1_input.txt)
mtt_update $1 input update
else
mtt_update $1 input
endif
#SUMMARY logic Dynamic switch logic (txt)
$1_logic.txt : $1_def.r $1_struc.txt $1_sympar.txt
ifeq ($target,$1_logic.txt)
mtt_update $1 logic update
else
mtt_update $1 logic
endif
# Dummy target
FORCE:
ifeq ($use_sorted_equations,)
$1_ode2odes_common_%.stamp: $1_ae.% $1_input.% $1_logic.% $1_numpar.% $1_simpar.% $1_state.%
touch \$@
$1_ode2odes_common.o: $1_ae.o $1_input.o $1_logic.o $1_numpar.o $1_simpar.o $1_state.o
@echo "Creating $1_ode2odes_common.o"
ar -cr \$@ \$^
else
$1_ode2odes_common_%.stamp: $1_sae.% $1_input.% $1_logic.% $1_numpar.% $1_simpar.% $1_state.%
touch \$@
$1_ode2odes_common.o: $1_sae.o $1_input.o $1_logic.o $1_numpar.o $1_simpar.o $1_state.o
@echo "Creating $1_ode2odes_common.o"
ar -cr \$@ \$^
endif
ifeq ($use_sorted_equations,)
$1_ode2odes_euler_%.stamp $1_ode2odes_rk4_%.stamp: $1_ode.% $1_odeo.%
touch \$@
$1_ode2odes_euler.o $1_ode2odes_rk4.o: $1_ode.o $1_odeo.o mtt_euler.o
@echo "Creating \$@"
ar -cr \$@ \$^
else
$1_ode2odes_euler_%.stamp $1_ode2odes_rk4_%.stamp: $1_sesx.% $1_sesy.%
touch \$@
$1_ode2odes_euler.o $1_ode2odes_rk4.o: $1_sesx.o $1_sesy.o mtt_euler.o
@echo "Creating \$@"
ar -cr \$@ \$^
endif
$1_ode2odes_implicit_%.stamp: $1_cseo.% $1_csex.% $1_smxa.% $1_smxax.%
touch \$@
$1_ode2odes_implicit.o: $1_cseo.o $1_csex.o $1_smxa.o $1_smxax.o mtt_implicit.o
@echo "Creating $1_ode2odes_implicit.o"
ar -cr \$@ \$^
ifeq ($use_sorted_equations,)
$1_ode2odes_dassl_oct.stamp: $1_ode.oct $1_odeo.oct mtt_dassl.oct
touch \$@
$1_ode2odes_dassl_o.stamp: $1_ode.o $1_odeo.o mtt_dassl.o
touch \$@
$1_ode2odes_dassl_%.stamp: $1_ode.% $1_odeo.%
touch \$@
$1_ode2odes_dassl.o: $1_ode.o $1_odeo.o mtt_dassl.o
@echo "Creating \$@"
ar -cr \$@ \$^
else
$1_ode2odes_dassl_oct.stamp: $1_sesx.oct $1_sesy.oct mtt_dassl.oct
touch \$@
$1_ode2odes_dassl_o.stamp: $1_sesx.o $1_sesy.o mtt_dassl.o
touch \$@
$1_ode2odes_dassl_%.stamp: $1_sesx.% $1_sesy.%
touch \$@
$1_ode2odes_dassl.o: $1_sesx.o $1_sesy.o mtt_dassl.o
@echo "Creating \$@"
ar -cr \$@ \$^
endif
$1_ode2odes_${algebraic_solver}.cc: mtt_Solver.cc mtt_AlgebraicSolver.cc mtt_${algebraic_solver}.hh mtt_${algebraic_solver}.cc
$1_ode2odes_${algebraic_solver}.o: mtt_Solver.o mtt_AlgebraicSolver.o mtt_${algebraic_solver}.o
@echo "Creating $1_ode2odes_${algebraic_solver}.o"
ar -cr \$@ \$^
#SUMMARY numpar numerical parameter declaration (m)
$1_numpar.m: $1_numpar.txt $1_sympars.txt
mtt_txt2m $1 numpar
#SUMMARY numpar numerical parameter declaration (c)
#SUMMARY numpar numerical parameter declaration (view)
$1_numpar.c: $1_numpar.txt $1_sympar.c
txt2c $1 numpar
#SUMMARY logic logic input declaration (m)
$1_logic.m: $1_logic.txt $1_switch.txt
mtt_txt2m $1 logic
#SUMMARY state state declaration -- default (txt)
#$1_state.txt:
# mtt $mtt_switches $1 struc txt;
# mtt $mtt_switches $1 ss r;
# struc2state_txt2txt $1
#SUMMARY state state declaration (m)
$1_state.m: $1_state.txt $1_sympars.txt
mtt_txt2m $1 state
#SUMMARY desc Verbal description of system (tex)
$1_desc.tex:
makedesc $1
#SUMMARY params symbolic parameter setting (r)
$1_params.r:
echo Creating $1_params.r
( \
echo "%% Parameter file for system $1 ($1_params.r)"; \
echo "%% This file provides symbolic parameters for simplification";\
cat $MTTPATH/trans/m/rcs_header.txt; \
echo 'END;'; \
)> $1_params.r
#SUMMARY sspar steady-state definition (r)
$1_sspar.r:
struc2sspar_txt2r $1
#SUMMARY sspar steady-state parameters (tex)
#SUMMARY sspar steady-state parameters (view)
$1_sspar.tex: $1_sspar.r
txt2tex $1 sspar r
#SUMMARY rep* report (txt)
#SUMMARY rep report (tex)
#SUMMARY rep* report (view)
#SUMMARY rep* report (html)
ifeq ($documenttype,book)
$1_rep.txt:
dir2rep $1 $dotdot;
else
$1_rep.txt:
makerep_txt $1;
endif
#SUMMARY rbg raw bond graph (m)
#Raw bond graph: fig file to mfile
$1_rbg.m: $1_abg.fig $1_lbl.txt
rbg_fig2m $1
$1_cmp.m: $1_lbl.txt $1_cmp.txt
lbl2cmp_txt2m.pl --sys=$1 --$debug
$1_fig.fig: $1_rbg.m
#SUMMARY sabg stripped acausal bond graph (fig)
#SUMMARY sabg stripped acausal bond graph (ps)
#SUMMARY sabg stripped acausal bond graph (view)
$1_sabg.fig: $1_rbg.m
#Subsystem creation commands
#SUMMARY sub Executable subsystem list (sh)
ifeq ($start_at_abg,yes)
$1_sub.sh: $1_abg.m
abg2sub_m2sh $1
else
$1_sub.sh: $1_cmp.txt $1_aliased_subsystems_copied
cmp2sub_txt2sh $1
endif
#SUMMARY sub LaTeX subsystem list (tex)
#SUMMARY sub subsystem list (ps)
#SUMMARY sub subsystem list (view)
$1_sub.tex: $1_sub.sh
ifeq ($documenttype,section)
sub_sh2tex $1
else
sub_sh2tex -l $1
endif
#SUMMARY abg acausal bond graph (m)
#Raw bond graph to acausal bond graph: mfile
ifneq ($start_at_abg,yes)
$1_abg.m: $1_ibg.m $1_cmp.m $1_lbl.txt $1_alias.m $1_sub.sh $1_icd.m
@echo "Creating \$@"
(sh $1_sub.sh "mtt $mtt_switches -q -u -l $level+1 " ' abg m null || exit 1') || exit 1
ibg2abg_m $info_switch $1
endif
ifeq ("\$(wildcard $1_abg.dia)","$1_abg.dia")
$1_ibg.m: $1_abg.dia $1_alias.m
abg2ibg_dia2m $1
else
$1_ibg.m: $1_abg.fig $1_rbg.m
@echo "Creating \$@"
rbg2ibg_m $info_switch $1
endif
$1_connections.dat: $1_abg.m
abg2connections_m2dat $1
#SUMMARY cbg* causal bond graph (m)
#Acausal bond graph to causal bond graph: mfile
$1_cbg.m: $1_abg.m
abg2cbg_m $info_switch $causality_switch $1
$1_type.sh: $1_cbg.m
touch $1_type.sh
#SUMMARY cbg* causal bond graph (fig)
#SUMMARY cbg* causal bond graph (dia)
#SUMMARY cbg* causal bond graph (ps)
#SUMMARY cbg* causal bond graph (view)
#Causal bond graph: mfile to fig conversion
$1_cbg.fig: $1_cbg.m $1_fig.fig $1_type.sh
sh $1_type.sh 'echo cbg_m2fig ' ' ' ' ' | sh
$1_cbg.dia: $1_cbg.m
@sh $1_type.sh 'cbg_m2dia ' ' ' ' '
#SUMMARY ese elementary system equations (r)
#SUMMARY def definitions - system orders etc. (r)
#SUMMARY def definitions - system orders etc. (m)
#SUMMARY def definitions - system orders etc. (h)
#SUMMARY struc* structure - list of inputs, outputs and states (txt)
#SUMMARY struc structure - list of inputs, outputs and states (tex)
#SUMMARY struc* structure - list of inputs, outputs and states (view)
#Elementary system equations + definitions
${sys}_ese.r: ${sys}_cbg.m
cbg2ese_m2r $partition $info_switch $Subsystem; #ese_tidy $1
# sorted equations generated from seqn
${sys}_sese.m: ${sys}_def.r ${sys}_sese.r ${sys}_sympar.txt
echo Creating \$@
mtt_r2m ${sys} sese m
${sys}_sese.r: ${sys}_cbg.m ${sys}_struc.m
echo Creating \$@
cbg2sese_m2r $info_switch $Subsystem
# sorted equations generated by make
${sys}_sesx.m: ${sys}_def.r ${sys}_sesx.r ${sys}_sympar.txt
echo Creating \$@
mtt_r2m ${sys} sesx m
${sys}_sesy.m: ${sys}_def.r ${sys}_sesy.r ${sys}_sympar.txt
echo Creating \$@
mtt_r2m ${sys} sesy m
${sys}_sae.m: ${sys}_def.r ${sys}_sae.r ${sys}_sympar.txt
echo Creating \$@
mtt_r2m ${sys} sae m
${sys}_sesx.r: ${sys}_sese.make
echo Creating \$@
make -f \$< MTTdX > \$@
${sys}_sesy.r: ${sys}_sese.make
echo Creating \$@
make -f \$< MTTy > \$@
${sys}_sae.r: ${sys}_sese.make
echo Creating \$@
make -f \$< MTTyz > \$@
${sys}_sese.make: ${sys}_ese.r
echo Creating \$@
ese_r2make.pl --sys=${sys} --outfile=\$@ --$debug
$1_def.r: $1_ese.r
touch $1_def.r
$1_struc.txt: $1_ese.r
touch $1_struc.txt
$1_aliased.txt: $1_ese.r
touch $1_aliased.txt
$1_struc.tex: $1_struc.txt
struc_txt2tex $1
$1_struc.m: $1_struc.txt
struc_txt2m $1
$1_def.m: $1_def.r
def_r2m $1; matlab_tidy $1_def.m;
$1_def.h: $1_def.m $1_sympar.txt
def_m2h.sh $1
#SUMMARY rdae raw differential-algebraic equations (r)
#SUMMARY dae differential-algebraic equations (r)
#SUMMARY dae* differential-algebraic equations (m)
#SUMMARY dae differential-algebraic equations (tex)
#SUMMARY dae* differential-algebraic equations (view)
#SUMMARY dae differential-algebraic equations (ps)
#Differential-algebraic equations
${sys}_rdae.r: ${sys}_ese.r ${sys}_def.r $1_modpar.r ${Subsystem}_cr.r ${Subsystem}_subs.r
ifneq ($partition,)
echo Doing subsystems
mtt_make_subsystems ${sys} rdae r
endif
mtt_prepend.sh -p $1_modpar.r $1_ese.r # Add modulated parameters to start
ese2rdae_r ${cr_first} ${fixcc} ${Subsystem}; tidy ${Subsystem}_rdae.r
${sys}_dae.r: ${Subsystem}_rdae.r ${Subsystem}_def.r ${Subsystem}_subs.r ${Subsystem}_cr.r
ifneq ($partition,)
echo Doing subsystems
mtt_make_subsystems ${sys} dae r
endif
ifeq ($rdae_is_dae,1)
echo Copying $1_rdae.r to $1_dae.r
cp $1_rdae.r $1_dae.r
else
rdae2dae_r ${fixcc} ${Subsystem}; tidy ${Subsystem}_dae.r
endif
$1_dae.m: $1_def.r $1_dae.r $1_sympars.txt
dae_r2m $1; matlab_tidy $1_dae.m; matlab_tidy $1_daeo.m
$1_dae.c: $1_def.r $1_dae.r $1_sympar.r
dae_r2c $1; c_tidy $1_dae.c
$1_dae.tex: $1_dae.r $1_simp.r
dae_r2tex $partition $1; latex_tidy $1_dae.tex
#SUMMARY ae algebraic equations - unknown inputs (r)
#SUMMARY ae algebraic equations - unknown inputs (m)
#SUMMARY ae algebraic equations - unknown inputs (cc)
ifeq ($algebraic_solver,noAlgebraicSolver)
$1_ae.r:
else
$1_ae.r: $1_cse.r
endif
touch \$@
$1_ae.m: $1_ae.r
mtt_r2m $1 ae
#SUMMARY cse constrained-state equations (r)
#SUMMARY cse* constrained-state equations (m)
#SUMMARY cse* constrained-state equations (oct)
#SUMMARY cse constrained-state equations (tex)
#SUMMARY cse* constrained-state equations (view)
#SUMMARY cse constrained-state equations (ps)
#Constrained-state equations
${sys}_cse.r: ${Subsystem}_dae.r ${Subsystem}_dae.r ${Subsystem}_def.r ${Subsystem}_subs.r
ifneq ($partition,)
echo Doing subsystems
mtt_make_subsystems ${sys} cse r
endif
dae2cse_r $fixcc $optimise $Solve ${Subsystem}; tidy ${Subsystem}_cse.r #$1_subs.r
$1_csex.r: $1_cse.r
touch $1_csex.r
$1_cseo.r: $1_cse.r
touch $1_cseo.r
#$1_cse.m: $1_def.r $1_cse.r $1_sympar.r $1_subs.r
# cse_r2m $1; matlab_tidy $1_cse.m
${sys}_cse.m: ${Subsystem}_def.r ${Subsystem}_cse.r ${sys}_sympars.txt
ifneq ($partition,)
echo Doing subsystems
mtt_cp_subrep ${sys} sympars txt
mtt_make_subsystems ${sys} cse m
endif
mtt_r2m ${Subsystem} cse;# matlab_tidy $1_cse.m; matlab_tidy $1_cseo.m;
${sys}_cseo.m: ${Subsystem}_def.r ${Subsystem}_cseo.r ${sys}_sympars.txt
ifneq ($partition,)
echo Doing subsystems
mtt_cp_subrep ${sys} sympars txt
mtt_make_subsystems ${sys} cseo m
endif
mtt_r2m ${Subsystem} cseo
${sys}_csex.m: ${Subsystem}_def.r ${Subsystem}_csex.r ${sys}_sympars.txt
ifneq ($partition,)
echo Doing subsystems
mtt_cp_subrep ${sys} sympars txt
mtt_make_subsystems ${sys} csex m
endif
mtt_r2m ${Subsystem} csex
$1_cse.tex: $1_cse.r $1_sympar.r $1_simp.r
cse_r2tex $1 $2; latex_tidy $1_cse.tex
#SUMMARY scse sensitivity constrained-state equations (r)
#SUMMARY scse sensitivity constrained-state equations (tex)
#SUMMARY scse sensitivity constrained-state equations (ps)
$1_scse.r: $1_cse.r $1_def.r
cse2scse_r $1 "$4"; tidy $1_scse.r
#$1_cse.m: $1_def.r $1_cse.r $1_sympar.r $1_subs.r
# cse_r2m $1; matlab_tidy $1_cse.m
$1_scse.m: $1_def.m $1_scse.r $1_sympars.txt
mtt_r2m $optimise -parameters $1 scse;
matlab_tidy $1_scse.m; matlab_tidy $1_scseo.m;
$1_scse.tex: $1_scse.r $1_sympar.r $1_simp.r
cse_r2tex $1 $2; latex_tidy $1_scse.tex
#SUMMARY ode ordinary differential equations (r)
#SUMMARY ode* ordinary differential equations (m)
#SUMMARY ode ordinary differential equations (c)
#SUMMARY ode ordinary differential equations (tex)
#SUMMARY ode* ordinary differential equations (view)
#SUMMARY ode ordinary differential equations (ps)
#SUMMARY ode ordinary differential equations (oct)
#Ordinary differential equations
ifeq ($dae_is_ode,1)
$1_ode.r: $1_dae.r
echo Copying $1_dae.r to $1_ode.r
cp $1_dae.r $1_ode.r
else
$1_ode.r: $1_cse.r $1_cseo.r $1_def.r $1_sympar.r $1_subs.r
cse2ode_r $optimise $1; tidy $1_ode.r
endif
$1_odeo.r: $1_ode.r
touch $1_odeo.r
$1_ode.m: $1_def.r $1_ode.r
mtt_r2m $optimise -parameters $1 ode m; # matlab_tidy $1_ode.m
$1_odeo.m: $1_def.r $1_odeo.r
mtt_r2m $1 odeo m
$1_odea.m: $1_ode.m
touch $1_odea.m
$1_ode.tex: $1_ode.r $1_sympar.r $1_simp.r
ode_r2tex $1; latex_tidy $1_ode.tex
$1_lde.r: $1_dae.r
dae2lde_r $optimise $1; tidy $1_lde.r
$1_lde.tex: $1_lde.r $1_sympar.r $1_simp.r
lde_r2tex $1; latex_tidy $1_lde.tex
# The main simulation programme
ifeq ($integration_method,implicit)
$1_ode2odes.m : $1_def.r $1_sympars.txt \
$1_smxa.m $1_smxax.m\
$1_simpar.m $1_numpar.m $1_state.m $1_input.m \
$1_csex.m $1_cseo.m $1_logic.m
ifeq ($using_oct,yes)
touch $1_ode2odes.m # Create a dummy which wont' be used
mtt $mtt_switches -q -u $1 ode2odes oct
else
make_ode2odes $1 m $integration_method $algebraic_solver $use_sorted_equations
endif
endif
ifneq ($integration_method,implicit)
ifeq ($use_sorted_equations,seqn)
$1_ode2odes.m : $1_def.r $1_sympars.txt\
$1_simpar.m $1_numpar.m $1_state.m $1_input.m \
$1_sese.m $1_logic.m
else
ifeq ($use_sorted_equations,make)
$1_ode2odes.m : $1_def.r $1_sympars.txt\
$1_simpar.m $1_numpar.m $1_state.m $1_input.m \
$1_sesx.m $1_sesy.m $1_logic.m
else
$1_ode2odes.m : $1_def.r $1_sympars.txt\
$1_simpar.m $1_numpar.m $1_state.m $1_input.m \
$1_ode.m $1_odeo.m $1_logic.m
endif
endif
ifeq ($using_oct,yes)
echo "*** Warning: Shouldn't be here! Creating dummy $1_ode2odes.m"
touch $1_ode2odes.m # Create a dummy which wont' be used
mtt $mtt_switches -q -u $1 ode2odes oct
else
make_ode2odes $1 m $integration_method $algebraic_solver $use_sorted_equations
endif
endif
#SUMMARY ode2odes Simulation function (m)
#SUMMARY ode2odes Simulation function (cc)
#SUMMARY ode2odes Simulation function (oct)
#SUMMARY ode2odes Simulation function (exe)
$1_ode2odes.exe: $1_def.h $1_sympar.h\
$1_ode2odes.o $1_ode2odes_common.o $1_ode2odes_${integration_method}.o $1_ode2odes_${algebraic_solver}.o mtt_kpathsea.o
echo Creating $1_ode2odes.exe
${MTT_CXX} ${MTT_CXXFLAGS} -o $1_ode2odes.exe\
$1_ode2odes.o $1_ode2odes_common.o $1_ode2odes_${integration_method}.o $1_ode2odes_${algebraic_solver}.o mtt_kpathsea.o\
${MTT_LDFLAGS} ${MTT_CXXLIBS}
$1_ode2odes.o: $1_ode2odes.cc $1_ode2odes_common.o $1_ode2odes_${integration_method}.o $1_ode2odes_${algebraic_solver}.o
echo Creating $1_ode2odes.o
${MTT_CXX} ${MTT_CXXFLAGS} ${MTT_CXXINCS} -c $1_ode2odes.cc -DCODEGENTARGET=STANDALONE
$1_ode2odes.oct: $1_ode2odes.cc $1_ode2odes_common_oct.stamp $1_ode2odes_${integration_method}_oct.stamp $1_ode2odes_${algebraic_solver}.o
touch $1_ode2odes.m
echo Creating $1_ode2odes.oct
$MKOCTFILE ${MTT_CXXINCS} -DCODEGENTARGET=OCTAVEDLD $1_ode2odes.cc mtt_${algebraic_solver}.cc mtt_Solver.cc mtt_AlgebraicSolver.cc
$1_ode2odes.mexglx: $1_ode2odes.cc $1_ode2odes_common.o $1_ode2odes_${integration_method}.o $1_ode2odes_${algebraic_solver}.o
touch $1_ode2odes.m
echo Creating $1_ode2odes.mexglx
${MTT_CXX} -DCODEGENTARGET=MATLABMEX -o $1_ode2odes.mexglx $1_ode2odes.cc \
$1_ode2odes_common.o $1_ode2odes_${integration_method}.o $1_ode2odes_${algebraic_solver}.o \
${MTT_MATLAB_FLAGS} ${MTT_CXXINCS} ${MTT_CXXLIBS} ${MTT_CXXFLAGS} \
${MTT_LIB}/cc/mtt_kpathsea.cc ${MTT_LIB}/cc/mtt_matlab_octave.cc
$1_ode2odes.cc: $1_def.r $1_sympars.txt\
$1_ode2odes_common_m.stamp $1_ode2odes_common_cc.stamp\
$1_ode2odes_${integration_method}_m.stamp $1_ode2odes_${integration_method}_cc.stamp\
mtt_Solver.cc mtt_AlgebraicSolver.cc mtt_${algebraic_solver}.cc mtt_${algebraic_solver}.hh
touch $1_ode2odes.m
make_ode2odes $1 cc $integration_method $algebraic_solver $use_sorted_equations
#Conversion of m to p to c
#SUMMARY ode ordinary differential equations (c)
#SUMMARY ode ordinary differential equations (p)
#SUMMARY state state declaration (c)
#SUMMARY state state declaration (p)
$1_simpar.p : $1_def.r $1_simpar.m
mtt_m2p $1_simpar.m
$1_numpar.p : $1_def.r $1_numpar.m
mtt_m2p $1_numpar.m
$1_state.p : $1_def.r $1_state.m
mtt_m2p $1_state.m
#SUMMARY input numerical input declaration (m)
ifeq ($stdin,stdin)
$1_input.m : $1_def.r
make_stdin $1 m
$1_input.p : $1_def.r
make_stdin $1 p
$1_input.cc:
make_stdin $1 cc
else
$1_input.m: $1_input.txt $1_sympars.txt
mtt_txt2m $1 input
$1_input.p : $1_def.r $1_input.m
mtt_m2p $1_input.m
endif
$1_ode.p : $1_def.r $1_ode.m
mtt_m2p $1_ode.m
$1_odeo.p : $1_def.r $1_odeo.m
mtt_m2p $1_odeo.m
$1_csex.p : $1_def.r $1_cse.m
mtt_m2p $1_csex.m
$1_cseo.p : $1_def.r $1_cseo.m
mtt_m2p $1_cseo.m
$1_smx.p : $1_def.r $1_smx.m
mtt_m2p $1_smx.m
$1_smxa.p : $1_def.r $1_smxa.m
mtt_m2p $1_smxa.m
$1_smxax.p : $1_def.r $1_smxax.m
mtt_m2p $1_smxax.m
$1_logic.p : $1_def.r $1_logic.m
mtt_m2p $1_logic.m
ifeq ($integration_method,implicit)
$1_ode2odes.p : $1_ode2odes.m $1_def.r $1_smxa.p $1_smxax.p\
$1_simpar.p $1_numpar.p $1_state.p $1_input.p \
$1_csex.p $1_cseo.p $1_logic.p
mtt_m2p $1_ode2odes.m $integration_method $stdin
endif
ifneq ($integration_method,implicit)
$1_ode2odes.p : $1_ode2odes.m $1_def.r\
$1_simpar.p $1_numpar.p $1_state.p $1_input.p \
$1_ode.p $1_odeo.p $1_logic.p
mtt_m2p $1_ode2odes.m $integration_method $stdin
endif
$1_ode2odes.c: $1_ode2odes.p
mtt_p2c $info_switch $1 ode2odes
##SUMMARY sim Octave simulation function (m)
#ifeq ($computation,octave)
#$1_sim.m: $1_def.r $1_sympar.txt $1_cse.m $1_cseo.m $1_smxa.m $1_smxax.m $1_numpar.m $1_state.m
mtt_make_sim $1 $integration_method $computation
#endif
#ifeq ($computation,c)
#$1_sim.m: $1_def.r $1_sympar.txt $1_ode2odes.out $1_numpar.m $1_state.m
# mtt_make_sim $1 $integration_method $computation
#endif
#SUMMARY ssim Octave sensitivity simulation function (m)
$1_ssim.m: $1_def.r $1_ode2odes.${m}
make_ssim $1 m
#SUMMARY sim Octave simulation function (m)
$1_sim.m: $1_def.r $1_ode2odes.${m}
make_sim $1 m
#SUMMARY obs observer equations for CGPC (r)
#SUMMARY obs* observer equations for CGPC (m)
#SUMMARY obs observer equations for CGPC (tex)
#SUMMARY obs* observer equations for CGPC (view)
#SUMMARY obs observer equations for CGPC (ps)
#Observer functions for GPC
$1_obs.r: $1_ode.r $1_def.r $1_obspar.r $1_subs.r
ode2obs_r $1; tidy $1_obs.r
$1_obs.m: $1_def.r $1_sympars.txt $1_obs.r $1_obspar.r $1_numpar.m
mtt_r2m $optimise -parameters $1 obs
$1_obs.tex: $1_obs.r $1_sympar.r $1_simp.r
obs_r2tex $1; latex_tidy $1_obs.tex
#SUMMARY rfe robot-form equations (r)
#SUMMARY rfe robot-form equations (tex)
#SUMMARY rfe* robot-form equations (view)
#SUMMARY rfe robot-form equations (ps)
#Robot-form equations
$1_rfe.r: $1_cse.r $1_csm.r $1_def.r $1_sympar.r
cse2rfe_r $1; tidy $1_rfe.r
$1_rfe.tex: $1_rfe.r $1_sympar.r $1_simp.r
rfe_r2tex $1; latex_tidy $1_rfe.tex
#SUMMARY ss steady-state equations (r)
#SUMMARY ss* steady-state equations (m)
#SUMMARY ss steady-state equations (tex)
#SUMMARY ss* steady-state equations (view)
#SUMMARY ss steady-state equations (ps)
#Steady-states
$1_ss.r: $1_def.r $1_sspar.r $1_cr.r $1_ode.r
sspar2ss_r $1; tidy $1_ss.r
$1_ss.m: $1_def.r $1_ss.r $1_numpar.m
ss_r2m $1; matlab_tidy $1_ss.m
$1_ss.tex: $1_def.r $1_ss.r $1_simp.r
ss_r2tex $1; latex_tidy $1_ss.tex
#SUMMARY dm descriptor matrices (r)
#SUMMARY dm* descriptor matrices (m)
#SUMMARY dm descriptor matrices (tex)
#SUMMARY dm* descriptor matrices (view)
#SUMMARY dm descriptor matrices (ps)
#Linearised system: descriptor matrices
$1_dm.r: $1_dae.r $1_def.r $1_cr.r $1_ss.r $1_sympar.r
dae2dm_r $1; tidy $1_dm.r
$1_dm.m: $1_def.r $1_dm.r $1_sympars.txt
mtt_r2m $optimise -parameters $1 dm
$1_dm.tex: $1_dm.r $1_sympar.r $1_simp.r
dm_r2tex $1; latex_tidy $1_dm.tex
#SUMMARY csm constrained-state matrices (r)
#SUMMARY csm constrained-state matrices (m)
#SUMMARY csm constrained-state matrices (tex)
#SUMMARY csm constrained-state matrices (view)
#SUMMARY csm constrained-state matrices (ps)
#Linearised system: constrained-state matrices
$1_csm.r: $1_cse.r $1_def.r $1_cr.r $1_sspar.r
cse2csm_r $1 csm; tidy $1_csm.r
$1_csm.m: $1_def.r $1_csm.r $1_sympars.txt
mtt_r2m $optimise -parameters $1 csm; matlab_tidy $1_csm.m
$1_csm.tex: $1_csm.r $1_sympar.r $1_simp.r
csm_r2tex $1 csm; latex_tidy $1_csm.tex
#SUMMARY scsm sensitivity constrained-state matrices (r)
#SUMMARY scsm sensitivity constrained-state matrices (m)
#SUMMARY scsm sensitivity constrained-state matrices (tex)
#SUMMARY scsm sensitivity constrained-state matrices (view)
#SUMMARY scsm sensitivity constrained-state matrices (ps)
#Linearised system: sensitivity constrained-state matrices
$1_scsm.r: $1_scse.r $1_def.r $1_cr.r $1_sympar.r $1_sspar.r
cse2csm_r $1 scsm; tidy $1_scsm.r
$1_scsm.m: $1_def.r $1_scsm.r $1_sympars.txt
csm_r2m $1 scsm; matlab_tidy $1_scsm.m
$1_scsm.tex: $1_scsm.r $1_sympar.r $1_simp.r
csm_r2tex $1 scsm; latex_tidy $1_scsm.tex
#SUMMARY sm state matrices (r)
#SUMMARY sm* state matrices (m)
#SUMMARY sm state matrices (icad)
#SUMMARY sm state matrices (tex)
#SUMMARY sm state matrices (c)
#SUMMARY sm* state matrices (view)
#SUMMARY sm state matrices (ps)
#Linearised system: state matrices
$1_sm.r: $1_csm.r $1_def.r $1_cr.r $1_ss.r $1_sympar.r
csm2sm_r $optimise $1 sm; tidy $1_sm.r
$1_sm.m: $1_def.r $1_sm.r $1_sympars.txt
mtt_r2m $optimise -parameters $1 sm
$1_sm.icad: $1_sm.m $1_numpar.m
sm_m2icad $1
$1_sm.c: $1_def.r $1_sm.r $1_sympar.c
sm_r2c $1
$1_sm.tex: $1_sm.r $1_sympar.r $1_simp.r
sm_r2tex $1 sm; latex_tidy $1_sm.tex
#SUMMARY ssm sensitivity state matrices (r)
#SUMMARY ssm sensitivity state matrices (icad)
#SUMMARY ssm sensitivity state matrices (tex)
#SUMMARY ssm sensitivity state matrices (c)
#SUMMARY ssm sensitivity state matrices (ps)
#Linearised system: sensitivity state matrices
$1_ssm.r: $1_scsm.r $1_def.r $1_cr.r $1_ss.r $1_sympar.r
csm2sm_r $optimise $1 ssm; tidy $1_ssm.r
$1_ssm.m: $1_def.r $1_ssm.r $1_sympars.txt
mtt_r2m $optimise -parameters $1 ssm
$1_ssm.tex: $1_ssm.r $1_sympar.r $1_simp.r
sm_r2tex $1 ssm; latex_tidy $1_ssm.tex
#SUMMARY smx state matrices with variable state x (r)
#SUMMARY smx state matrices with variable state x (m)
#SUMMARY smxx Sparse computation of Ax (m)
#SUMMARY smxtx Sparse computation of ATx (m)
$1_smx.r: $1_def.r $1_def.m $1_ode.r $1_subs.r
ode2smx_lang $1 r; tidy $1_smx.r
$1_smx.m: $1_def.r $1_def.m $1_cse.r $1_sympars.txt $1_subs.r
cse2smx_lang $fixcc $optimise -parameters $1 smx m
$1_smxa.m: $1_def.r $1_def.m $1_cse.r $1_sympars.txt $1_subs.r
cse2smx_lang $fixcc $optimise -parameters $matrix_smxa $1 smxa m
$1_smxax.m: $1_def.r $1_def.m $1_cse.r $1_sympars.txt $1_subs.r
cse2smx_lang $fixcc $optimise -parameters $1 smxax m
#SUMMARY smc controller form state matrices etc. - siso only (r)
#SUMMARY smc controller form state matrices etc. - siso only (tex)
#SUMMARY smc* controller form state matrices etc. - siso only (m)
#SUMMARY smc* controller form state matrices etc. - siso only (view)
#SUMMARY smc controller form state matrices etc. - siso only (ps)
#Linearised system: controller form state matrices etc.
$1_smc.r: $1_sm.r $1_def.r $1_tf.r
sm2smc_r $1; tidy $1_smc.r
$1_smc.tex: $1_smc.r $1_simp.r
smc_r2tex $1; latex_tidy $1_smc.tex
$1_smc.m: $1_def.r $1_smc.r $1_numpar.m
smc_r2m $1; matlab_tidy $1_smc.m
#SUMMARY smo observer form state matrices etc. - siso only (r)
#SUMMARY smo observer form state matrices etc. - siso only (tex)
#SUMMARY smo* observer form state matrices etc. - siso only (m)
#SUMMARY smo* observer form state matrices etc. - siso only (view)
#SUMMARY smo observer form state matrices etc. - siso only (ps)
#Linearised system: observer form state matrices etc.
$1_smo.r: $1_sm.r $1_def.r $1_tf.r
sm2smo_r $1; tidy $1_smo.r
$1_smo.tex: $1_smo.r $1_simp.r
smo_r2tex $1; latex_tidy $1_smo.tex
$1_smo.m: $1_def.r $1_smo.r $1_numpar.m
smo_r2m $1; matlab_tidy $1_smo.m
#SUMMARY ssk State-space controller gain - siso only (r)
#SUMMARY ssk State-space controller gain - siso only (tex)
#SUMMARY ssk* State-space controller gain - siso only (m)
#SUMMARY ssk* State-space controller gain - siso only (view)
#SUMMARY ssk State-space controller gain - siso only (ps)
#Linearised system: State-space controller gain
$1_ssk.r: $1_def.r $1_smc.r
smc2ssk_r $1; tidy $1_ssk.r
$1_ssk.tex: $1_ssk.r $1_simp.r
ssk_r2tex $1; latex_tidy $1_ssk.tex
$1_ssk.m: $1_def.r $1_ssk.r $1_numpar.m
ssk_r2m $1; matlab_tidy $1_ssk.m
#SUMMARY ssl State-space observer gain - siso only (r)
#SUMMARY ssl State-space observer gain - siso only (tex)
#SUMMARY ssl* State-space observer gain - siso only (m)
#SUMMARY ssl* State-space observer gain - siso only (view)
#SUMMARY ssl State-space observer gain - siso only (ps)
#Linearised system: State-space observer gain
$1_ssl.r: $1_def.r $1_smo.r
smo2ssl_r $1; tidy $1_ssl.r
$1_ssl.tex: $1_ssl.r $1_simp.r
ssl_r2tex $1; latex_tidy $1_ssl.tex
$1_ssl.m: $1_def.r $1_ssl.r $1_numpar.m
ssl_r2m $1; matlab_tidy $1_ssl.m
#SUMMARY tf transfer function (r)
#SUMMARY tf* transfer function (m)
#SUMMARY tf transfer function (tex)
#SUMMARY tf* transfer function (view)
#SUMMARY tf transfer function (ps)
#Linearised system: transfer function
$1_tf.r: $1_dm.r $1_sympar.r
dm2tf_r $1; tidy $1_tf.r
$1_tf.m: $1_def.r $1_sympars.txt $1_tf.r
tf_r2m $1; matlab_tidy $1_tf.m
$1_tf.tex: $1_def.r $1_tf.r $1_sympar.r $1_simp.r
tf_r2tex $1; latex_tidy $1_tf.tex
#SUMMARY pkim partialyy-known system identification matrix (r)
#SUMMARY pkim partialyy-known system identification matrix (tex)
#SUMMARY pkim partialyy-known system identification matrix (view)
#SUMMARY pkim partialyy-known system identification matrix (ps)
$1_pkim.r: $1_tf.r $1_sympar.r
tf2pkim_r $1; tidy $1_pkim.r
$1_pkim.tex: $1_def.r $1_pkim.r $1_simp.r
pkim_r2tex $1; latex_tidy $1_pkim.tex
#SUMMARY ctf controller transfer function (r)
#SUMMARY ctf controller transfer function (m)
#SUMMARY ctf controller transfer function (tex)
#SUMMARY ctf controller transfer function (view)
#SUMMARY ctf controller transfer function (ps)
#Linearised system: transfer function
$1_ctf.r: $1_dm.r $1_ssk.r $1_ssl.r $1_sm.r
ssk2ctf_r $1; tidy $1_ctf.r
$1_ctf.m: $1_def.r $1_ctf.r
ctf_r2m $1; matlab_tidy $1_ctf.m
$1_ctf.tex: $1_def.r $1_ctf.r $1_sympar.r $1_simp.r
ctf_r2tex $1; latex_tidy $1_ctf.tex
#SUMMARY ir impulse response - state (m)
#SUMMARY ir impulse response - state (dat)
#SUMMARY ir impulse response - state (ps)
#SUMMARY ir impulse response - state (view)
#SUMMARY iro impulse response - output (m)
#SUMMARY iro impulse response - output (dat)
#SUMMARY iro impulse response - output (ps)
#SUMMARY iro impulse response - output (view)
#SUMMARY sr step response - state (m)
#SUMMARY sr step response - state (dat)
#SUMMARY sr step response - state (ps)
#SUMMARY sr step response - state (view)
#SUMMARY sro* step response - output (m)
#SUMMARY sro step response - output (dat)
#SUMMARY sro step response - output (ps)
#SUMMARY sro* step response - output (view)
#SUMMARY odes ode solution - state (m)
#SUMMARY odes* ode solution - state (dat)
#SUMMARY odes* ode solution - state & output for SciGraphica (sg)
#SUMMARY odes* ode solution - state (ps)
#SUMMARY odes* ode solution - state (view)
#SUMMARY sms ode (in state matrix form) solution - state & output (c)
#SUMMARY odeso ode solution - output (m)
#SUMMARY odeso* ode solution - output (dat)
#SUMMARY odeso* ode solution - output for spreadsheet (sdat)
#SUMMARY odeso ode solution - output (ps)
#SUMMARY odeso* ode solution - output (view)
#SUMMARY daes dae solution - state (m)
#SUMMARY daes dae solution - state (dat)
#SUMMARY daes dae solution - state (ps)
#SUMMARY daes dae solution - state (view)
#SUMMARY daeso dae solution - output (m)
#SUMMARY daeso dae solution - output (dat)
#SUMMARY daeso dae solution - output (ps)
#SUMMARY daeso dae solution - output (view)
#Time responses
$1_ir.m: $1_sm.m $1_numpar.m $1_def.m $1_simpar.m
sm2ir_m $1 '$ARGS'
$1_iro.m: $1_ir.m
touch $1_iro.m
$1_ir.dat: $1_ir.m
m2dat $1_ir
$1_iro.dat: $1_iro.m
m2dat $1_iro
$1_sr.m: $1_sm.m $1_numpar.m $1_simpar.m $1_def.m
sm2sr_m $1
$1_sr.dat: $1_sr.m
m2dat $1_sr
$1_sro.m: $1_sr.m
touch $1_sro.m$
$1_sro.dat: $1_sro.m
m2dat $1_sro
1_odes.c: $1_ode.c $1_def.r $1_sympar.r
ode2odes_r2c $1
$1_sms.c: $1_sm.c $1_def.r $1_sympar.r
sm2sms_r2c $1
.PRECIOUS: $1_odes.dat2
ifeq ($computation,octave)
ifeq ($using_oct,yes)
$1_odes.dat2: $1_ode2odes.oct
time octave_ode2odes $1
else
$1_odes.dat2: $1_ode2odes.m
time octave_ode2odes $1
endif
endif
$1_ode2odes.out: $1_ode2odes.c $1_cr.h
echo Creating $1_odes.out by compiling $1_ode2odes.c
$CC $1_ode2odes.c -lp2c -lm -o $1_ode2odes.out
ifeq ($computation,c)
$1_odes.dat2: $1_ode2odes.out
echo Creating $1_odes.dat2 using c version
time ./$1_ode2odes.out>$1_odes.dat2
endif
ifeq ($computation,cc)
$1_sim.exe: $1_ese.r
mtt $mtt_switches -q $1 sim exe
$1_odes.dat2: $1_ode2odes.exe
echo Creating $1_odes.dat2 using cc version $ARGS
time ./$1_ode2odes.exe $ARGS >$1_odes.dat2
endif
#$1_odeso.m: $1_odes.m
# touch $1_odeso.m
#$1_smso.m: $1_sms.m
# touch $1_smso.m
#$1_daes.m: $1_dae.m $1_numpar.m $1_def.m $1_input.m $1_simpar.m
# dae2daes_m $1 '$ARGS'
#$1_daeso.m: $1_daes.m
# touch $1_daeso.m
#Conversion of data files from dat to sdat format
$1_odeso.sdat: $1_odeso.dat $1_struc.txt
odeso_dat2sdat $1
$1_odes.sdat: $1_odes.dat $1_struc.txt
odes_dat2sdat $1
#Conversion of data to SciGraphica
$1_odes.sg: $1_struc.m $1_odes.dat2
echo Creating $1_odes.sg
dat22sg.sh $1
#SUMMARY odess ode numerical steady-states - states (m)
#SUMMARY odess ode numerical steady-states - states (dat)
#SUMMARY odess ode numerical steady-states - states (ps)
#SUMMARY odess ode numerical steady-states - states (view)
#SUMMARY odesso ode numerical steady-states - outputs (m)
#SUMMARY odesso ode numerical steady-states - outputs (dat)
#SUMMARY odesso ode numerical steady-states - outputs (ps)
#SUMMARY odesso ode numerical steady-states - outputs (view)
#Numerical steady states
$1_odess.dat2: $1_ode.m $1_odeo.m $1_numpar.m $1_input.m $1_simpar.m
ode2odess_m2dat2 $1
#$1_odess.m: $1_ode.m $1_odeo.m $1_numpar.m $1_input.m $1_simpar.m
# ode2odess_m $1
#$1_odesso.m: $1_odess.m
# touch $1_odesso.m
#SUMMARY fr frequency response (m)
#SUMMARY fr frequency response (dat)
#SUMMARY fr frequency response (ps)
#SUMMARY fr frequency response (view)
#SUMMARY lmfr loglog modulus frequency response (m)
#SUMMARY lmfr loglog modulus frequency response (dat)
#SUMMARY lmfr loglog modulus frequency response (ps)
#SUMMARY lmfr* loglog modulus frequency response (view)
#SUMMARY lpfr semilog phase frequency response (m)
#SUMMARY lpfr semilog phase frequency response (dat)
#SUMMARY lpfr semilog phase frequency response (ps)
#SUMMARY lpfr* semilog phase frequency response (view)
#SUMMARY nyfr Nyquist style frequency response (m)
#SUMMARY nyfr Nyquist style frequency response (dat)
#SUMMARY nyfr Nyquist style frequency response (ps)
#SUMMARY nyfr Nyquist style frequency response (view)
#SUMMARY nifr Nichols style frequency response (m)
#SUMMARY nifr Nichols style frequency response (dat)
#SUMMARY nifr Nichols style frequency response (ps)
#SUMMARY nifr Nichols style frequency response (view)
#Frequency responses
$1_fr.m: $1_dm.m $1_numpar.m $1_def.m $1_simpar.m
dm2fr_m $1
$1_fr.dat: $1_sr.m
m2dat $1_fr
$1_lmfr.dat: $1_fr.m
m2dat $1_lmfr
$1_lpfr.dat: $1_fr.m
m2dat $1_lpfr
$1_nyfr.dat: $1_fr.m
m2dat $1_nyfr
$1_nifr.dat: $1_fr.m
m2dat $1_nifr
ifeq ($REPTYPE,txt)
#Generic conversion of txt files to tex files
$1_$2.tex: $1_$2.txt
txt2tex $1 $2 txt
endif
#Conversion of dat2 files to dat format
$1_odeso.dat: $1_odes.dat2 $1_def.r
echo Creating $1_odeso.dat
dat22dat $1 ode so
$1_odes.dat: $1_odes.dat2 $1_def.r
echo Creating $1_odes.dat
dat22dat $1 ode s
$1_odesso.dat: $1_odess.dat2 $1_def.r
echo Creating $1_odesso.dat
dat22dat $1 odes so
$1_odess.dat: $1_odess.dat2 $1_def.r
echo Creating $1_odess.dat
dat22dat $1 odes s
#Generic conversion of data files from dat to (gplot) gdat format
$1_$2.gdat: $1_$2.dat $1_struc.txt $1_args.m
dat2gdat $1 $2 "$ARGS" "$NyquistStyle"
## Conversion of gdat to fig files
ifeq ($REPTYPE,data)
$1_$2.fig: $1_$2.gdat
gdat2fig $1_$2
ifneq ($ARGS,) ## Multiple plots
echo Creating $1_$2$__ARGS.fig
mv $1_$2.fig $1_$2$__ARGS.fig
rm -f $1_$2.gdat
endif
## Conversion of gdat fig files to ps/pdf
ifeq ($ARGS,) # single plot
$1_$2.$ps : $1_$2.fig
echo Creating $1_$2.$ps
fig2dev -L$eps $1_$2.fig > $1_$2.$ps
else ## Multiple plots
$1_$2.$ps : $1_$2.fig
mtt -q -r $1 $2 dat $4
echo Creating $1_$2$__ARGS.$ps
fig2dev -L$eps $1_$2$__ARGS.fig > $1_$2$__ARGS.$ps
endif
endif
#Generic conversion of Latex to latex document
mtt.sty:
echo Copying mtt.sty to here
cp $MTTPATH/trans/mtt.sty .
$1_$2.doc: $1_$2.tex
makedoc "$mtt_switches" "$1" "$2" "$3" "$4" "$documenttype" "$ps"
#Create PostScript version of dia and fig files
ifeq ($REPTYPE,bg)
ifeq ("\$(wildcard $1_abg.dia)","$1_abg.dia")
$1_$2.$ps : $1_$2.dia
else
$1_$2.$ps : $1_$2.fig
endif
echo Creating $1_$2.$ps
bg2eps $1 $2 $ps $eps
endif
ifeq ($REPTYPE,tex)
#Generic conversion of LaTeX doc to dvi or pdf
$1_$2.$ps: $1_$2.doc
doc2$ps $1_$2 "$documenttype"
endif
ifeq ($REPTYPE,tex)
#Create html version of dvi file
$1_$2.html: $1_$2.doc
echo Creating $1_$2/$1_$2.html
$LATEX2HTML $1_$2.doc>latex2html.log 2>latex2html.log
endif
#Default view
ifeq ($REPTYPE,bg)
$1_$2.view : $Subsystem_$2.pview
endif
ifeq ($REPTYPE,data)
$1_$2.view: $1_$2.$ps
ifeq ($ARGS,) # single plot
echo Creating view of $1_$2 - $ps file
$psview $1_$2.$ps&
else
echo Creating view of $1_$2$__ARGS - $ps file
$psview $1_$2$__ARGS.$ps&
endif
endif
ifeq ($REPTYPE,tex)
$1_$2.view : $1_$2.pview
endif
ifeq ($REPTYPE,txt)
$1_$2.view : $1_$2.tview
endif
# Hypertext view
$1_$2.hview: $1_$2.html
$HTMLVIEW $1_$2/$1_$2.html&
#View a ps file
$Subsystem_$2.pview: $1_$2.$ps
echo Creating view of $Subsystem_$2 - $ps file
mtt_multi $psview $Subsystem $2 $ps $viewlevel | sh
#View a gdat file
$1_$2.dview: $1_$2.gdat
echo Creating view of $1_$2
gdat2view $1_$2 '$ARGS'&
#View a tex file
$1_$2.tview: $1_$2.dvi
echo Creating view of $1_$2
$DVIVIEW $1_$2.dvi&
#Report generation
$1_rep.make: $1_rep.txt
rep_txt2make $1 "$mtt_switches"
$1_reps_made:
rep_txt2sh $1 "$mtt_switches"; touch $1_reps_made
$1_rep.tex: $1_rep.txt $1_reps_made
rep_txt2tex $1 "$documenttype" "$directory" "$mtt_switches";
#SUMMARY abg Acausal bond graph report (tex)
$1_abg.tex: $1_sub.sh
abg2tex $pdf ${sensitivity_switch} $1
#SUMMARY tf Transfer function (mml)
$1_$2.mml: $1_$2.r
mtt_r2mml $1 $2
# Version control system - uses RCS
RCS:
echo Creating RCS
mkdir RCS
$1_$2.vc: RCS
echo Version control on $1_$2.$VCext with message: $log_message
ci -m"$log_message" -I $1_$2.$VCext </dev/tty ; co -l $1_$2.$VCext
EOF
# Remember the exit status of make
make_status=$?
# Tidy up.
# echo Removing log files and other garbage
rm -f *_unique_raw_list *_raw_list
rm -f mtt_error.txt mtt_info.txt
rm -f mtt_info.txt warning.txt
# rm -f *_*.idx *_*.ind *_*.ilg *_*.lof *_*.toc
# Remove logs if not debugging
if [ "$debug" != "debug" ]; then
rm -f *.log
else
echo Debugging - log files retained in LOGFILES
mkdir -p LOGFILES
mv -f *.log LOGFILES 2> /dev/null
fi
#Print what's going on if in verbose mode
if [ -n "$Verbose" ]; then
echo Finishing mtt $mtt_switches $1 $2 $3 $4 at level $level
fi
if [ "$make_status" != "0" ]; then
echo Exiting MTT with error $make_status
exit 1
fi