function [bonds,status] = EMTF_cause(bonds); % EMTF_cause - causality for a modulated TF component % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %%%%% Model Transformation Tools %%%%% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Matlab function EMTF_cause % [bonds,status] = EMTF_cause(bonds) % Causality for effort-modulated EMTF % At the moment, modulation can NOT be inverted. %SUMMARY EMTF: effort-modulated transformer %DESCRIPTION Energy conserving three-port %DESCRIPTION Ports [1] and [2] as for TF %DESCRIPTION e_1 = f(f_2); f_1 = f(e_2) %DESCRIPTION Effort on port[3] modulates the CR % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %% Version control history % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %% $Id$ % %% $Log$ % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Copyright (c) P.J. Gawthrop, 1996. status = -1; % Check that there are exactly three bonds. if check_bonds(bonds,3,'EMTF')==0 return end % Extract the bond information TF_bonds = bonds(1:2,:); e_3 = bonds(3,1); f_3 = bonds(3,2); %Causality of EMTF is same as that of a TF on ports 1 and 2 [TF_bonds,TF_status] = TF_cause(TF_bonds); % Effort is the modulation - imposed on component. if e_3==-1 % Conflict mod_status_e = 1; else % Do the rest of the causality if e_3==0 % Set to the fixed causality e_3 = 1; end; mod_status_e = 0; end; % Zero flow imposed by component. if f_3==-1 % Conflict mod_status_f = 1; else % Do the rest of the causality if f_3==0 % Set to the fixed causality f_3 = 1; end; mod_status_f = 0; end; bonds = [TF_bonds e_3 f_3]; if (TF_status == 0) & (mod_status_e == 0) & (mod_status_f == 0) status = 0; end; if (TF_status == 1) | (mod_status_e == 1) | (mod_status_f == 1) status = 1; end;