disp(' '); disp(' mass_properties.m ver 1.2 March 22, 2010 '); disp(' '); disp(' by Tom Irvine Email: tomirvine@aol.com '); disp(' '); disp(' This program calculates the mass properties for a dynamic system '); disp(' from its unconstrained mass and stiffness matrices. '); disp(' '); disp(' The model must have 6 dof per node. '); disp(' '); % clear acc; clear dis; clear vel; clear k; clear m; clear damp; clear Eigenvalues; clear ModeShapes; clear omega; clear omegan; clear fn; clear MST; clear ModalMass; clear part; clear QTMQ; clear r; clear t; clear f1; clear f2; clear x; clear d; clear v; clear na; clear nv; clear nd; clear Q; clear mass; clear stiffness; clear max; clear kq; clear mq; % tpi=2.*pi; % disp(' '); disp(' Enter the units system '); disp(' 1=English 2=metric '); iu=input(' '); % mass_scale=1; % if(iu==1) disp(' Select input mass unit '); disp(' 1=lbm 2=lbf sec^2/in '); imu=input(' '); if(imu==1) mass_scale=386; mass_unit='lbm'; else mass_unit='lbf sec^2/in'; end else disp(' mass unit = kg '); mass_unit='kg'; end % disp(' '); if(iu==1) disp(' stiffness unit = lbf/in '); else disp(' stiffness unit = N/m '); end % % disp(' '); disp(' Select file input method '); disp(' 1=file preloaded into Matlab '); disp(' 2=Excel file '); file_choice = input(''); % disp(' '); disp(' Unconstrained Mass Matrix '); % if(file_choice==1) m = input(' Enter the matrix name: '); end if(file_choice==2) [filename, pathname] = uigetfile('*.*'); xfile = fullfile(pathname, filename); % m = xlsread(xfile); % end % m=m/mass_scale; % mass=m; % disp(' '); disp(' Unconstrained Stiffness Matrix '); % if(file_choice==1) k = input(' Enter the matrix name: '); end if(file_choice==2) [filename, pathname] = uigetfile('*.*'); xfile = fullfile(pathname, filename); % k = xlsread(xfile); % end stiffness=k; % size(m); size(k); % num=max(size(m)); % %% disp(' '); %% disp(' The mass matrix is'); %% m %% disp(' '); %% disp(' The stiffness matrix is'); %% k % %% disp(' '); %% iret=input(' Enter the number of degrees-of-freedom to retain: '); nret=6; disp(' '); rnn=input(' Enter retained node number: '); clear ret; for(i=1:nret) iret(i)=((rnn-1)*6)+i; end disp(' '); disp(' Retained dof '); out1=sprintf(' %d %d %d %d %d %d \n',iret(1),iret(2),iret(3),iret(4),iret(5),iret(6)); disp(out1); % clear mr; clear kr; kr=zeros(nret,nret); mr=zeros(nret,nret); % clear M11; clear M12; clear M21; clear M22; % clear K11; clear K12; clear K21; clear K22; % clear ngw; ijk=nret+1; ngw=zeros(num,1); ngw(1:nret)=iret; for(i=1:num) iflag=0; for(nv=1:nret) if(i==iret(nv)) iflag=1; end end if(iflag==0) ngw(ijk)=i; ijk=ijk+1; end end % %%%%%%%%%%%%%%%%%%%%% M11 K11 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % ic=1; for(i=1:num) iflag=0; for(nv=1:nret) if(i==iret(nv)) iflag=1; break; end end if(iflag==1) jc=1; for(j=1:num) jflag=0; for(nv=1:nret) if(j==iret(nv)) jflag=1; break; end end if(jflag==1) % out1=sprintf(' i=%d j=%d ic=%d jc=%d \n',i,j,ic,jc); % disp(out1); M11(ic,jc)=m(i,j); K11(ic,jc)=k(i,j); jc=jc+1; end % out1=sprintf(' i=%d j=%d iflag=%d jflag=%d \n',i,j,iflag,jflag); % disp(out1); end end if(iflag==1) ic=ic+1; end end % %%%%%%%%%%%%%%%%%%%%% M12 K12 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % ic=1; for(i=1:num) iflag=0; for(nv=1:nret) if(i==iret(nv)) iflag=1; break; end end if(iflag==1) jc=1; for(j=1:num) jflag=0; for(nv=1:nret) if(j==iret(nv)) jflag=1; break; end end if(jflag==0) % out1=sprintf(' i=%d j=%d ic=%d jc=%d \n',i,j,ic,jc); % disp(out1); M12(ic,jc)=m(i,j); K12(ic,jc)=k(i,j); jc=jc+1; end % out1=sprintf(' i=%d j=%d iflag=%d jflag=%d \n',i,j,iflag,jflag); % disp(out1); end end if(iflag==1) ic=ic+1; end end % %%%%%%%%%%%%%%%%%%%%% M21 K21 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % ic=1; for(i=1:num) iflag=0; for(nv=1:nret) if(i==iret(nv)) iflag=1; break; end end if(iflag==0) jc=1; for(j=1:num) jflag=0; for(nv=1:nret) if(j==iret(nv)) jflag=1; break; end end if(jflag==1) % out1=sprintf(' i=%d j=%d ic=%d jc=%d \n',i,j,ic,jc); % disp(out1); M21(ic,jc)=m(i,j); K21(ic,jc)=k(i,j); jc=jc+1; end % out1=sprintf(' i=%d j=%d iflag=%d jflag=%d \n',i,j,iflag,jflag); % disp(out1); end end if(iflag==0) ic=ic+1; end end % %%%%%%%%%%%%%%%%%%%%%%% M22 K22 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % ic=1; for(i=1:num) iflag=0; for(nv=1:nret) if(i==iret(nv)) iflag=1; break; end end if(iflag==0) jc=1; for(j=1:num) jflag=0; for(nv=1:nret) if(j==iret(nv)) jflag=1; break; end end if(jflag==0) % out1=sprintf(' i=%d j=%d ic=%d jc=%d \n',i,j,ic,jc); % disp(out1); M22(ic,jc)=m(i,j); K22(ic,jc)=k(i,j); jc=jc+1; end % out1=sprintf(' i=%d j=%d iflag=%d jflag=%d \n',i,j,iflag,jflag); % disp(out1); end end if(iflag==0) ic=ic+1; end end % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %% M11 %% if(iret