Overview
Comment: | New eqn2ass function. Started extension to multiports |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | origin/master | trunk |
Files: | files | file ages | folders |
SHA3-256: |
7e1c4527c85b56e360da14da467e31ba |
User & Date: | gawthrop@users.sourceforge.net on 2000-10-05 10:13:00 |
Other Links: | branch diff | manifest | tags |
Context
2000-10-05
| ||
20:52:12 |
Put in some more thinfs to miss out: mtt_e mtt_f sqrt exp log sign none abs check-in: f92931fde2 user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
10:13:00 |
New eqn2ass function. Started extension to multiports check-in: 7e1c4527c8 user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
2000-10-03
| ||
18:46:04 | Now handles the generic CR (ie = and mtt_e and mtt_f) check-in: 8c76dee536 user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
Changes
Modified mttroot/mtt/lib/cr/r/cr.cr from [99acb3502b] to [42461c5b4a].
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | %SUMMARY cr generic CR %DESCRIPTION Argument is an algebraic expression with no embeddedwhite space %DESCRIPTION Only available for one ports just now %DESCRIPTION effort (or integrated effort) variable must be called mtt_e %DESCRIPTION flow (or integrated flow) variable must be called mtt_f %DESCRIPTION For example: %DESCRIPTION mtt_e=k*mtt_f %DESCRIPTION mtt_f=mtt_e/r % $Log$ % Revision 1.1 2000/10/03 18:34:00 peterg % Initial revision % %Copyright (C) 2000 by Peter J. Gawthrop % Version for one-port components | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > < > | > | > | > | > > > > > > > > > > > > > > > > > > > > > > > > | 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 | %SUMMARY cr generic CR %DESCRIPTION Argument is an algebraic expression with no embeddedwhite space %DESCRIPTION Only available for one ports just now %DESCRIPTION effort (or integrated effort) variable must be called mtt_e %DESCRIPTION flow (or integrated flow) variable must be called mtt_f %DESCRIPTION For example: %DESCRIPTION mtt_e=k*mtt_f %DESCRIPTION mtt_f=mtt_e/r % $Log$ % Revision 1.2 2000/10/03 18:35:04 peterg % Removed comment bug % % Revision 1.1 2000/10/03 18:34:00 peterg % Initial revision % %Copyright (C) 2000 by Peter J. Gawthrop % Function to convert equation to assignment OPERATOR eqn2ass; FOR ALL eqn,outlist,inputs LET eqn2ass(eqn,outlist,inputs) = BEGIN ass := {}; mtt_ports := 0; solutions := solve(eqn,outlist); FOR EACH solution IN solutions DO BEGIN mtt_ports := mtt_ports + 1; rh := RHS(solution); FOR EACH input IN inputs DO rh := sub(input,rh); ass := APPEND(ass,{rh}); END; IF mtt_ports EQ 1 THEN RETURN FIRST(ass) ELSE RETURN ass; %return sub(input,rhs(first(solve(eqn,outlist)))); % Needs multiplicity warning END; OPERATOR cr; % Version for one-port components % We need four versions so that state does not need to be explicitly % mentioned. % At the moment, assume only one solution (in fact the first is % chosen) %%%% This is the Equation version % Flow input FOR ALL mtt_cr, input, out_cause LET cr(mtt_cr,out_cause, 1, input, flow, 1) = eqn2ass(mtt_cr,mtt_e,{mtt_f=input}); % Effort input FOR ALL mtt_cr, input, out_cause LET cr(mtt_cr,out_cause, 1, input, effort, 1) = eqn2ass(mtt_cr,mtt_f,{mtt_e=input}); % Effort output FOR ALL mtt_cr, input, in_cause LET cr(mtt_cr,effort, 1, input, in_cause, 1) = eqn2ass(mtt_cr,mtt_e,{mtt_f=input}); % Flow output FOR ALL mtt_cr, input, in_cause LET cr(mtt_cr,flow, 1, input, in_cause, 1) = eqn2ass(mtt_cr,mtt_f,{mtt_e=input}); %%%% This is the assignment version % Flow input FOR ALL mtt_cr_e,mtt_cr_f, input, out_cause LET cr(mtt_cr_e,mtt_cr_f,out_cause, 1, input, flow, 1) = sub(mtt_f=input,mtt_cr_f); % Effort input FOR ALL mtt_cr_e,mtt_cr_f, input, out_cause LET cr(mtt_cr_e,mtt_cr_f,out_cause, 1, input, effort, 1) = sub(mtt_e=input,mtt_cr_e); % Effort output FOR ALL mtt_cr_e,mtt_cr_f, input, in_cause LET cr(mtt_cr_e,mtt_cr_f,effort, 1, input, in_cause, 1) = sub(mtt_f=input,mtt_cr_f); % Flow output FOR ALL mtt_cr_e,mtt_cr_f, input, in_cause LET cr(mtt_cr_e,mtt_cr_f,flow, 1, input, in_cause, 1) = sub(mtt_e=input,mtt_cr_e); END; |