SQLITE_NOTICE(283): recovered 5 frames from WAL file /data/mtt.fossil-wal
File mttroot/mtt/lib/cr/r/lin.cr artifact ad1038d916 part of check-in 330df0a125
%SUMMARY lin linear constitutive relationship %DESCRIPTION Parameter 1 defines input causality relating to parameter 2 %DESCRIPTION value is effort, flow or state %DESCRIPTION Parameter 2 is the gain corresponding to the causality of %DESCRIPTION parameter 1. %DESCRIPTION Supported components: % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %%%%% Model Transformation Tools %%%%% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Linear constitutive relationship. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Version control history % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % $Id$ % % $Log$ % % Revision 1.3 1998/07/04 10:47:04 peterg % % back under RCS % % % % Revision 1.2 1998/03/04 15:38:54 peterg % % Added END statement % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %DESCRIPTION single port components: R,C,I %Linear Constitutive Relationship for single port components: R,C,I. % e = Gain*f (if gain_causality = flow) % f = Gain*e (if gain_causality = effort) OPERATOR lin; FOR ALL gain_causality, gain, causality, input, other_causality SUCH THAT causality = gain_causality LET lin(gain_causality, gain, other_causality, 1, input, causality, 1) = gain*input; %Linear CR: e = (1/Gain)*f (if gain_causality = flow) % f = (1/Gain)*e (if gain_causality = effort) FOR ALL gain_causality, gain, causality, input, other_causality SUCH THAT causality NEQ gain_causality LET lin(gain_causality, gain, other_causality, 1, input, causality, 1) = input/gain; %DESCRIPTION two port components: AE, AF % Linear Constitutive Relationship for AE and AF % Output = gain * input % Unicausal form FOR ALL gain, input, causality LET lin(gain, causality, 2, input, causality, 1) = gain*input; %Bicausal form FOR ALL gain, output, causality LET lin(gain, causality, 1, output, causality, 2) = output/gain; %DESCRIPTION two port component: TF % Linear Constitutive Relationship for TF FOR ALL gain_causality, gain, causality, outport, input, same_causality, inport SUCH THAT ( causality = same_causality ) AND ( inport NEQ outport ) AND ( ( (causality = gain_causality) AND (outport = 2) ) OR ( (causality NEQ gain_causality) AND (outport = 1) ) ) LET lin(gain_causality, gain, causality, outport, input, same_causality, inport) = gain*input; FOR ALL gain_causality, gain, causality, outport, input, same_causality, inport SUCH THAT ( causality = same_causality ) AND ( inport NEQ outport ) AND ( ( (causality NEQ gain_causality) AND (outport = 2) ) OR ( (causality = gain_causality) AND (outport = 1) ) ) LET lin(gain_causality, gain, causality, outport, input, same_causality, inport) = input/gain; %% This version in not reliable. I rellly need to pass component names %% as cr arguments. %DESCRIPTION two port component: GY % Linear Constitutive Relationship for GY FOR ALL gain, input, causality, gain_causality, other_causality, outport, inport SUCH THAT (causality NEQ other_causality) AND ( inport NEQ outport ) AND ( ( (causality NEQ gain_causality) AND (outport = 2) ) OR ( (causality NEQ gain_causality) AND (outport = 1) ) ) LET lin(gain_causality, gain, other_causality, outport, input, causality, inport) = input/gain; FOR ALL gain, input, causality, gain_causality, other_causality, outport, inport SUCH THAT (causality NEQ other_causality) AND ( inport NEQ outport ) AND ( ( (causality = gain_causality) AND (outport = 2) ) OR ( (causality = gain_causality) AND (outport = 1) ) ) LET lin(gain_causality, gain, other_causality, outport, input, causality, inport) = gain*input; %DESCRIPTION three port component: FMR % Linear Constitutive Relationship for FMR - unicausal case % Flow modulation multiplies effort on port 1 (or divides flow) % The 4 possibilities follow... FOR ALL gain_causality, gain, out_causality, input, in_causality, mod_input SUCH THAT (gain_causality=in_causality) AND (out_causality=flow) LET lin(gain_causality, gain, out_causality, 1, input, in_causality, 1, mod_input, flow, 2) = input*gain*mod_input; FOR ALL gain_causality, gain, out_causality, input, in_causality, mod_input SUCH THAT (gain_causality=in_causality) AND (out_causality=effort) LET lin(gain_causality, gain, out_causality, 1, input, in_causality, 1, mod_input, flow, 2) = input*gain/mod_input; FOR ALL gain_causality, gain, out_causality, input, in_causality, mod_input SUCH THAT (gain_causality NEQ in_causality) AND (out_causality=flow) LET lin(gain_causality, gain, out_causality, 1, input, in_causality, 1, mod_input, flow, 2) = input*mod_input/gain; FOR ALL gain_causality, gain, out_causality, input, in_causality, mod_input SUCH THAT (gain_causality NEQ in_causality) AND (out_causality=effort) LET lin(gain_causality, gain, out_causality, 1, input, in_causality, 1, mod_input, flow, 2) = input/(gain*mod_input); % Linear Constitutive Relationship for FMR - bicausal case % Deduces the flow on port 2. % The 2 possibilities follow... FOR ALL gain, e_input, f_input LET lin(effort, gain, flow, 2, e_input, effort, 1, f_input, flow, 1) = (f_input/e_input)/gain; %EMTF component - modulation only % Linear Constitutive Relationship for EMTF FOR ALL gain_causality, gain, causality, outport, input, same_causality, inport SUCH THAT ( (causality = gain_causality) AND (outport = 2) ) OR ( (causality NEQ gain_causality) AND (outport = 1) ) LET lin(gain_causality, causality, outport, input, same_causality, inport, gain, effort, 3) = gain*input; FOR ALL gain_causality, gain, causality, outport, input, same_causality, inport SUCH THAT ( (causality NEQ gain_causality) AND (outport = 2) ) OR ( (causality = gain_causality) AND (outport = 1) ) LET lin(gain_causality, causality, outport, input, same_causality, inport, gain, effort, 3) = input/gain; %EMTF component - modulation and gain % Linear Constitutive Relationship for EMTF FOR ALL gain_causality, gain, causality, outport, input, same_causality, inport, modulation SUCH THAT ( (causality = gain_causality) AND (outport = 2) ) OR ( (causality NEQ gain_causality) AND (outport = 1) ) LET lin(gain_causality, gain, causality, outport, input, same_causality, inport, modulation, effort, 3) = gain*modulation*input; FOR ALL gain_causality, gain, causality, outport, input, same_causality, inport, modulation SUCH THAT ( (causality NEQ gain_causality) AND (outport = 2) ) OR ( (causality = gain_causality) AND (outport = 1) ) LET lin(gain_causality, gain, causality, outport, input, same_causality, inport, modulation, effort, 3) = input/(gain*modulation); END;;