ext56uxuy.m

来自「vibration simulation using ansys and mat」· M 代码 · 共 147 行

M
147
字号
echo off
%	ext56uxuy.m		extraction of ux and uy dof's only
%	10-13-00

	clear all;

%	bring up a window with the file names of defined extension to choose from

	filename=uigetfile('*.eig','Select Input file from list')

	fid = fopen(filename,'rt');  %% Open in read mode as text.


	if fid == -1
	   	
	   	error('Error opening the file')

	end

	
	while 1
	
	   	nextline = fgetl(fid);   									% 	read a line
	   	
	   	if ~isstr(nextline), break, end  							% 	end of the file
	   
	   	if ext56chk(nextline, ' LOAD STEP=') & ext56chk(nextline, 'SUBSTEP=') 

	      	if ~ext56chk(nextline, 'CUM')	%	skips first LOAD STEP= and SUBSTEP=

	         	disp(nextline);

	         	a = sscanf(nextline, ' LOAD STEP= %f  SUBSTEP= %f ');

	         	mode_num = a(2);

	      	end

	   	end
	  
	   	if ext56chk(nextline, 'FREQ=')

	      	disp(nextline);

	      	%                     v--- the leading space below the "v" is important or won't work
	      	b = sscanf(nextline, ' FREQ= %f LOAD CASE= %f');

	      	freqin(mode_num) = b(1);

	   	end

% 	numbers in the array, so sscanf returns a vector
	   
	   	if ext56chk(nextline, 'ROTZ')

	      	array = [];

			numdof = 0;

	      	while 1

	         	nextline = fgetl(fid);

	         	c = sscanf(nextline, ' %f');

	         	if isempty(c), break, end
	         
	         	array = [array, c];

	     	end
	
			eva(:,:,mode_num) = array';
	
		end  
	
	end
	
	eva(:,:,mode_num) = array';
	
	fclose(fid);
	

%	reorder results in stacked vector form, with each mode represented by its frequency and
%	then its eigenvector
	
%	eva(:,1,1) is node number
%	eva(:,2,1) is ux dof column
%	eva(:,3,1) is uy dof column
%	eva(:,4,1) is uz dof column
%	eva(:,5,1) is rotx dof column
%	eva(:,6,1) is roty dof column
%	eva(:,7,1) is rotz dof column

%	include the appropriate eva values in the frequency/eigenvector vector as below

%	ev(:,1) = [freqin(1)			%	frequency of mode 1
%				eva(:,3,1)			%   uy dof included
%				eva(:,4,1)];		%   uz dof included
%				
%	for  cnt = 2:mode_num
%	
%		ev = 	   [ev(:,1)
%					freqin(cnt)		%	frequency of mode cnt
%					eva(:,3,cnt)	%   uy dof included
%					eva(:,4,cnt)];	%   uz dof included
%					
%	end				


%	for this model, include ux and uy dof's

	ev(:,1) = [freqin(1)			%	frequency of mode 1
				eva(:,2,1)			%   ux dof included
				eva(:,3,1)];		%   uy dof included

	[numrows,numcols] = size(ev(:,1));
				
	numdof = numrows - 1;

	for  cnt = 2:mode_num
	
		ev = 	   [ev(:,1)
					freqin(cnt)		%	frequency of mode cnt
					eva(:,2,cnt)	%   ux dof included
					eva(:,3,cnt)];	%   uy dof included
					
	end				

%	convert to vector of frequencies, freqvec, and matrix of eigenvectors, evr
	
   	nmodes = length(ev)/numrows;

   	evr = reshape(ev,numrows,nmodes);

   	freqvec = evr(1,:)'

	node_numbers = eva(:,1,1)

   	evr = evr(2:numdof+1,:);

	save  ext56_uxuy  node_numbers  freqvec  evr	
	
	
	
	
	
	

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?