Overview
| Comment: | New eqn2ass function. Started extension to multiports |
|---|---|
| Downloads: | Tarball | ZIP 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.000 |
| 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;
|