# Forum: Answers and discussion

Monitor Forum | Start New ThreadRE: 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
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 |