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