Overview
Comment:Vector ports added!!
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | origin/master | trunk
Files: files | file ages | folders
SHA3-256: 6847e1f089489c00117baafe4cfde62e3413a03cb37ae5726fa57e912b5b6cee
User & Date: gawthrop@users.sourceforge.net on 1997-08-14 11:59:47
Other Links: branch diff | manifest | tags
Context
1997-08-15
08:04:01
Initial revision check-in: 1ef5e6426a user: gawthrop@users.sourceforge.net tags: origin/master, trunk
1997-08-14
11:59:47
Vector ports added!! check-in: 6847e1f089 user: gawthrop@users.sourceforge.net tags: origin/master, trunk
11:01:42
Reordered algorithms as follows:
bond end coordinates
associate port labels with bonds (port_bond)
associate bonds with components
unsorted list of bonds on each component (components)
interpret strokes and setup the causality of the bonds (bonds)
expand vector ports & add new bonds and connections
sort bonds on each component according to the labels -- two ports
default included here.
check-in: d75632f734 user: gawthrop@users.sourceforge.net tags: origin/master, trunk
Changes

Modified mttroot/mtt/bin/trans/m/rbg2abg.m from [0a2a4fa9dc] to [4917e3f3d1].

1
2
3
4
5
6
7











8
9
10
11
12
13
14
function [bonds,components] = rbg2abg(name,rbonds,rstrokes,rcomponents,port_coord,port_name,infofile)

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %% Version control history
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %% $Id$
% %% $Log$











% %% Revision 1.17  1997/08/09 11:31:16  peterg
% %% Default two port list is [in;out] (or [out;in])
% %% Dont do global default if no ports labels.
% %%
% %% Revision 1.16  1997/08/07  16:12:36  peterg
% %% Fixed sorting bug: now puts the jth component from the unsorted list
% %% into the kth component of the sorted list .. not vice versa!







>
>
>
>
>
>
>
>
>
>
>







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
function [bonds,components] = rbg2abg(name,rbonds,rstrokes,rcomponents,port_coord,port_name,infofile)

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %% Version control history
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %% $Id$
% %% $Log$
% %% Revision 1.18  1997/08/14  11:01:42  peterg
% %% Reordered algorithms as follows:
% %% bond end coordinates
% %% associate port labels with bonds (port_bond)
% %% associate bonds with components
% %% unsorted list of bonds on each component (components)
% %% interpret strokes and setup the causality of the bonds (bonds)
% %% expand vector ports & add new bonds and connections
% %% sort bonds on each component according to the labels -- two ports
% %% default included here.
% %%
% %% Revision 1.17  1997/08/09 11:31:16  peterg
% %% Default two port list is [in;out] (or [out;in])
% %% Dont do global default if no ports labels.
% %%
% %% Revision 1.16  1997/08/07  16:12:36  peterg
% %% Fixed sorting bug: now puts the jth component from the unsorted list
% %% into the kth component of the sorted list .. not vice versa!
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224




225
226
227
228



229
230
231


232
233
234
235
236
237
238
239
240
241
242
243

244
245

246
247



248
249
250

251
252
253
254
255
256
257
exp_port_name="";
%exp_comps = [];
for i=1:n_ports
  subport = split(port_name(i,:), ',');
  [n_subports,junk] = size(subport);
  exp_port_name = [exp_port_name; subport(1,:)];
  if n_subports>1
    mtt_info(port_name(i,:),infofile);
    % Check that there is a corresponding vector port at the other end of the
    % bond
    signed_bond_index = port_bond(i);
    [other_index,n_other] = getindex(port_bond,-signed_bond_index);
    if n_other == 1
      other_port_name = port_name(other_index,:);
      mtt_info(other_port_name,infofile);




    else 
      mtt_info(['Vector port ', port_name(i,:), ' has no matching port'], infofile);
    end;
    



    % Remove sign info.
    bond_index = abs(signed_bond_index);
    sig = sign(signed_bond_index);


    for j=2:n_subports
      mtt_info(subport(j,:),infofile);
      % Add a new name to give a non-vector list
      exp_port_name = [exp_port_name; subport(j,:)];
      n_exp_ports = n_exp_ports+1;
      
      % Add one more bond to the list
      bonds = [bonds; bonds(bond_index,:)];
      n_bonds = n_bonds + 1;
      
      % Add bond to the port_bond list
      port_bond = [port_bond; n_bonds];


      % Add a new bond to the component at this end (taking note of the direction).

      comp_index = comp_near_bond(bond_index,1);
      components = add_bond(components, sig*n_bonds, comp_index);



    end;
  end;
end;


%Replace old list by new
port_name = exp_port_name

%Resize the lists
[n_ports,junk] = size(port_name);








<



|

|
|
>
>
>
>




>
>
>
|
|
|
>
>
|
<
|
|
|
|
|
|
|

|
|
>

|
>
|
|
>
>
>



>







221
222
223
224
225
226
227

228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251

252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
exp_port_name="";
%exp_comps = [];
for i=1:n_ports
  subport = split(port_name(i,:), ',');
  [n_subports,junk] = size(subport);
  exp_port_name = [exp_port_name; subport(1,:)];
  if n_subports>1

    % Check that there is a corresponding vector port at the other end of the
    % bond
    signed_bond_index = port_bond(i);
    [other_bond_index,n_other] = getindex(port_bond,-signed_bond_index);
    if n_other == 1
      other_port_name = port_name(other_bond_index,:);
      other_subport = split(other_port_name, ',');
      [n_other_subports,junk] = size(other_subport);
      if n_other_subports~=n_subports
	mtt_info(['Vector ports ', port_name(i,:), ' and ', other_port_name, 'are not compatible'],infofile);
      end
    else 
      mtt_info(['Vector port ', port_name(i,:), ' has no matching port'], infofile);
    end;
    
    if other_bond_index>i %then its not been done yet
      mtt_info(['Vector port: ', port_name(i,:)],infofile);
      mtt_info(['matching: ', other_port_name],infofile);
      % Remove sign info.
      bond_index = abs(signed_bond_index);
      sig = sign(signed_bond_index);
      % add first element of port list to the expanded list
      exp_port_name = [exp_port_name; other_subport(1,:)];
      for j=2:n_subports

	% Add a new name (for each end) to give a non-vector list
	exp_port_name = [exp_port_name; subport(j,:)];
	exp_port_name = [exp_port_name; other_subport(j,:)];
	      
	% Add one more bond to the list
	bonds = [bonds; bonds(bond_index,:)];
	n_bonds = n_bonds + 1;
      
	% Add bond to the port_bond list
	port_bond = [port_bond; sig*n_bonds]; %this end
	port_bond = [port_bond; -sig*n_bonds]; %other end

	% Add a new bond to the component at both ends (taking note 
	% of the direction).
	arrow_index = comp_near_bond(bond_index,1);
	components = add_bond(components, n_bonds, arrow_index);
	other_index = comp_near_bond(bond_index,2);
	components = add_bond(components, -n_bonds, other_index);
      end;
    end;
  end;
end;


%Replace old list by new
port_name = exp_port_name

%Resize the lists
[n_ports,junk] = size(port_name);


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