📄 fem.m
字号:
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 + -