⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fem.m

📁 结构力学中的有限元例子,包含了7个分类文件夹
💻 M
📖 第 1 页 / 共 2 页
字号:
function varargout = fem(varargin)% FEM Application M-file for fem.fig%    FIG = FEM launch fem GUI.%    FEM('callback_name', ...) invoke the named callback.% =========================================================================% Anton Zaicenco <anton.z@softhome.net>, started: Dec 2004, updated May '06% =========================================================================if nargin == 0  % LAUNCH GUI	fig = openfig(mfilename,'reuse');	% Use system color scheme for figure:	set(fig,'Color',get(0,'defaultUicontrolBackgroundColor'));	% Generate a structure of handles to pass to callbacks, and store it. 	handles = guihandles(fig);	guidata(fig, handles);	if nargout > 0		varargout{1} = fig;	endelseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK	try		[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard	catch		disp(lasterr);	endendfunction varargout = loaddata_Callback(h, eventdata, handles, varargin)set(handles.text3,'ForegroundColor',[0 0 0]);set(handles.text4,'ForegroundColor',[0 0 0]);[nf,cf] = uigetfile('*.m',' Load input data ');if length(cf)>1 set(handles.text7,'string',[cf ' ' nf]); end;for i=1:length(nf)    if nf(i)~='.' AA(i)=nf(i); end;    if nf(i)=='.' break; end;end;if nf~=0    handles.filename = AA;    handles.in_data = eval (AA);     in_data = handles.in_data;    if  isfield(handles,'shownodes')        if handles.shownodes==1             plot_fem_data(in_data,1);        else plot_fem_data(in_data,0);        end    else plot_fem_data(in_data,0);    end;    format long;    set(handles.text3,'string',[ num2str(size(in_data.ND,1))]);    set(handles.text3,'ForegroundColor',[1 0 0]);    if in_data.EL(1,2)==0 | in_data.EL(1,2)==1 | in_data.EL(1,2)==2 % 2D-beam        dofN = 3; end;    if in_data.EL(1,2)==3  % 3D-beam  elements        dofN = 6; end;    if in_data.EL(1,2)==4 | in_data.EL(1,2)==5 % CST/CSQ  elements        dofN = 2; end;    if in_data.EL(1,2)==6 % "6" - 3D-BRICK element (8-nodes)        dofN = 3; end;    if in_data.EL(1,2)==9 % BCIZ elements        dofN = 3; end;    set(handles.text4,'string',[ num2str(dofN*size(in_data.ND,1))]);    set(handles.text4,'ForegroundColor',[1 0 0]);    format;endguidata(h, handles);% ------------------function varargout = visualize_Callback(h, eventdata, handles, varargin)if  isfield(handles,'run')    if  isfield(handles.run,'animate')        if  isfield(handles.run.animate,'ok')            if handles.run.animate.ok==1                in_data = handles.in_data;                if isfield(handles,'resp')                    resp = handles.resp;                end                animate_dyn_response (resp,in_data);  %handles.run.animate.ok=1;            end        end    endendguidata(h, handles);% --------------------------------------------------------------------function varargout = checkbox1_Callback(h, eventdata, handles, varargin)if (get(h,'Value') == get(h,'Max'))    handles.run.static=1;% then checkbox is checked-take approriate actionelse    handles.run.static=0;% checkbox is not checked-take approriate actionendguidata(h, handles);% Stub for Callback of the uicontrol handles.checkbox1.% disp('checkbox1 Callback not implemented yet.')% --------------------------------------------------------------------function varargout = checkbox2_Callback(h, eventdata, handles, varargin)if (get(h,'Value') == get(h,'Max'))    handles.run.dynamic=1;% then checkbox is checked-take approriate actionelse    handles.run.dynamic=0;% checkbox is not checked-take approriate actionendguidata(h, handles);% Stub for Callback of the uicontrol handles.checkbox2.% disp('checkbox2 Callback not implemented yet.')% --------------------------------------------------------------------function varargout = checkbox3_Callback(h, eventdata, handles, varargin)if (get(h,'Value') == get(h,'Max'))    handles.run.modal=1;% then checkbox is checked-take approriate actionelse    handles.run.modal=0;% checkbox is not checked-take approriate actionendguidata(h, handles);% Stub for Callback of the uicontrol handles.checkbox3.% disp('checkbox3 Callback not implemented yet.')% --------------------------------------------------------------------function varargout = pushbutton2_Callback(h, eventdata, handles, varargin)% "ta" type of analysis: [0/1 0/1 0/1]  static, dynamic, modalta = [0 0 0];if  isfield(handles,'run') | isfield(handles,'in_data')    if  isfield(handles.run,'static')         if handles.run.static==1            %disp('STATIC ANALYSIS SELECTED');            in_data = handles.in_data; ta(1) = 1;%            [handles.obj,handles.resp] = fem_run (in_data,ta);        end;    end    if  isfield(handles.run,'dynamic')         if handles.run.dynamic==1            %disp('DYNAMIC ANALYSIS SELECTED');            in_data = handles.in_data; ta(2) = 1;            % plot point at the main form ++++++++++++++++++++++++++            if isfield(handles.in_data.dynam,'TIMEHPL')            if length(in_data.dynam.TIMEHPL)~=0            if in_data.EL(1,2)==0 | in_data.EL(1,2)==1 | in_data.EL(1,2)==2 % 2D-beam                dofN = 3;                vr = ceil(in_data.dynam.TIMEHPL(1)/dofN);                node = find(in_data.ND(:,1)==vr); hold on;                plot(in_data.ND(node,2),in_data.ND(node,3),'b.','MarkerSize',14);                plot(in_data.ND(node,2),in_data.ND(node,3),'bo','MarkerSize',18);                labx = (max(in_data.ND(:,2)) / 13); laby = (max(in_data.ND(:,3)) / 13);                labx = min([labx laby]); laby = labx;                if in_data.dynam.TIMEHPL(1)-dofN*vr==0                     plot(in_data.ND(node,2),in_data.ND(node,3),'bs','MarkerSize',15);                end                if in_data.dynam.TIMEHPL(1)-dofN*vr==-1                     plot([in_data.ND(node,2) in_data.ND(node,2)], ...                        [in_data.ND(node,3)-laby  in_data.ND(node,3)+laby],'b-','LineWidth',2);                end                if in_data.dynam.TIMEHPL(1)-dofN*vr==-2                     plot([in_data.ND(node,2)-labx in_data.ND(node,2)+labx], ...                        [in_data.ND(node,3)  in_data.ND(node,3)],'b-','LineWidth',2);                end                pause(0.01); hold off;            end;            if in_data.EL(1,2)==3  % 3D-beam  elements                dofN = 6;                vr = ceil(in_data.dynam.TIMEHPL(1)/dofN);                node = find(in_data.ND(:,1)==vr); hold on;                plot3(in_data.ND(node,2),in_data.ND(node,3),in_data.ND(node,4),'b.','MarkerSize',14);                plot3(in_data.ND(node,2),in_data.ND(node,3),in_data.ND(node,4),'bo','MarkerSize',18);

⌨️ 快捷键说明

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