• 其他栏目

    曲嘉

    • 教授      博士生导师      硕士生导师
    • 教师拼音名称:qujia
    • 所在单位:航天与建筑工程学院
    • 职务:科长
    • 学历:博士研究生毕业
    • 性别:男
    • 学位:工学博士学位
    • 在职信息:在职
    • 毕业院校:哈尔滨工程大学
    • 学科:力学

    访问量:

    开通时间:..

    最后更新时间:..

    率相关强度准则

    应变率相关强度准则计算程序MATLAB源代码(面向科研人员和学生免费开放)

    function h = ezimplot3(varargin)

    if ishandle(varargin{1})

    cax = varargin{1};

    axes(cax);

    args{:} = varargin{2:end};

    else

    args = varargin;

    end

    [fun domain n color] = argcheck(args{:});

    xm = linspace(domain(1),domain(2),n);

    ym = linspace(domain(3),domain(4),n);

    zm = linspace(domain(5),domain(6),n);

    [x,y,z] = meshgrid(xm,ym,zm);

    [f_handle f_text] = fix_fun(fun);

    try

    fvalues = f_handle(x,y,z);

    catch ME

    error('Ezimplot3:Functions', 'FUN must have no more than 3 arguments');

    end

    h = patch(isosurface(x,y,z,fvalues,0));

    isonormals(x,y,z,fvalues,h)

    set(h,'FaceColor',color,'EdgeColor','none');

    xlabel('x');ylabel('y');zlabel('z');

    alpha(0.7)

    grid on; view([1,1,1]); axis equal; camlight; lighting gouraud

    title([f_text,' = 0']);

    function [f dom n color] = argcheck(varargin)

    switch nargin

    case 0

    error('Ezimplot3:Arguments',...

    'At least "fun" argument must be given');

    case 1

    f = varargin{1};

    dom = [-2*pi, 2*pi];

    n = 60;

    color = 'red';

    case 2

    f = varargin{1};

    if isa(varargin{2},'double') && length(varargin{2})>1

    dom = varargin{2};

    n = 60;

    color = 'red';

    elseif isa(varargin{2},'double') && length(varargin{2})==1

    n = varargin{2};

    dom = [-2*pi, 2*pi];

    color = 'red';

    elseif isa(varargin{2},'char')

    dom = [-2*pi, 2*pi];

    n = 60;

    color = varargin{2};

    end

    case 3

    f = varargin{1};

    dom = varargin{2};

    n = varargin{3};

    color = 'red';

    case 4

    f = varargin{1};

    dom = varargin{2};

    n = varargin{3};

    color = varargin{4};

    otherwise

    warning('Ezimplot3:Arguments', ...

    'Attempt will be made only with the 4 first arguments');

    f = varargin{1};

    dom = varargin{2};

    n = varargin{3};

    color = varargin{4};

    end

    if length(dom) == 2

    dom = repmat(dom,1,3);

    elseif length(dom) ~= 6

    error('Ezimplot3:Arguments',...

    'Input argument "domain" must be a row vector of size 2 or size 6');

    end

    function [f_hand f_text] = fix_fun(fun)

    types = {'char','sym','function_handle','inline'};

    type = '';

    for i=1:size(types,2)

    if isa(fun,types{i})

    type = types{i};

    break;

    end

    end

    switch type