Forum: Answers and discussion Monitor Forum | Start New Thread
 Nested Flat Threaded Ultimate Show 25 Show 50 Show 75 Show 100
 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