Overview
| Comment: | Stard new version with data files not argv. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | origin/master | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
2a7d780b5597f9b28d205857131d3535 |
| User & Date: | gawthrop@users.sourceforge.net on 2000-05-16 11:59:34.000 |
| Other Links: | branch diff | manifest | tags |
Context
|
2000-05-16
| ||
| 18:55:10 | Initial revision check-in: 38505163b2 user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
| 11:59:34 | Stard new version with data files not argv. check-in: 2a7d780b55 user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
| 11:59:01 | Updated for new data file parameter/state update check-in: 28ecc6bfb8 user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
Changes
Modified mttroot/mtt/bin/trans/mtt_make_sim
from [8e04564d54]
to [dfe57882cc].
| ︙ | ︙ | |||
9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # 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 | > > > | 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | # Copyright (C) 2000 by Peter J. Gawthrop ############################################################### ## Version control history ############################################################### ## $Id$ ## $Log$ ## Revision 1.2 2000/05/11 19:32:29 peterg ## Put in c version + sensitivity computation ## ## Revision 1.1 2000/04/08 10:43:26 peterg ## Initial revision ## ############################################################### # Tell user Sys=$1 |
| ︙ | ︙ | |||
44 45 46 47 48 49 50 |
# 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
| | > | | | > > > > > > > > > | | | | | | > > > > > > > > > | > > > > | > | > < > > > | < > > > > > > > > > > > > | | | 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 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 |
# 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,ys]' > $1_sim.m
cat >> $1_sim.m <<EOF
## tick=time;
if nargin<5
sensitivities = [];
endif;
##Sizes
N = length(t);
[n_u,N_u] = size(u);
## Doing sensitivities (assumes sensitivity system is invoked)
doing_sensitivities = (length(sensitivities)>0);
if doing_sensitivities
n_y = $Ny/2;
doing_state=0;
else
n_y = $Ny;
doing_state=(nargout>1);
endif;
## Initialise
ui = zeros(n_u,1); # Initial control
[xi] = x0; # Read in initial state
## Timing parameters
first = t(1);
dt = t(2) - t(1);
last = t(length(t));
n_sens = length(sensitivities);
EOF
if [ "$computation" = "c" ]; then
cat >> $1_sim.m <<EOF
## Create the system input file
t1 = [0:N_u-1]*dt; # Create time vector from zero (to fit u);
ut = [t1' u'];
## tick1=time;
save -ascii $1_input.dat ut
## save_time = time-tick1
##system("strip_comments <mtt_junk.dat >mtt_u.dat;"); #Strip the leading comments
## Create the command string
## tick1=time;
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 = 2+n_y;
else
i_1 = 2;
endif;
if doing_state
i_2 = i_1 + n_y + $Nx;
else
i_2 = i_1 + n_y -1;
endif;
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< $1_input.dat %s | cut -f %i-%i;", command, args, i_1, i_2);
endfor;
## string_time = time-tick1
## And execute it ...
## tick1=time;
yy=str2num(system(command));
## command_time = time-tick1
[N_yy,M_yy] = size(yy);
## Reshape
yy = reshape(yy,N,M_yy*(1+n_sens))';
y = yy(1:n_y,:); # Output
if doing_sensitivities
i_1 = n_y+1;
i_2 = i_1 + n_y*n_sens - 1;
ys = yy(i_1:i_2,:); # sensitivity
endif;
if doing_state
i_1 = n_y+2;
i_2 = i_1 + $Nx - 1;
ys = yy(i_1:i_2,:); # state
endif;
## sim_time = time-tick
endfunction
EOF
else
cat >> $1_sim.m <<EOF
|
| ︙ | ︙ |