Overview
Comment: | Added notes about generating dynamically linked functions for Octave and Matlab. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | origin/master | trunk |
Files: | files | file ages | folders |
SHA3-256: |
535d6c030c34e3090cfc4fa070f7d2fa |
User & Date: | geraint@users.sourceforge.net on 2002-07-05 13:29:34 |
Other Links: | branch diff | manifest | tags |
Context
2002-07-10
| ||
11:53:32 | Replaced shell loop with template expansion - perceptibly quicker generation of sympar.h. check-in: e560dd6a8b user: geraint@users.sourceforge.net tags: origin/master, trunk | |
2002-07-05
| ||
13:29:34 | Added notes about generating dynamically linked functions for Octave and Matlab. check-in: 535d6c030c user: geraint@users.sourceforge.net tags: origin/master, trunk | |
2002-07-04
| ||
21:34:12 | Updated gnuplot view description to describe Tcl/Tk interface instead of obsolete txt method. check-in: 44ba86945a user: geraint@users.sourceforge.net tags: origin/master, trunk | |
Changes
Modified mttroot/mtt/doc/mtt.texi from [dfd292562b] to [1ca00cff1e].
︙ | ︙ | |||
12 13 14 15 16 17 18 19 20 21 22 23 24 25 | @comment %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @comment Version control history @comment %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @comment $Id$ @comment $Log$ @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 | > > > | 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | @comment %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @comment Version control history @comment %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @comment $Id$ @comment $Log$ @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 |
︙ | ︙ | |||
434 435 436 437 438 439 440 441 442 443 444 445 446 447 | Simulation parameters * Euler integration:: * Implicit integration:: * Runge Kutta IV integration:: * Hybrd algebraic solver:: Simulation output * Viewing results with gnuplot:: * Exporting results to SciGraphica:: Representations | > > > > | 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 | 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 |
︙ | ︙ | |||
661 662 663 664 665 666 667 668 669 670 671 672 673 674 | * Text editors:: * Octave:: * LaTeX:: Octave * Octave control system toolbox (OCST):: Administration * Software components:: * REDUCE setup:: * Octave setup:: * Paths:: | > > > | 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 | * 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:: |
︙ | ︙ | |||
2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 | @end example To generate an executable based on the C++ representation: @example mtt -cc [options] sys ode2odes exe @end example @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. | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 2326 2327 2328 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 | @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. |
︙ | ︙ | |||
3549 3550 3551 3552 3553 3554 3555 | %% 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 | | | 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 | %% 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 @node Other component labels, Component names, SS component labels , Labels (lbl) @comment node-name, next, previous, up @subsection Other component labels @cindex Other component labels In addition to the label there are two information fields, @pxref{Labels (lbl)}. They correspond to the constitutive relationship |
︙ | ︙ | |||
4528 4529 4530 4531 4532 4533 4534 4535 4536 4537 4538 4539 4540 4541 | # Generated by MTT at Mon Jun 16 15:10:17 BST 1997 # %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # %% Version control history # %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # %% $Id$ # %% $Log$ # %% 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 | > > > | 4572 4573 4574 4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585 4586 4587 4588 | # Generated by MTT at Mon Jun 16 15:10:17 BST 1997 # %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # %% Version control history # %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # %% $Id$ # %% $Log$ # %% 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 |
︙ | ︙ | |||
5805 5806 5807 5808 5809 5810 5811 5812 5813 | step(rc); bode(rc); @end example @menu * Octave control system toolbox (OCST):: @end menu | > > > | | 5852 5853 5854 5855 5856 5857 5858 5859 5860 5861 5862 5863 5864 5865 5866 5867 5868 5869 5870 5871 | 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 @node Octave control system toolbox (OCST), Creating GNU Octave .oct files, Octave, Octave @comment node-name, next, previous, up @subsection Octave control system toolbox (OCST) @cindex Octave @cindex toolbox @cindex OCST @cindex control systems @cindex mtt2sys |
︙ | ︙ | |||
5845 5846 5847 5848 5849 5850 5851 | The following octave commands then generate the step reponse and bode diagram respectively: @example step(rc); bode(rc); @end example | > > > > | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 5895 5896 5897 5898 5899 5900 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 | 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 GNU Octave dynamically loaded functions (.oct files) can be created by instructing @strong{MTT} to create the ``oct'' representation: @example mtt [options] sys ode oct @end example This will cause @strong{MTT} to create the C++ representation of the system (sys_ode.cc) and to then compile it as a shared object suitable for use within Octave. The resultant file may be used in an identical manner to the equivalent, but generally slower, interpreted .m file. Usage information for the function may be obtained within Octave in the usual manner: @example octave:1> help rc_ode rc_ode is the dynamically-linked function from the file /home/mttuser/rc/rc_ode.oct Usage: [mttdx] = rc_ode(mttx,mttu,mttt,mttpar) Octave ode representation of system rc Generated by MTT on Fri Jul 5 11:23:08 BST 2002 @end example Note that the first line of output from Octave identifies whether the compiled or interpreted function is being used. Alternatively, standard representations may be generated using the Octave DLDs by use of the ``-oct'' switch: @example mtt -oct rc odeso view @end example In order to successfully generate .oct files, Octave must be correctly configured prior to compilation and certain headers and libraries must be correctly installed on the system (@pxref{.oct file dependencies}). @node Creating Matlab .mex files, Embedding MTT models in Simulink, Creating GNU Octave .oct files, Octave @comment node-name, next, previous, up @subsection Creating Matlab .mex files @cindex Creating Matlab .mex files On GNU/Linux systems, Matlab dynamically linked executables (.mexglx files) can created by instructing @strong{MTT} to create the ``mexglx'' representation: @example mtt [options] sys ode mexglx @end example This will cause @strong{MTT} to create the C++ representation of the system (sys_ode.cc) and to then compile it as a shared object suitable for use within Matlab. If it is necessary to compile mex files for another platform, then the usual C++ representation (generated with the -cc flag) can be created and the resultant file compiled with the -DCODEGENTARGET=MATLABMEX flag on the target platform. @example mtt_machine: mtt -cc rc ode cc matlab_machine: matlab> mex -DCODEGENTARGET=MATLABMEX rc_ode.cc @end example @node Embedding MTT models in Simulink, , Creating Matlab .mex files, Octave @comment node-name, next, previous, up @subsection Embedding MTT models in Simulink @cindex Embedding MTT models in Simulink It is possible to embed @strong{MTT} functions or entire @strong{MTT} models within Simulink simulations as Sfun blocks. If the zip package is installed on the system, the command @example mtt sys sfun zip @end example will create a compressed archive containing sys.mdl, which may be embedded into a larger Simulink model. Also contained within the archive will be four sys_sfun*.c files, @itemize @bullet @item sys_sfun.c model state and output equations @item sys_sfun_ae.c model algebraic equations @item sys_sfun_input.c model inputs @item sys_sfun_interface.c interface between MTT model and Simulink @end itemize The last of these files must be edited to correctly map the inputs and outputs between the @strong{MTT} and Simulink models. The two sections to edit are clearly marked with @example @code{/* Start EDIT */} @code{....} @code{/* End EDIT */} @end example These four files should then be compiled with the Matlab ``mex'' compiler as described in the @emph{README} file in the archive. If it is desired to compile the .mex files directly from within @strong{MTT} on a machine which has the Matlab header files installed, this may be done with the command @example mtt sys sfun mexglx @end example which will generated the four .mex files and the .mdl file. In this case, the user must ensure that @emph{sys_sfun_interface.c} has been correctly edited prior to compilation. Note that solution of algebraic equations within Simulink is not possible unless the @emph{Matlab Optimisation Toolbox} is installed. @node LaTeX, , Octave, Language tools @comment node-name, next, previous, up @section LaTeX @cindex LaTeX LaTeX is a powerful text processor which @strong{MTT} uses to provide |
︙ | ︙ | |||
5975 5976 5977 5978 5979 5980 5981 | 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 | | | | | > > > > > > > > > > > > > > > > > > > > > > > > | 6157 6158 6159 6160 6161 6162 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 | 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 Successful compilation of .oct code requires that Octave has been configured to use dynamically linked libraries and that the Octave libraries @code{liboctave}, @code{libcruft} and @code{liboctinterp} are available on the system. This can be acheived by compiling Octave from the source code, configured with the options @code{--enable-shared} and @code{--enable-dl}. A number of additional libraries and headers are also required to be installed on a system. These include, @itemize @bullet @item @emph{ncurses} and @emph{readline} terminal control routines @item @emph{blas} or @emph{altas} basic linear algebra subprograms, usually optimised for the specific processor @item @emph{fftw} fast Fourier transform routines @item @emph{g2c} GNU Fortran to C conversion routines @item @emph{kpathsea} TeX path search routines @end itemize Note that on many GNU/Linux distributions, the necessary headers are contained in development packages which must be installed in addition to the standard library package. Further information on configuring and installing Octave to handle dynamic libraries (DLDs) can be found in the @uref{http://www.octave.org/docs.html,Octave documentation}. @node Paths, File structure, Octave setup, Administration |
︙ | ︙ |