FEM-Course-Matlab/18. 材料非线性问题matlab有限元编程/elastic/FemModel.m

59 lines
1.6 KiB
Matlab

function FemModel(filename)
% 定义有限元模型
% 该函数定义平面问题的有限元模型数据:
% gNode ------- 节点定义
% gElement ---- 单元定义
% gMaterial --- 材料定义,包括弹性模量,梁的截面积和梁的抗弯惯性矩
% gBC1 -------- 约束条件
% gDF --------- 分布力
global gNode gElement gMaterial gBC1 gDF
% 打开文件
fid = fopen( filename, 'r' ) ;
% 读取节点坐标
node_number = fscanf( fid, '%d', 1 ) ;
gNode = zeros( node_number, 2 ) ;
for i=1:node_number
dummy = fscanf( fid, '%d', 1 ) ;
gNode( i, : ) = fscanf( fid, '%f', [1, 2] ) ;
end
% 读取单元定义
element_number = fscanf( fid, '%d', 1 ) ;
gElement = zeros( element_number, 4 ) ;
for i=1:element_number
dummy = fscanf( fid, '%d', 1 ) ;
gElement( i, : ) = fscanf( fid, '%d', [1, 4] ) ;
end
% 读取荷载信息
load_number = fscanf( fid, '%d', 1 ) ;
gDF = zeros( load_number, 4 ) ;
for i=1:load_number
dummy = fscanf( fid, '%d', 1 ) ;
gDF( i, : ) = fscanf( fid, '%f', [1, 4] ) ;
end
% 读取材料信息
material_number = fscanf( fid, '%d', 1 ) ;
gMaterial = zeros( material_number, 4 ) ;
for i=1:material_number
dummy = fscanf( fid, '%d', 1 ) ;
gMaterial( i, : ) = fscanf( fid, '%f', [1,4] ) ;
end
% 读取边界条件
bc1_number = fscanf( fid, '%d', 1 ) ;
gBC1 = zeros( bc1_number, 3 ) ;
for i=1:bc1_number
gBC1( i, 1 ) = fscanf( fid, '%d', 1 ) ;
gBC1( i, 2 ) = fscanf( fid, '%d', 1 ) ;
gBC1( i, 3 ) = fscanf( fid, '%f', 1 ) ;
end
% 关闭文件
fclose( fid ) ;
return