// SPDVERIF Symmetric Positive Definite Stiffness Matrix Verificator // // ========================================================================= // SYNTAX: SPDverif(K0,cDOFasc,K) // ========================================================================= // // SPDVERIF Subroutine part of MABS3D // (c)2010, Marcos C. Ruggeri // mruggeri@frh.utn.edu.ar // Universidad Tecnologica Nacional // Facultad Regional Haedo // Departamento Aeronautica // // Copyright 2010 Marcos C. Ruggeri // $Revision: //REV 1.7 2010/08/08 //REV 1.6 2010/06/31------------START SPD VERIFICATION---------------------- function SPDverif(K0,cDOFasc,K) lines0_K0=zeroslines(K0); for i=1:length(lines0_K0) flag=0; for h=1:length(cDOFasc) if lines0_K0(i)==cDOFasc(h) flag=1; break else end end if flag==0 //Unconstrained DOF lin0_K0 not was removed by cDOF //Detecting possibility of corresponding unconstrained node to //uncDOF. uncDOF=lines0_K0(i); npos1=(uncDOF+2)/3; //x-direction npos2=(uncDOF+1)/3; //y-direction npos3=uncDOF/3; //z-direction if npos1==fix(npos1) uncn=npos1; comp=1; //DOF-component elseif npos2==fix(npos2) uncn=npos2; comp=2; else uncn=npos3; comp=3; end warning(['RIGID BODY MOTION IN DOF-COMPONENT ',string(comp),' (DOF:',string(uncDOF),') FROM NODE ',string(uncn),' IS NOT PREVENTED.']) else end end if det(K)==0 error('ACTIVE STIFFNESS MATRIX OF STRUCTURE IS SINGULAR. CHECK BOUNDARY CONDITIONS.') end endfunction //REV 1.6 2010/06/31------------END SPD VERIFICATION------------------------ function lines0_K0=zeroslines(K0) lines0=[]; cont=0; for j=1:length(K0) if K0(:,j)==0 cont=cont+1; lines0(cont)=j; else end end endfunction //Translated by LBD 2010/11/09