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

58 lines
1.8 KiB
Matlab

function Groundoverload(file_in)
% 本程序采用常应变三角形单元计算地面在局部超载作用下的变形和应力
% 全局变量
% gNode ------------- 节点坐标
% gElement ---------- 单元定义
% gMaterial --------- 材料性质
% gBC1 -------------- 约束条件
% gDF --------------- 分布力
% gK ---------------- 整体刚度矩阵
% gDelta ------------ 整体节点坐标
% gNodeStress ------- 节点应力
% gElementStress ---- 单元应力
global gNode gElement gMaterial gBC1 gDF gK gDelta gNodeStress gElementStress
if nargin < 1
file_in = 'Groundoverload.dat' ;
end
% 检查文件是否存在
if exist( file_in ) == 0
disp( sprintf( '错误:文件 %s 不存在', file_in ) )
disp( sprintf( '程序终止' ) )
return ;
end
% 根据输入文件名称生成输出文件名称
[path_str,name_str,ext_str] = fileparts( file_in ) ;
ext_str_out = '.mat' ;
file_out = fullfile( path_str, [name_str, ext_str_out] ) ;
% 检查输出文件是否存在
if exist( file_out ) ~= 0
answer = input( sprintf( '文件 %s 已经存在,是否覆盖? ( Yes / [No] ): ', file_out ), 's' ) ;
if length( answer ) == 0
answer = 'no' ;
end
answer = lower( answer ) ;
if answer ~= 'y' | answer ~= 'yes'
disp( sprintf( '请使用另外的文件名,或备份已有的文件' ) ) ;
disp( sprintf( '程序终止' ) );
return ;
end
end
% 建立有限元模型并求解,保存结果
FemModel( file_in ) ; % 定义有限元模型
SolveModel ; % 求解有限元模型
SaveResults( file_out ) ; % 保存计算结果
% 计算结束
disp( sprintf( '荷载中心点竖直位移 %f m', full( gDelta(170,1) ) ) );
disp( sprintf( '计算正常结束,结果保存在文件 %s 中', file_out ) ) ;
return ;