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

📄 fem.m

📁 FEM tools for caculation of nonlinear problems
💻 M
字号:
function varargout = fem(varargin)
% FEM Application M-file for fem.fig
%    FIG = FEM launch fem GUI.
%    FEM('callback_name', ...) invoke the named callback.

% =========================================================================
% FEM analysis toolbox for solid mechanics. Project started: Aug 2004
% Anton Zaicenco <a.zaicenco@codedevelopment.net>
% =========================================================================

% -------------------------------------------------------------------------

if nargin == 0  % LAUNCH GUI
    % Generate a structure of handles to pass to callbacks, and store it
	fig = openfig(mfilename,'reuse');
	handles = guihandles(fig);
	guidata(fig, handles);
	if nargout > 0
		varargout{1} = fig;
	end
elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK
	try
		[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard
	catch
		disp(lasterr);
	end
end


% -------------------------------------------------------------------------
function varargout = loaddata_Callback(h, eventdata, handles, varargin)

dPath = which ('inpfiles.txt'); % path to data directory
cd (dPath(1:end-12));           %    smth like: D:\matlabR12\work\fem\input
!time /t > inpfiles.txt

set(handles.text3, 'ForegroundColor',[0 0 0]);
set(handles.text4, 'ForegroundColor',[0 0 0]);
set(handles.text12,'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]);
    set(handles.text12,'string',[ num2str(size(in_data.EL,1))]);
    set(handles.text12,'ForegroundColor',[1 0 0]);

    % handles.obj.dofN -- dof per node. handles.obj.type - EL type (5 char)
    [dofN,EL_TYPE] = type_of_elem (in_data);
    switch EL_TYPE
        case {0,1,2}
            handles.in_data.dofN = dofN; handles.in_data.type = '2dbeam';
        case {31}
            handles.in_data.dofN = dofN; handles.in_data.type = '3dtrus';
        case {3}
            handles.in_data.dofN = dofN; handles.in_data.type = '3dbeam';
        case {4,5,51}
            handles.in_data.dofN = dofN; handles.in_data.type = 'cstcsq';
        case {6}
            handles.in_data.dofN = dofN; handles.in_data.type = '3dbrik';
        case {9}
            handles.in_data.dofN = dofN; handles.in_data.type = 'bciz  ';
        case {10}
            handles.in_data.dofN = dofN; handles.in_data.type = 'tetrah';
    end

    set(handles.text4,'string',[ num2str(dofN*size(in_data.ND,1))]);
    set(handles.text4,'ForegroundColor',[1 0 0]);
    format;
end
guidata(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
                %handles.run.animate.ok=1;
                animate_dyn_response (resp,in_data);
            end
        end
    end
end

guidata(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 action
    handles.ta(1)=1;
else
    handles.run.static=0;% checkbox is not checked-take approriate action
    handles.ta(1)=0;
end
guidata(h, handles);


% --------------------------------------------------------------------
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 action
    handles.ta(2)=1;
else
    handles.run.dynamic=0;% checkbox is not checked-take approriate action
    handles.ta(2)=0;
end
guidata(h, handles);


% --------------------------------------------------------------------
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 action
    handles.ta(3)=1;
else
    handles.run.modal=0;% checkbox is not checked-take approriate action
    handles.ta(3)=0;
end
guidata(h, handles);


% --------------------------------------------------------------------
function varargout = pushbutton2_Callback(h, eventdata, handles, varargin)
handles.ta = [0 0 0];
if  isfield(handles,'run') & isfield(handles,'in_data')
    if  isfield(handles.run,'static') 
        if handles.run.static==1
            in_data = handles.in_data; handles.ta(1) = 1; showPS=0;
            if  isfield(handles,'show')
                if handles.show.PS==1 showPS=1; end; %show principal stress
                if handles.show.PS==0 showPS=0; end; %don't show
            end
        end;
    end
    if  isfield(handles.run,'dynamic') 
        if handles.run.dynamic==1
            handles.ta(2) = 1; showPS = 1;
            dofN = handles.in_data.dofN;
            % plot point in blue at the main form:
            pax = gca;
            main_form_data_plot (handles,handles.in_data,pax,1);
            handles.run.animate.ok=1;
        end
    end
    if  isfield(handles.run,'modal') 
        if handles.run.modal==1  handles.ta(3) = 1; showPS = 1;  end;
    end
    if length(find(handles.ta==1))>0  
        [handles.obj,handles.resp] = ...
            fem_run (handles.in_data,handles.ta,handles.obj,handles.L,handles.break_K,showPS);
    end
end;         
guidata(h, handles);

% --------------------------------------------------------------------
function varargout = pushbutton1_ButtondownFcn(h, eventdata, handles, varargin)
% Stub for ButtondownFcn of the uicontrol handles.pushbutton1.
%disp('pushbutton1 ButtondownFcn not implemented yet.')


% --------------------------------------------------------------------
function varargout = checkbox1_ButtondownFcn(h, eventdata, handles, varargin)
% Stub for ButtondownFcn of the uicontrol handles.checkbox1.
%disp('checkbox1 ButtondownFcn not implemented yet.')


% --------------------------------------------------------------------
function varargout = radiobutton2_Callback(h, eventdata, handles, varargin)
% Stub for Callback of the uicontrol handles.radiobutton2.
%disp('radiobutton2 Callback not implemented yet.')

% --------------------------------------------------------------------
function varargout = radiobutton3_Callback(h, eventdata, handles, varargin)
% Stub for Callback of the uicontrol handles.radiobutton3.
%disp('radiobutton3 Callback not implemented yet.')

% --------------------------------------------------------------------
function varargout = pushbutton2_ButtondownFcn(h, eventdata, handles, varargin)
% Stub for ButtondownFcn of the uicontrol handles.pushbutton2.
%disp('pushbutton2 ButtondownFcn not implemented yet.')

% --------------------------------------------------------------------
% "EXIT" button:
function varargout = pushbutton5_Callback(h, eventdata, handles, varargin)
if isfield(handles,'figure1') & ishandle(handles.figure1),
    close(handles.figure1);
end
% Stub for Callback of the uicontrol handles.pushbutton5.
sp_=sprintf('\n');
disp([sp_ '  Thank you for using FEM toolbox' sp_])

% --------------------------------------------------------------------
function varargout = edit1_Callback(h, eventdata, handles, varargin)
% Stub for Callback of the uicontrol handles.edit1.
%disp('edit1 Callback not implemented yet.')

% --------------------------------------------------------------------
function varargout = text3_Callback(h, eventdata, handles, varargin)
% Stub for Callback of the uicontrol handles.text3.
%disp('text3 Callback not implemented yet.')


% --------------------------------------------------------------------
function varargout = pushbutton6_Callback(h, eventdata, handles, varargin)
handles.run.rsm=1;
rsm_simul (handles);
guidata(h, handles);
% Stub for Callback of the uicontrol handles.pushbutton6.


% --------------------------------------------------------------------
function varargout = pushbutton7_Callback(h, eventdata, handles, varargin)
rsm_pdf(handles);
guidata(h, handles);
% Stub for Callback of the uicontrol handles.pushbutton7.
% disp('pushbutton7 Callback not implemented yet.')


% --------------------------------------------------------------------
% "Show nodes" checkbox:
function varargout = checkbox8_Callback(h, eventdata, handles, varargin)
if (get(h,'Value') == get(h,'Max'))
    handles.shownodes=1;
else
    handles.shownodes=0;
end
guidata(h, handles);
% Stub for Callback of the uicontrol handles.checkbox8.



% --------------------------------------------------------------------
% "SAVE TO OBJ EPS" button:
function varargout = pushbutton8_Callback(h, eventdata, handles, varargin)
saveOBJECTeps; 
% Stub for Callback of the uicontrol handles.pushbutton8.



% --------------------------------------------------------------------
% "PS" checkbox:
function varargout = checkbox9_Callback(h, eventdata, handles, varargin)
if (get(h,'Value') == get(h,'Max'))
    handles.show.PS=1;
else
    handles.show.PS=0;
end
guidata(h, handles);
% Stub for Callback of the uicontrol handles.checkbox9.
% disp('checkbox9 Callback not implemented yet.')


% --------------------------------------------------------------------
function varargout = figure1_CreateFcn(h, eventdata, handles, varargin)
% Stub for CreateFcn of the figure handles.figure1.
% disp('figure1 CreateFcn not implemented yet.')


% --------------------------------------------------------------------
function varargout = pushbutton9_Callback(h, eventdata, handles, varargin)
handles.run.ssfem=1;
ssfem_simul (handles);
guidata(h, handles);
% Stub for Callback of the uicontrol handles.pushbutton9.
%disp('pushbutton9 Callback not implemented yet.')


% --------------------------------------------------------------------
function varargout = pushbutton10_Callback(h, eventdata, handles, varargin)
% Stub for Callback of the uicontrol handles.pushbutton10.
% disp('pushbutton10 Callback not implemented yet.')



function slider2_ButtonDownFcn(hObject, eventdata, handles)
% hObject    handle to slider2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)


% --- Executes on button press in pushbutton11.
function pushbutton11_Callback(hObject, eventdata, handles)
if  isfield(handles,'filename')
    if length(handles.filename)>0
     %  [handles.obj,handles.resp] = fem_run (handles.in_data,handles.ta);
       type_analysis = [1 1 1];
       [handles.obj,handles.L,handles.break_K] = build_object_KM (handles.in_data,type_analysis);
        guidata(hObject, handles);
    end
end

% hObject    handle to pushbutton11 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB


⌨️ 快捷键说明

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