Overview
Comment: | Initial revision |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | origin/master | trunk |
Files: | files | file ages | folders |
SHA3-256: |
92c9933aa2d1e10dec9932815e80bd61 |
User & Date: | gawthrop@users.sourceforge.net on 1996-08-04 17:55:55 |
Other Links: | branch diff | manifest | tags |
Context
1996-08-04
| ||
18:30:14 | Initial revision check-in: 9395f7dc2d user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
17:55:55 | Initial revision check-in: 92c9933aa2 user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
17:45:11 | Initial revision check-in: a0d453e325 user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
Changes
Added mttroot/mtt/bin/trans/m/abg2cbg.m version [ffe620077d].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | function [bonds,status] = abg2cbg(system_name,bonds,infofile) % [bonds,status] = abg2cbg(system_name,bonds,infofile) % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %%%%% Model Transformation Tools %%%%% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Matlab function abg2cbg.m % Acausal bond graph to causal bond graph: mfile format % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %% Version control history % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %% $Id$ % %% $Log$ % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% pc = '%'; if nargin<3 infofile = 'stdout'; end; % Evaluate the system function to get the bonds fun_name = [system_name, '_abg'] if exist(fun_name)~=2 mtt_info(['m-file ', fun_name, ' does not exist'], infofile); bonds = []; status = []; else eval(['[bonds,components]=', fun_name, ';']); % Find number of bonds [n_bonds,columns] = size(bonds); if (columns ~= 2)&(n_bonds>0) error('Incorrect bonds matrix: must have 2 columns'); end; % Find number of components [n_components,columns] = size(components); % Set initial status status = -ones(n_components,1); total = 2*n_bonds; done = sum(sum(abs(bonds)))/total*100; mtt_info(sprintf('Initial causality is %3.0f%s complete.', done, pc), infofile); old_done = inf; while done~=old_done disp(sprintf('Causality is %3.0f%s complete.', done, pc)); old_done = done; for i = 1:n_components comp = nozeros(components(i,:)); bond_list = abs(comp); direction = sign(comp)'*[1 1]; % Convert from arrow orientated to component orientated causality comp_bonds = bonds(bond_list,:).*direction; eval([ '[comp_type,name,cr,arg] = ', system_name, '_cmp(i);' ]); % change name of 0 and 1 components -- matlab doesn't like numbers here if strcmp(comp_type,'0') comp_type = 'zero'; end; if strcmp(comp_type,'1') comp_type = 'one'; end; % Invoke the appropriate causality procedure cause_name = [comp_type, '_cause']; if exist(cause_name)~=2 % Try a compound component -- need doing mtt_info(sprintf('Component %s is unknown', comp_type), infofile); % $$$ sys_name = [comp_type, '_abg']; % $$$ agb2cbg(sys_name,comp_bonds,infofile); else % its a simple component cause_name eval([ '[comp_bonds,status(i)] = ', cause_name, '(comp_bonds);' ]); % Convert from component orientated to arrow orientated causality bonds(bond_list,:) = comp_bonds.*direction; end; end; done = sum(sum(abs(bonds)))/total*100; % mtt_info(sprintf('Causality is %3.0f%s complete.', done, pc), infofile); end; end; final_done = (sum(status==zeros(n_components,1))/n_components)*100;; mtt_info(sprintf('Final causality is %3.0f%s complete.', final_done, pc), infofile); % List overcausal bonds [over_causal_bonds,n] = getindex(status,1) if n>0 for i=over_causal_bonds' eval([ '[comp_type,name] = ', system_name, '_cmp(i);' ]); mtt_info(sprintf('Component %s (%s) is overcausal', name, comp_type), ... infofile); end; end; % List undercausal bonds [under_causal_bonds,n] = getindex(status,-1) if n>0 for i=under_causal_bonds' eval([ '[comp_type,name] = ', system_name, '_cmp(i);' ]); mtt_info(sprintf('Component %s (%s) is undercausal', name, comp_type), ... infofile); end; end; |