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

📄 efg1d.m

📁 一篇优秀的无网格伽辽金方法入门文章。这篇文章最好的地方在于——提供了matlab源码。方便大家了解和学习无网格的编程实现
💻 M
字号:
% ONE DIMENSIONAL EFG PROGRAM% SET UP NODAL COORDINATES ALONG BAR, DETERMINE NUMBER OF CELLSx = [0.0:.1:1.0];nnodes = length(x);ncells = nnodes-1;% SET PARAMETERS FOR WEIGHT FUNCTION, MATERIAL PROPERITESdmax = 2.0;E=1.0; area=1.0;% DETERMINE DMI FOR EACH NODEdm = dmax*(x(2)-x(1))*ones(1,nnodes);%SET UP GAUSS POINTS, WEIGHTS, AND JACOBIAN FOR EACH CELLgg = zeros(1,ncells);jac = (x(2)-x(1))/2;weight = 2;gg = -.05:.1:0.95; gg(1) = 0.0;% INITIALIZE MATRICESk = zeros(nnodes);f = zeros(nnodes,1);GG = zeros(nnodes,1);% LOOP OVER GAUSS POINTSfor j = 1:length(gg)    xg = gg(j);    % DETERMINE DISTANCE BETWEEN NODES AND GAUSS POINT    dif = xg*ones(1,nnodes)-x;;    % SET UP WEIGHTS W AND DW FOR EACH NODE    clear w dw    for i=1:nnodes        drdx = sign(dif(i))/dm(i);        r = abs(dif(i))/dm(i);        if r<=0.5            w(i) = (2/3) - 4*r*r + 4*r^3;            dw(i) = (-8*r + 12*r^2)*drdx;        elseif r<=1.0            w(i) = (4/3)-4*r+4*r*r -(4/3)*r^3;            dw(i) = (-4 + 8*r-4*r^2)*drdx;        elseif r>1.0            w(i) = 0.0;            dw(i) = 0.0;        end    end    %SET UP SHAPE FUNCTIONS AND DERIVATIVES    won = ones(1,nnodes);    p = [won;x];    B = p.*[w;w];    pp = zeros(2);    A = zeros(2);    dA = zeros(2);    for i=1:nnodes        pp = p(1:2,i)*p(1:2,i)';        A = A+w(1,i)*pp;        dA = dA+dw(1,i)*pp;    end    Ainv = inv(A);    pg = [1 xg];    phi = pg*Ainv*B;    db = p.*[dw;dw];    da = -Ainv*(dA*Ainv);    dphi = [0 1]*Ainv*B+pg*(da*B+Ainv*db);    %ASSEMBLE DISCRETE EQUATIONS    if j == 1        GG(1:3,1) = -phi(1:3)';    else if j>1            k = k+(weight*E*area*jac)*(dphi'*dphi);            fbody = area*xg;            f = f+(weight*fbody*jac)*phi';        end    endend% ENFORCE BOUNDARY CONDITIONS USING LAGRANGE MULTIPLIERSq = [0];m = [k GG;GG' zeros(1)];% SOLVE FOR NODAL PARAMETERSd = m\[f' q]';u = d(1:nnodes);

⌨️ 快捷键说明

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