11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# Copyright (c) P.J.Gawthrop 1991, 1992, 1994.
###############################################################
## Version control history
###############################################################
## $Id$
## $Log$
## Revision 1.6 1998/07/19 12:44:35 peterg
## Set MTTYz := 0 if the array is empty - avoids irritating error
## message.
##
## Revision 1.5 1998/05/20 15:23:26 peterg
## Put MTTYz := MTTYz outsise the BEGIN/END
##
|
>
>
>
|
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# Copyright (c) P.J.Gawthrop 1991, 1992, 1994.
###############################################################
## Version control history
###############################################################
## $Id$
## $Log$
## Revision 1.7 1998/10/05 10:46:15 peterg
## Commented out redundant MTTY := MTTY + MTTEyx*MTTEdX;
##
## Revision 1.6 1998/07/19 12:44:35 peterg
## Set MTTYz := 0 if the array is empty - avoids irritating error
## message.
##
## Revision 1.5 1998/05/20 15:23:26 peterg
## Put MTTYz := MTTYz outsise the BEGIN/END
##
|
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
136
137
138
139
140
141
142
143
144
145
146
|
in "$1_dae.r";
%Create F_x, F_y matrices - assumming equations are
% linear in dZ
IF MTTNz>0 THEN
BEGIN
% Find MTTFx;
write "% Find MTTFx;";
matrix MTTFx(MTTNx,MTTNz);
FOR j := 1:MTTNz DO
BEGIN
dzj := MTTdZ(j,1);
FOR i := 1:MTTNx DO
MTTFx(i,j) := df(MTTdX(i,1), dzj, 1);
END;
% Find MTTFy;
write "% Find MTTFy;";
matrix MTTFy(MTTNy,MTTNz);
FOR j := 1:MTTNz DO
BEGIN
dzj := MTTdZ(j,1);
FOR i := 1:MTTNy DO
MTTFy(i,j) := df(MTTy(i,1), dzj, 1);
END;
%Create G_x, G_u matrices
write "%Create G_x, G_u matrices ";
% Find MTTGx;
write "% Find MTTGx;";
matrix MTTGx(MTTNz,MTTNx);
FOR j := 1:MTTNx DO
BEGIN
xj := MTTX(j,1);
FOR i := 1:MTTNz DO
MTTGx(i,j) := df(MTTZ(i,1), xj, 1);
END;
% Find MTTGu;
write "% Find MTTGu;";
matrix MTTGu(MTTNz,MTTNu);
FOR j := 1:MTTNu DO
BEGIN
uj := MTTu(j,1);
FOR i := 1:MTTNz DO
MTTGu(i,j) := df(MTTZ(i,1), uj, 1);
END;
%Create E matrices
write "%Create E matrices";
matrix MTTExx(MTTNx,MTTNx); MTTExx := MTTFx*MTTGx;
matrix MTTExu(MTTNx,MTTNu); MTTExu := MTTFx*MTTGu;
matrix MTTEyx(MTTNy,MTTNx); MTTEyx := MTTFy*MTTGx;
matrix MTTEyu(MTTNy,MTTNu); MTTEyu := MTTFy*MTTGu;
matrix MTTE(MTTNx,MTTNx); MTTE := MTTI - MTTExx;
%% The following gets rid of the dZs; there must be a better way.
MTTdZ1 := 0;
MTTdZ2 := 0;
MTTdZ3 := 0;
MTTdZ4 := 0;
|
>
>
>
>
>
>
>
>
>
>
>
>
>
<
|
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
|
in "$1_dae.r";
%Create F_x, F_y matrices - assumming equations are
% linear in dZ
IF MTTNz>0 THEN
BEGIN
IF MTTNx>0 THEN
BEGIN
% Find MTTFx;
write "% Find MTTFx;";
matrix MTTFx(MTTNx,MTTNz);
FOR j := 1:MTTNz DO
BEGIN
dzj := MTTdZ(j,1);
FOR i := 1:MTTNx DO
MTTFx(i,j) := df(MTTdX(i,1), dzj, 1);
END;
END;
% Find MTTFy;
write "% Find MTTFy;";
matrix MTTFy(MTTNy,MTTNz);
FOR j := 1:MTTNz DO
BEGIN
dzj := MTTdZ(j,1);
FOR i := 1:MTTNy DO
MTTFy(i,j) := df(MTTy(i,1), dzj, 1);
END;
%Create G_x, G_u matrices
write "%Create G_x, G_u matrices ";
% Find MTTGx;
IF MTTNx>0 THEN
BEGIN
write "% Find MTTGx;";
matrix MTTGx(MTTNz,MTTNx);
FOR j := 1:MTTNx DO
BEGIN
xj := MTTX(j,1);
FOR i := 1:MTTNz DO
MTTGx(i,j) := df(MTTZ(i,1), xj, 1);
END;
END;
% Find MTTGu;
write "% Find MTTGu;";
matrix MTTGu(MTTNz,MTTNu);
FOR j := 1:MTTNu DO
BEGIN
uj := MTTu(j,1);
FOR i := 1:MTTNz DO
MTTGu(i,j) := df(MTTZ(i,1), uj, 1);
END;
%Create E matrices
write "%Create E matrices";
IF MTTNx>0 THEN
BEGIN
matrix MTTExx(MTTNx,MTTNx); MTTExx := MTTFx*MTTGx;
matrix MTTExu(MTTNx,MTTNu); MTTExu := MTTFx*MTTGu;
matrix MTTEyx(MTTNy,MTTNx); MTTEyx := MTTFy*MTTGx;
matrix MTTE(MTTNx,MTTNx); MTTE := MTTI - MTTExx;
END;
matrix MTTEyu(MTTNy,MTTNu); MTTEyu := MTTFy*MTTGu;
%% The following gets rid of the dZs; there must be a better way.
MTTdZ1 := 0;
MTTdZ2 := 0;
MTTdZ3 := 0;
MTTdZ4 := 0;
|