Changes In Branch origin/optimise-algebraic-equations Through [0402a842d6] Excluding Merge-Ins
This is equivalent to a diff from aebab108aa to 0402a842d6
Deleted CVSROOT/checkoutlist version [db1d2d9b69].
| - - - - - - - - - - - - - - |
|
Deleted CVSROOT/commitinfo version [85654ac9a8].
| - - - - - - - - - - - - - - - |
|
Deleted CVSROOT/config version [28e7a42550].
| - - - - - - - - - - - |
|
Deleted CVSROOT/cvswrappers version [9d41597c29].
| - - - - - - - - - - - - - - - - - - - - - - - |
|
Deleted CVSROOT/editinfo version [dfa5fb459c].
| - - - - - - - - - - - - - - - - - - - - - |
|
Deleted CVSROOT/loginfo version [7508d75767].
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
|
Deleted CVSROOT/modules version [84b74e5335].
| - - - - - - - - - - - - - - - - - - - - - - - - - - |
|
Deleted CVSROOT/notify version [2a5259e3c5].
| - - - - - - - - - - - - |
|
Deleted CVSROOT/rcsinfo version [c276b88ba1].
| - - - - - - - - - - - - - |
|
Deleted CVSROOT/syncmail version [c9554ab114].
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
|
Deleted CVSROOT/taginfo version [364dad5373].
| - - - - - - - - - - - - - - - - - - - - |
|
Deleted CVSROOT/verifymsg version [cbc796537d].
| - - - - - - - - - - - - - - - - - - - - - |
|
Modified mttroot/mtt/bin/mtt from [68d41245b0] to [a4c3c642a3].
︙ | |||
13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | + + + | # Copyright (C) 2001 by Peter J. Gawthrop ############################################################### ## Version control history ############################################################### ## $Header$ ## $Log$ ## 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. |
︙ | |||
2699 2700 2701 2702 2703 2704 2705 | 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 | - + | ${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 |
︙ |
Modified mttroot/mtt/bin/trans/dae2cse_r from [e055f9ba28] to [4bd66676aa].
︙ | |||
11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | + + + + | # Copyright (c) P.J.Gawthrop 1991, 1992, 1994. ############################################################### ## Version control history ############################################################### ## $Id$ ## $Log$ ## Revision 1.20 2002/04/28 18:41:26 geraint ## Fixed [ 549658 ] awk should be gawk. ## Replaced calls to awk with call to gawk. ## ## Revision 1.19 2001/10/26 01:01:49 geraint ## fixcc when rdae_is_dae (-cr). ## ## Revision 1.18 2001/10/05 23:37:32 geraint ## Fixed assignment statement in ae.r when RHS=0. ## ## Revision 1.17 2001/07/27 23:29:10 geraint |
︙ | |||
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 | 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | + + - + | *) echo "$1 is an invalid argument - ignoring" ;; esac shift done # Create the reduce output code def2write_r $optimise $1 ae def2write_r $optimise $1 cse def2write_r $optimise $1 csex # Version without E matrix def2write_r $optimise $1 cseo echo "Creating $1_ae.r $optimise_msg" echo "Creating $1_cse.r $solve_msg $optimise_msg $fix_msg" echo "Creating $1_csex.r $optimise_msg" echo "Creating $1_cseo.r $optimise_msg" # Remove the old log file rm -f dae2cse_r.log # Remove some files |
︙ | |||
317 318 319 320 321 322 323 | 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 | - - - - - - - - - - - + + + + + + + + + + + + | set(lhs(MTT_sol_i),rhs(MTT_sol_i)); END; % No algebraic variables left! MTTNYz := 0; END; % IF MTTNyz>0 and $solve |
︙ | |||
443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 | 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 | + + | in ("$1_cseo_write.r"); write "END;"; SHUT "$1_cseo.r2"; END; quit; EOF touch $1_ae.r1 $1_ae.r2 touch $1_cseo.r1 touch $1_cseo.r2 cat $1_ae.r1 $1_ae.r2 > $1_ae.r cat $1_cse.r1 $1_cse.r2 > $1_cse.r cat $1_csex.r1 $1_csex.r2 > $1_csex.r cat $1_cseo.r1 $1_cseo.r2 > $1_cseo.r if [ "$solve" = "1" ]; then echo "Setting MTTNyz=0 in $1_def.r and updating other $1_def files" gawk '{ |
︙ |
Modified mttroot/mtt/bin/trans/def2write_r from [10c4312f8d] to [ec2007c6a1].
︙ | |||
9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | + + + + + + + + + + + + + + + + + + + + + + | # Copyright (C) 2000 by Peter J. Gawthrop ############################################################### ## Version control history ############################################################### ## $Id$ ## $Log$ ## Revision 1.11.2.4 2002/06/05 23:34:33 geraint ## Eliminated argument list too long warnings. ## Now get a Segmentation Fault with very long equations! ## ## Revision 1.11.2.3 2002/06/05 18:23:38 geraint ## Cosmetic change. ## ## Revision 1.11.2.2 2002/06/05 17:57:47 geraint ## Main part of optimisation routine moved to separate file. ## ## Revision 1.11.2.1 2002/06/05 11:14:51 geraint ## ae.r now generated using def2write_r like cse?.r ## fix_c.r called at ese2rdae stage so that pow gets fixed in ae.r. ## ## These changes produce the desired result (optimised algebraic equations) but ## have highlighted a problem; when optimisation fails, Reduce does not write ## a result. For complicated systems, this can lead to missing assignments in ## the resultant code. ## ## Revision 1.11 2002/05/17 09:14:58 geraint ## Optimises each line in a separate session. Allows larger models to be built. ## ## Revision 1.10 2002/04/28 18:41:27 geraint ## Fixed [ 549658 ] awk should be gawk. ## Replaced calls to awk with call to gawk. ## ## Revision 1.9 2001/07/27 23:29:10 geraint ## Optimises only when requested (-opt). ## |
︙ | |||
77 78 79 80 81 82 83 84 85 86 87 88 89 90 | 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | + + + + + | Nu=`mtt_getsize $sys u` # Inputs Ny=`mtt_getsize $sys y` # Outputs Nyz=`mtt_getsize $sys yz` # Zero outputs #Npar=`wc -l $sys\_sympar.txt | gawk '{print $1}'` # Set up representation-specific stuff case $rep in ae) matrices='Yz' ns="$Nyz" ms="1" ;; cse) matrices='EdX E' ns="$Nx $Nx" ms="1 $Nx" ;; csex) matrices='EdX' |
︙ | |||
142 143 144 145 146 147 148 | 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 | - + + - - + - - - - - - - - - - - - + - - - - + - - - - - - - + - - - - + + - - - - - + | }' } mtt_optimise () { sys="$1" lhs="$2" |
︙ | |||
206 207 208 209 210 211 212 | 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 | - + | m=`first "$ms"`; ms=`rest "$ms"` is=`n2m 1 $n`; js=`n2m 1 $m`; for i in $is; do for j in $js; do if [ ${opt:-""} = "-optimise" ]; then name=`echo MTT$matrix'('$i','$j')'` |
Modified mttroot/mtt/bin/trans/ese2rdae_r from [713fa3d927] to [2f139cc4dc].
︙ | |||
10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | + + + + + + + + + + + + + | # Copyright (c) P.J.Gawthrop, 1991, 1994, 1996 ############################################################### ## Version control history ############################################################### ## $Id$ ## $Log$ ## Revision 1.12.2.1 2002/06/05 11:14:51 geraint ## ae.r now generated using def2write_r like cse?.r ## fix_c.r called at ese2rdae stage so that pow gets fixed in ae.r. ## ## These changes produce the desired result (optimised algebraic equations) but ## have highlighted a problem; when optimisation fails, Reduce does not write ## a result. For complicated systems, this can lead to missing assignments in ## the resultant code. ## ## Revision 1.12 2001/07/23 23:31:17 gawthrop ## Added -cr option to load CRs first - avoids alg. loops with R ## implementation of mutiports. ## ## Revision 1.11 2001/07/06 00:46:50 gawthrop ## Added -cr option -- forces cr to be loaded before the ese.r file ## This avoids causality problems when using multi-port Rs to represent ## arbitary equations ## ## Revision 1.10 2000/11/30 15:23:16 peterg ## Taken out all subsystem stuff - now done in mtt using |
︙ | |||
96 97 98 99 100 101 102 103 104 105 106 107 108 109 | 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | + + + + | case $1 in -I ) info=info;; -cr ) load_cr=yes; blurb2=' using cr and subs first'; ;; -fixcc ) include=`echo 'in "'$MTT_LIB'/reduce/fix_c.r";'` blurb3='fixing c and cc code'; ;; -partition ) partition=yes; blurb='with partitioning'; ;; *) echo "$1 is an invalid argument - ignoring"; exit ;; |
︙ | |||
132 133 134 135 136 137 138 | 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 | - + + + + | if [ -n "${load_cr}" ]; then load_cr_comm="in \"${crname}\";" load_subs_comm="in \"${subsname}\";" fi # Inform user |
︙ |
Modified mttroot/mtt/bin/trans/m/args2arg.m from [88e206959b] to [b6ee5ada28].
︙ | |||
24 25 26 27 28 29 30 31 | 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | + + + + + + + + + + + + + + + + + + + + + + | % %% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Field separator if nargin<3 FS = ';'; end; arg = ''; if strcmp(args, '')==0 L = length(args); args_count = 0; for i=1:n arg_count = 0; arg = ''; if args_count == L break; end; while args_count < L args_count = args_count+1; arg_count = arg_count+1; ch = str2ch(args,args_count); if ch==FS break; end; arg = [arg ch]; end; end; end; |
Added mttroot/mtt/bin/trans/mtt_optimise.sh version [51933f155d].
|
Added mttroot/mtt/bin/trans/optimise_max2r.awk version [d3a19e1a09].
|
Modified mttroot/mtt/doc/mtt.texi from [95bf219a63] to [677998cd3f].
︙ | |||
12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | + + + + + + + + + | @comment %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @comment Version control history @comment %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @comment $Id$ @comment $Log$ @comment Revision 1.9 2002/07/05 13:29:34 geraint @comment Added notes about generating dynamically linked functions for Octave and Matlab. @comment @comment Revision 1.8 2002/07/04 21:34:12 geraint @comment Updated gnuplot view description to describe Tcl/Tk interface instead of obsolete txt method. @comment @comment Revision 1.7 2002/04/23 09:51:54 gawthrop @comment Changed incorrect statement about searching for components. @comment @comment Revision 1.6 2001/10/15 14:29:50 gawthrop @comment Added documentaton on [1:N] style port labels @comment @comment Revision 1.5 2001/07/23 03:35:29 geraint @comment Updated file structure (mtt/bin). @comment @comment Revision 1.4 2001/07/23 03:25:02 geraint |
︙ | |||
431 432 433 434 435 436 437 438 439 440 441 442 443 444 | 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 | + + + + | Simulation parameters * Euler integration:: * Implicit integration:: * Runge Kutta IV integration:: * Hybrd algebraic solver:: Simulation code * Dynamically linked functions:: Simulation output * Viewing results with gnuplot:: * Exporting results to SciGraphica:: Representations |
︙ | |||
658 659 660 661 662 663 664 665 666 667 668 669 670 671 | 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 | + + + | * Text editors:: * Octave:: * LaTeX:: Octave * Octave control system toolbox (OCST):: * Creating GNU Octave .oct files:: * Creating Matlab .mex files:: * Embedding MTT models in Simulink:: Administration * Software components:: * REDUCE setup:: * Octave setup:: * Paths:: |
︙ | |||
2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 | 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + | @end example To generate an executable based on the C++ representation: @example mtt -cc [options] sys ode2odes exe @end example @menu * Dynamically linked functions:: @end menu @node Dynamically linked functions, , Simulation code, Simulation code @comment node-name, next, previous, up @subsection Dynamically linked functions Some model representations can be compiled into dynamically loaded code (shared objects) which are compiled prior to use in other modelling and simulation environments; in particular, .oct files can be generated for use in GNU Octave (@pxref{Creating GNU Octave .oct files}) and .mex files can be generated for use in Matlab (@pxref{Creating Matlab .mex files}) or Simulink (@pxref{Embedding MTT models in Simulink}). The use of compiled (and possibly compiler-optimised) code can offer significant processing speed advantages over equivalent interpreted functions (e.g. .m files) for computationally intensive procedures. The C++ code generated by @strong{MTT} allows the same code to be generated as standalone code, Octave .oct files or Matlab .mexglx files. Although @strong{MTT} usually takes care of the compilation options, if it is necessary to compile the code on a machine on which @strong{MTT} is not installed, the appropriate flag should be passed to the compiler pre-processor: @itemize @bullet @item @code{-DCODEGENTARGET=STANDALONE} @item @code{-DCODEGENTARGET=OCTAVEDLD} @item @code{-DCODEGENTARGET=MATLABMEX} @end itemize @node Simulation output, , Simulation code, Simulation @comment node-name, next, previous, up @section Simulation output @cindex Simulation output The view (@pxref{Views}) representation provides a graphical representation of the results of a simulation; the postscript language provides the same thing in a form that can be included in a document. |
︙ | |||
2357 2358 2359 2360 2361 2362 2363 | 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 | - - + + + - - + - - - - + - + - - - - - - + - - - - - - + | @end menu @node Viewing results with gnuplot, Exporting results to SciGraphica, Simulation output, Simulation output @comment node-name, next, previous, up@subsection @subsection Viewing results with gnuplot @cindex gnuplot |
︙ | |||
3559 3560 3561 3562 3563 3564 3565 | 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 | - + | %% ss1 is both a source and sensor ss1 SS external,external %% ss1 acts as a flow sensor - it imposes zero effort. ss2 SS 0,external @end example |
︙ | |||
4538 4539 4540 4541 4542 4543 4544 4545 4546 4547 4548 4549 4550 4551 | 4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585 4586 4587 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 | + + + + + + + + + | # Generated by MTT at Mon Jun 16 15:10:17 BST 1997 # %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # %% Version control history # %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # %% $Id$ # %% $Log$ # %% Revision 1.9 2002/07/05 13:29:34 geraint # %% Added notes about generating dynamically linked functions for Octave and Matlab. # %% # %% Revision 1.8 2002/07/04 21:34:12 geraint # %% Updated gnuplot view description to describe Tcl/Tk interface instead of obsolete txt method. # %% # %% Revision 1.7 2002/04/23 09:51:54 gawthrop # %% Changed incorrect statement about searching for components. # %% # %% Revision 1.6 2001/10/15 14:29:50 gawthrop # %% Added documentaton on [1:N] style port labels # %% # %% Revision 1.5 2001/07/23 03:35:29 geraint # %% Updated file structure (mtt/bin). # %% # %% Revision 1.4 2001/07/23 03:25:02 geraint |
︙ | |||
5812 5813 5814 5815 5816 5817 5818 5819 5820 | 5858 5859 5860 5861 5862 5863 5864 5865 5866 5867 5868 5869 5870 5871 5872 5873 5874 5875 5876 5877 | + + + - + | step(rc); bode(rc); @end example @menu * Octave control system toolbox (OCST):: * Creating GNU Octave .oct files:: * Creating Matlab .mex files:: * Embedding MTT models in Simulink:: @end menu |
︙ | |||
5852 5853 5854 5855 5856 5857 5858 | 5901 5902 5903 5904 5905 5906 5907 5908 5909 5910 5911 5912 5913 5914 5915 5916 5917 5918 5919 5920 5921 5922 5923 5924 5925 5926 5927 5928 5929 5930 5931 5932 5933 5934 5935 5936 5937 5938 5939 5940 5941 5942 5943 5944 5945 5946 5947 5948 5949 5950 5951 5952 5953 5954 5955 5956 5957 5958 5959 5960 5961 5962 5963 5964 5965 5966 5967 5968 5969 5970 5971 5972 5973 5974 5975 5976 5977 5978 5979 5980 5981 5982 5983 5984 5985 5986 5987 5988 5989 5990 5991 5992 5993 5994 5995 5996 5997 5998 5999 6000 6001 6002 6003 6004 6005 6006 6007 6008 6009 6010 6011 6012 6013 6014 6015 6016 6017 6018 6019 6020 6021 6022 6023 6024 6025 6026 6027 6028 6029 6030 6031 6032 6033 6034 6035 6036 6037 6038 6039 6040 6041 6042 6043 6044 6045 6046 6047 | + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + | The following octave commands then generate the step reponse and bode diagram respectively: @example step(rc); bode(rc); @end example @node Creating GNU Octave .oct files, Creating Matlab .mex files, Octave control system toolbox (OCST), Octave @comment node-name, next, previous, up @subsection Creating GNU Octave .oct files @cindex Creating GNU Octave .oct files |
︙ | |||
5982 5983 5984 5985 5986 5987 5988 | 6163 6164 6165 6166 6167 6168 6169 6170 6171 6172 6173 6174 6175 6176 6177 6178 6179 6180 6181 6182 6183 6184 6185 6186 6187 6188 6189 6190 6191 6192 6193 6194 6195 6196 6197 6198 6199 6200 6201 6202 6203 6204 6205 6206 6207 | - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + | empty_list_elements_ok = 1; @end example @node .oct file dependencies, , .octaverc, Octave setup @comment node-name, next, previous, up Additionally, it is necessary to @subsection .oct file dependencies |
︙ |
Modified mttroot/mtt/lib/reduce/fix_c.r from [551406cfe8] to [d6d8abfc53].
1 2 3 4 5 6 7 8 9 10 11 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | - + + + | %% Fixes for c-code generation %% Set PI explicitly here to avoid later conflict with cc headers %% if PI is not already a number (i.e. on rounded has not been set) IF NOT NUMBERP (pi) THEN LET PI = 3.14159$ ON ROUNDED$ % No integer output %% Changes x^y to pow(x,y) OPERATOR pow$ FOR ALL x,y LET x^y = pow(x,y)$ % Use the pow function |
Added mttroot/mtt/lib/rep/ident_rep.make version [042982e678].