Forum: Answers and discussion

Monitor Forum | Start New Thread Start New Thread
RE: Checking mode orthogonality [ Reply ]
By: Guillaume Vermot des Roches on 2018-04-26 15:55
[forum:884]
Hello,

Beware that the operation that you are performing is not generic as Case.T is not always orthogonal.

You should check (as mentioned in the previous response) command basis('trans') with a call of the form
cGL=basis('transe',model_origin.bas,model_origin.Node,def.DOF);
PHI_1=cGL*def.def;

RE: Checking mode orthogonality [ Reply ]
By: ying liu on 2018-04-26 15:30
[forum:883]
Thanks, I solve this problem using codes:

Case=fe_case('gett',model_origin);
PHI_1=Case.T'*def.def;

Thank you again!

Checking mode orthogonality [ Reply ]
By: Balmes on 2018-04-25 16:29
[forum:882]
Question : I used the following codes to import the model, calculate the frequencies and mode shapes, and verify the orthogonality conditions. But it seems that the normal
modeshapes cannot match the orthogonality conditions, even worse, I cannot obtain the same frequencies as the full order model by use of the reduced matrices.

Codes:
model_origin=importfromansys('dongquan_origin');
[M_1,K_1,mdof_origin] = fe_mknl(model_origin);
def=fe_eig(model_origin);
[yn,pos]=ismember(mdof_origin,def.DOF);
PHI_1=def.def;
PHI_1=PHI_1(pos,:);

[V,D]=eig(PHI_1'*K_1*PHI_1,PHI_1'*M_1*PHI_1);
D=diag(D);
[D2,position]=sort(D,1);
ff=sqrt(D2)/2/pi;


Answer :

Your problem uses local coordinates so you cannot just simply extract DOFs as you have done but need to look into basis('cGL') if you want to do it manually.
Please also note that [yn,pos]=ismember(mdof_origin,def.DOF); may give wrong results. You should use

pos=fe_c(def.DOF,mdof_origin,'ind');

Otherwise to show mass normalization you need to use

SE=fe_mknl(model_origin,'NoT'); % Do not eliminate constraints
K=feutilb('tkt',def.def,SE.K)
K{1} % identity modal mass
K{2} % diagonal with frequency squared


Importing data into SDT (6.0) [ Reply ]
By: Balmes on 2009-06-25 06:17
[forum:17]

 You are not the first one getting lost here and we have reworked this type of issue very much since SDT 6.0. I think the easiest for you is

 

ci=idcom;  % not the generic iiplot but with data for identification
ci.Stack{
'Test'
}=UFS(1);
iicom sub % refresh the data

Original question :

When I do this:
 
>> UFS=ufread('Modal_VRT.uff');
The data is there, see:
 
>> UFS.info
ans =
 
  Response data (801x5)
  Fun   : 0 (general or unknown)
  x     : (Type) 18 (Label)         NONE (Unit)        Hz (lft ue  0 0 0)
  yn    : (Type) 12 (Label)         NONE (Unit)         g (lft ue  0 0 0)
  yd    : (Type) 13 (Label)         NONE (Unit)       lbf (lft ue  0 0 0)
  z     : (Type)  0 (Label)      Unknown (Unit)      None (lft ue  0 0 0)
  Header: Data Physics Corporation
          NONE
          27-May-09 13:51:27
          NONE
          NONE
 
Following the tutorial/example:
 
>> ci=iiplot;
>> ci.Stack{1,3}=UFS(3)
 

... more was cut