Overview
Comment: | Put in c version + sensitivity computation |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | origin/master | trunk |
Files: | files | file ages | folders |
SHA3-256: |
0c5526fe81aa2f571d13982bbaf81f4a |
User & Date: | gawthrop@users.sourceforge.net on 2000-05-11 19:32:29 |
Other Links: | branch diff | manifest | tags |
Context
2000-05-11
| ||
19:33:18 | Uniform version for _sim.m check-in: 4f2d6cb2e9 user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
19:32:29 | Put in c version + sensitivity computation check-in: 0c5526fe81 user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
16:09:24 | Put in simpar.first parameter check-in: 32494f30de user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
Changes
Modified mttroot/mtt/bin/trans/mtt_make_sim from [ccc5a344ef] to [8e04564d54].
︙ | ︙ | |||
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | # Copyright (C) 2000 by Peter J. Gawthrop ############################################################### ## Version control history ############################################################### ## $Id$ ## $Log$ ############################################################### # Tell user Sys=$1 method=$2 if [ -z "$method" ]; then method=implicit fi | > > > > | > > > > | > | > > > > | | < < < | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | | > > < > | 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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 | # Copyright (C) 2000 by Peter J. Gawthrop ############################################################### ## Version control history ############################################################### ## $Id$ ## $Log$ ## Revision 1.1 2000/04/08 10:43:26 peterg ## Initial revision ## ############################################################### # Tell user Sys=$1 method=$2 computation=$3 if [ -z "$method" ]; then method=implicit fi if [ -n "$computation" ]; then blurb="for language $computation" fi echo "Creating $1_sim.m with $method integration method $blurb" if [ $method = "implicit" ]; then ode=cse odeo=cseo else ode=ode odeo=odeo fi # Find system constants Nx=`mtt_getsize $Sys x` # States Nu=`mtt_getsize $Sys u` # Inputs Ny=`mtt_getsize $Sys y` # Inputs Npar=`wc -l $Sys\_sympar.txt | awk '{print $1}'` # Header lang_header -noglobals $1 sim m 'x0,u,t,par,sensitivities' '[y,x]' > $1_sim.m cat >> $1_sim.m <<EOF if nargin<5 sensitivities = []; endif; ## Initialise [ui] = zero_input($Nu); # Zero the input [xi] = x0; # Read in initial state ##Sizes N = length(t); ## Initialise arrays x = zeros($Nx,N); y = zeros($Ny,N); ## Timing parameters first = t(1); dt = t(2) - t(1); last = t(length(t))+dt; n_sens = length(sensitivities); EOF if [ "$computation" = "c" ]; then cat >> $1_sim.m <<EOF ## Create the command string command = ""; for sensitivity_index = [0 sensitivities] args = ""; for i=1:$Nx args = sprintf("%s %g", args, x0(i)); endfor par(sensitivities) = zeros(1,n_sens); if sensitivity_index>0 par(sensitivity_index) = 1; i_1 = $Ny/2 + 2; else i_1 = 2; endif; i_2 = i_1 + $Ny/2 -1; for i=1:$Npar args = sprintf("%s %g", args, par(i)); endfor args = sprintf("%s %g %g %g", args, first, dt, last); command = sprintf("%s ./$1_ode2odes.out %s | cut -f %i-%i;", command, args, i_1, i_2); endfor; command ## And execute it ... yy=str2num(system(command)); [Ny,My] = size(yy); ## Reshape Ny/N,N y = reshape(yy',N,Ny/N)'; endfunction EOF else cat >> $1_sim.m <<EOF A = zeros($Nx,$Nx); Ax = zeros($Nx,1); dx = zeros($Nx,1); ## Step size dt = t(2)-t(1); iFirst = first/dt; for i = 1:N ti = t(i); ui = u(:,i); yi = $1_cseo(xi,ui,ti,par); # Output if i> y(:,i) = yi; x(:,i) = xi; dxi = $1_cse(xi,ui,ti,par); # State derivative A = $1_smxa(xi,ui,dt,par); # (I-Adt) A = reshape(A,$Nx,$Nx); Ax = $1_smxax(xi,ui,dt,par); # (I-Adt)x #open = eval(sprintf("%s_switchopen(x);", system_name)); # Open switches #x = mtt_implicit(x,dx,A,Ax,dt,$Nx,zeros(20,1)); # Implicit update xi = A\(Ax + dxi*dt); # Implicit update endfor; endfunction EOF fi |