Overview
Comment: | Includes the sympar.h file |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | origin/master | trunk |
Files: | files | file ages | folders |
SHA3-256: |
0f6bed5ddbd04a86d5a3bf9922f3f459 |
User & Date: | gawthrop@users.sourceforge.net on 1997-03-20 14:36:56 |
Other Links: | branch diff | manifest | tags |
Context
1997-03-20
| ||
14:51:11 | Includes the sympar.c file. check-in: eca91ad38b user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
14:36:56 | Includes the sympar.h file check-in: 0f6bed5ddb user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
12:05:31 | Now just writes out the cr name. check-in: 55bdf75941 user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
Changes
Modified mttroot/mtt/bin/trans/ode2odes_r2c from [3ca0bda72c] to [0070fc8449].
1 2 3 4 5 6 | #! /bin/sh ###################################### ##### Model Transformation Tools ##### ###################################### | | > > > | | | | > < < < < < | | | | | | | < < < < < < < < < < < < < < < < < < < < < < < | | | | | > > > > > > | > > > > > > > > > > > > > > > > > > > > > > > > > | > > > > > > > > | | | > > > > > | < | > | | 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 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 147 148 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 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 | #! /bin/sh ###################################### ##### Model Transformation Tools ##### ###################################### # Bourne shell script: ode2odes_r2c # Reduce ordinary differential equations to differential-algebraic # equations solution in the form of a c program. # Euler integration of the state is included. # NB Arrays should are defined to be one larger than expected # - the 0 element is not used. # Copyright (c) P.J.Gawthrop 1997. ############################################################### ## Version control history ############################################################### ## $Id$ ## $Log$ ## Revision 1.1 1997/01/21 22:54:54 peterg ## Initial revision ## ############################################################### # Inform user echo Creating $1_odes.c # Remove the old log file rm -f ode_r2c.log # Use reduce to accomplish the transformation reduce >ode2odes_r2c.log << EOF %Read the reduce definitions file in "$1_def.r"; %Set up the number of argument variables to zero in case the user has forgotten MTTNVar := 0; %Read the symbolic parameters file in "$1_sympar.r"; ON BigFloat, NumVal; PRECISION 16; %Compatible with Matlab %OFF Nat; ON NERO; % Suppress zero elements %Generate the Header part OUT "$1_odes.c"; write "/*"$ write "Program to solve ode for system $1"$ write "NB Arrays are defined to be one larger than expected"$ write " - the 0 element is not used."$ write "File $1_odes.c"$ write "Generated by MTT"$ write "*/"$ write " "$ %Program heading write "#include <stdio.h>"$ write "#include ""$1_sympar.h"" "$ write "/* Declare standard arrays */"$ write "double y[", MTTNy+1, "]; /* $1_ode output */"$ write "double dx[", MTTNx+1, "]; /* $1_ode state derivative */"$ write "double x[", MTTNx+1, "]; /* $1_ode state */"$ write "double u[", MTTNu+1, "]; /* $1_ode input */"$ %External (global) variable list write "/* External (global) variable list */ "$ IF MTTNvar>0 THEN BEGIN FOR i := 1:MTTNvar DO IF numberp(MTTVar(i,1)) THEN BEGIN % Do nowt END ELSE BEGIN write "double ", MTTVar(i,1), ";"$ END$ END$ write "/* Files */ "$ write " FILE *fopen(), *fps, *fpso;"$ write "main()"$ write " "$ write "{"$ write "/* Counters etc*/ "$ write " double time;"$ write " double dt;"$ write " int i;"$ write " int k;"$ write "/*functions */ "$ write " extern $1_numpar();"$ %Open the output files write "/* %Open the output file */"$ write "fps = fopen(""$1_odes.m"", ""w""); "$ write "fpso = fopen(""$1_odeso.m"", ""w""); "$ %Set up user-defined constants write "/* Set up user-defined constants */"$ write " $1_numpar();"$ %Initialise main (Euler) integration loop write "/* Initialise main (Euler) integration loop */"$ write " time = 0;"$ write " dt = DT/STEPFACTOR;"$ write " for (i=1; i<=", MTTNx, "; i++)"$ write " x[i] = 0.0;"$ %Set up system inputs write "/* Set up system inputs */"$ write " for (i=1; i<=", MTTNu, "; i++)"$ write " u[i] = 1.0;"$ write " $1_input(0.0);"$ write " fprintf(fps, ""function data = ", "$1_odes \n"");"$ write " fprintf(fps, ""data = [\n"");"$ write " fprintf(fpso, ""function data = ", "$1_odeso \n"");"$ write " fprintf(fpso, ""data = [\n"");"$ % Compute the first output write "/* Compute the first output */"$ write " $1_ode(y,dx,x,u);"$ %Main (Euler) integration loop write "/* Main (Euler) integration loop */"$ write " while (time<LAST)"$ write " {"$ %Write to output to file write "/* Write to output file */"$ write " fprintf(fpso, ""%5.4f "",time);"$ write " for (i=1; i<=", MTTNy, "; i++)"$ write " fprintf(fpso, ""%5.4f "", y[i]);"$ write " fprintf(fpso, ""\n"");"$ %Write to state to file write "/* Write to state file */"$ write " fprintf(fps, ""%5.4f "",time);"$ write " for (i=1; i<=", MTTNx, "; i++)"$ write " fprintf(fps, ""%5.4f "", x[i]);"$ write " fprintf(fps, ""\n"");"$ % Inner integration loop write "/* Inner integration loop */"$ write " for (k=1; k<=STEPFACTOR; k++)"$ write " {"$ %Set up system inputs write " /* Set up system inputs */"$ write " $1_input(time);"$ write " for (i=1; i<=", MTTNx, "; i++)"$ write " x[i] = x[i] + dx[i]*dt;"$ write " $1_ode();"$ write " time = time + dt;"$ write " }"$ write " }"$ %Write to files %Write to output to file write "/* Write to output file */"$ write " fprintf(fpso, ""%5.4f "",time);"$ write " for (i=1; i<=", MTTNy, "; i++)"$ write " fprintf(fpso, ""%5.4f "", y[i]);"$ write " fprintf(fpso, ""\n"");"$ %Write to state to file write "/* Write to state file */"$ write " fprintf(fps, ""%5.4f "",time);"$ write " for (i=1; i<=", MTTNx, "; i++)"$ write " fprintf(fps, ""%5.4f "", x[i]);"$ write " fprintf(fps, ""\n"");"$ write " fprintf(fps, ""];\n"");"$ write " fprintf(fpso, ""];\n"");"$ write "}"$ SHUT "$1_odes.c"; EOF |