Index: mttroot/mtt/bin/trans/dae2cse_r ================================================================== --- mttroot/mtt/bin/trans/dae2cse_r +++ mttroot/mtt/bin/trans/dae2cse_r @@ -13,10 +13,13 @@ ############################################################### ## Version control history ############################################################### ## $Id$ ## $Log$ +## Revision 1.28 2005/09/07 17:04:12 geraint +## Fixes chi for cse representation. +## ## Revision 1.27 2005/03/21 11:50:39 gawthrop ## Don't write an empty cseo file ## ## Revision 1.26 2002/10/28 23:31:21 gawthrop ## Added additional term to MTTEdx to account for zdot terms on @@ -263,29 +266,43 @@ END; % Find MTTGu; write "% Find MTTGu;"; +IF MTTNu>0 THEN +BEGIN 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; +END +ELSE + MTTGu := 0; + %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; +IF MTTNu>0 THEN + matrix MTTExu(MTTNx,MTTNu); MTTExu := MTTFx*MTTGu; +END; END; -matrix MTTEyu(MTTNy,MTTNu); MTTEyu := MTTFy*MTTGu; + +IF MTTNu>0 THEN + BEGIN + matrix MTTEyu(MTTNy,MTTNu); MTTEyu := MTTFy*MTTGu; + END +ELSE + MTTEyu := 0; %% The following gets rid of the dZs; there must be a better way. @@ -312,21 +329,29 @@ IF MTTNx>0 THEN BEGIN MTTEdX := MTTdX; %Ie MTTEdX is MTTdX with the dz terms deleted ie EdX. MTTdX := MTTdXs; %Restore the symbolic dX -%% Add on input derivative terms -MTTEdX := MTTEdX + MTTExu*MTTdu; -%% Add on output derivative terms -MTTEdx := MTTEdX + MTTEyx*(MTTE^(-1))*MTTEdX; +IF MTTNu>0 THEN + %% Add on input derivative terms + MTTEdX := MTTEdX + MTTExu*MTTdu; +END; + +IF MTTNy>0 THEN + %% Add on output derivative terms + MTTEdx := MTTEdX + MTTEyx*(MTTE^(-1))*MTTEdX; +END; END; %%%%%MTTY := MTTY + MTTEyx*MTTEdX; %%% This causes the matrix mismatch %%% MTTdXs and MTTdu need setting in _def.r file -MTTY := MTTY + MTTEyu*MTTdu; + +IF MTTNu>0 THEN + MTTY := MTTY + MTTEyu*MTTdu; +END; IF MTTNx>0 THEN MTTY := MTTY + MTTEyx*(MTTE^(-1))*MTTEdX;