28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
Bformat = " %s.bonds = [\n";
fprintf(fid,"function [%s] = %s_abg\n", system_name, system_name);
fprintf(fid,"# This function is the acausal bond graph representation of %s\n",system_name);
fprintf(fid,"# Generated by MTT on %s",ctime(time));
fprintf(fid,"# The file is in Octave format\n");
fprintf(fid,"\n# Subsystems and Ports\n");
i_port=0;
for i=1:N
eval(["[comp_type, name, cr, arg, repetitions] = ", system_name, "_cmp(i);"]);
if index(name,"[")==0 # Not a port
fprintf(fid,"\n# Component %s\n", name);
fprintf(fid,Sformat,system_name,name,"type",comp_type);
fprintf(fid,Sformat,system_name,name,"cr",cr);
fprintf(fid,Sformat,system_name,name,"arg",arg);
fprintf(fid,Iformat,system_name,name,"repetitions",repetitions);
c = nozeros(connections(i,:));# Connections to this component
|
<
|
>
|
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
Bformat = " %s.bonds = [\n";
fprintf(fid,"function [%s] = %s_abg\n", system_name, system_name);
fprintf(fid,"# This function is the acausal bond graph representation of %s\n",system_name);
fprintf(fid,"# Generated by MTT on %s",ctime(time));
fprintf(fid,"# The file is in Octave format\n");
fprintf(fid,"\n# Subsystems and Ports\n");
i_port=0; SubsystemList = ""; PortList ="";
for i=1:N
eval(["[comp_type, name, cr, arg, repetitions] = ", system_name, "_cmp(i);"]);
if index(name,"[")==0 # Not a port
SubsystemList = [SubsystemList; name];
fprintf(fid,"\n# Component %s\n", name);
fprintf(fid,Sformat,system_name,name,"type",comp_type);
fprintf(fid,Sformat,system_name,name,"cr",cr);
fprintf(fid,Sformat,system_name,name,"arg",arg);
fprintf(fid,Iformat,system_name,name,"repetitions",repetitions);
c = nozeros(connections(i,:));# Connections to this component
|
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
|
else
name=name(2:length(name)-1); # Strip []
ch=name(1); # First char of name
if (ch>="0")&&(ch<="9") # Its a numeral
name=["mttp",name]; # prefix by mttp
endif;
fprintf(fid,"\n# Port %s\n", name);
fprintf(fid,PIformat,system_name,name,"index",++i_port);
fprintf(fid,PSformat,system_name,name,"type",comp_type);
fprintf(fid,PSformat,system_name,name,"cr",cr);
fprintf(fid,PSformat,system_name,name,"arg",arg);
fprintf(fid,PIformat,system_name,name,"repetitions",repetitions);
c = nozeros(connections(i,:));# Connections to this component
m = length(c); # Number of connections
fprintf(fid,PCformat,system_name,name);
for j=1:m
fprintf(fid,"%i ", c(j));
endfor;
fprintf(fid,"];\n");
endif;
endfor;
fprintf(fid,"\n# Bonds \n");
[N,M]=size(bonds); # Bonds
fprintf(fid,Bformat,system_name);
for i=1:N
fprintf(fid," ");
for j=1:M
fprintf(fid,"%i ", bonds(i,j));
|
>
>
>
>
>
>
>
>
|
>
>
>
>
>
>
>
>
>
|
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
|
else
name=name(2:length(name)-1); # Strip []
ch=name(1); # First char of name
if (ch>="0")&&(ch<="9") # Its a numeral
name=["mttp",name]; # prefix by mttp
endif;
PortList = [PortList; name];
fprintf(fid,"\n# Port %s\n", name);
fprintf(fid,PIformat,system_name,name,"index",++i_port);
fprintf(fid,PSformat,system_name,name,"type",comp_type);
fprintf(fid,PSformat,system_name,name,"cr",cr);
fprintf(fid,PSformat,system_name,name,"arg",arg);
fprintf(fid,PIformat,system_name,name,"repetitions",repetitions);
c = nozeros(connections(i,:));# Connections to this component
m = length(c); # Number of connections
fprintf(fid,PCformat,system_name,name);
for j=1:m
fprintf(fid,"%i ", c(j));
endfor;
fprintf(fid,"];\n");
endif;
endfor;
[N,M]=size(PortList);
if N>0 # Put name in list
fprintf(fid,"\n# Ordered list of Port names\n");
for i=1:N
fprintf(fid," %s.portlist(%i,:) = \"%s\";\n", system_name, i, PortList(i,:));
endfor;
endif;
[N,M]=size(SubsystemList);
if N>0 # Put name in list
fprintf(fid,"\n# Ordered list of subsystem names\n");
for i=1:N
fprintf(fid," %s.subsystemlist(%i,:) = \"%s\";\n", system_name, i, SubsystemList(i,:));
endfor;
endif;
fprintf(fid,"\n# Bonds \n");
[N,M]=size(bonds); # Bonds
fprintf(fid,Bformat,system_name);
for i=1:N
fprintf(fid," ");
for j=1:M
fprintf(fid,"%i ", bonds(i,j));
|