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: 92c9933aa2d1e10dec9932815e80bd6132c3aa48028799d654c99de4b4b12771
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;
























MTT: Model Transformation Tools
GitHub | SourceHut | Sourceforge | Fossil RSS ]