首页/文章/ 详情

《有限元基础编程百科全书》更新:考虑剪切变形的Euler-Bernoulli梁单元

4天前浏览25

Euler-Bernoulli梁的假设中,忽略了剪切变形的影响,为了考虑该影响,单元类型可选取Timoshenko梁,也可以在Euler-Bernoulli梁假设的基础上进行修正。

《有限单元法—编程与软件应用》和《MATLAB有限元结构动力学分析与工程应用》均有提及考虑剪切变形的Euler-Bernoulli梁单元

考虑剪切变形后,    方向上的位移变为:

 

其中,    表示弯曲变形引起的位移,    表示剪切变形引起的位移。单元节点自由度可表示为:

 
 

由此得到弯曲部分的刚度矩阵和    和剪切部分的刚度矩阵    ,具体的推导过程可见上面提及的参考文献,写程序时只需要将已有的刚度矩阵写进程序里即可。

 
 

在上述描述中,每个节点有三个自由度:    、    、    ,实际计算中,利用单元的平衡方程和几何关系可以消去一个变量,得到两个独立变量:    、    的方程,此时再加入轴向刚度,最终的单元刚度矩阵可表示为:

 

其中,    ,    为剪应力不均匀系数,矩形截面梁    取0.85,圆形截面梁    取0.89,环形截面梁    取0.53,其他截面类型可参考Abaqus帮助文档相关参数设定。具体的单元程序可见MFEAOOP单元库中的B23M.m

这里贴上B23M.m的程序,仅供参考!

function k = B23M(prop, elemNodeCoordinate)
    % B23M - 剪切修正的平面 Euler-Bernoulli 梁单元(cubic beam)
    E = prop.E;  % 弹性模量
    v = prop.v;  % 泊松比
    
    Profile = prop.Profile; % 截面类型
     if strcmpi(Profile, 'Rectangular')
        % 矩形截面惯性矩计算
        b = prop.a;  % 宽度
        h = prop.b;  % 高度
        A = b * h;      % 截面面积
        I = (b * h^3) / 12;  % 关于 y 轴的惯性矩 (沿高度方向)
        kappa = 0.85;  % 截面剪切修正系数
    elseif strcmpi(Profile, 'Circular')
        % 圆形截面惯性矩计算
        r = prop.r;  % 半径
        A = pi * r^2;  % 截面面积
        I = (pi * r^4) / 4;  % 关于 y 轴的惯性矩 (与半径平方成比例)
        kappa = 0.89;  % 截面剪切修正系数
    elseif strcmpi(Profile, 'Pipe')
        % 环形截面惯性矩计算
        D = prop.D * 2;  % 外径
        d = prop.d * 2;  % 内径
        A = pi * (D^2 - d^2) / 4;  % 截面面积
        I = pi * (D^4 - d^4) / 64;  % 环形截面惯性矩
        kappa = 0.53;  % 截面剪切修正系数
    else
        error('Unknown section type. Please choose "Rectangular" or "Circular".');
    end

    % 计算杆单元长度
    x = elemNodeCoordinate(:, 1);
    y = elemNodeCoordinate(:, 2);
    L = sqrt((x(2) - x(1))^2 + (y(2) - y(1))^2);

    % 坐标变换矩阵
    l = (x(2) - x(1)) / L;
    m = (y(2) - y(1)) / L;
    R=[l m 0 0 0 0
      -m l 0 0 0 0
       0 0 1 0 0 0
       0 0 0 l m 0
       0 0 0 -m l 0
       0 0 0 0 0 1];

    G = E / (2 * (1 + v));
    b = (12 * E * I * kappa) / (G * A * L^2);
    % 计算局部刚度矩阵
    kLocal = [
        E * A / L,   0,                               0,                                  -E * A / L,    0,                                  0;
        0,           12 * E * I / ((1 + b) * L^3),    6 * E * I / ((1 + b) * L^2),         0,           -12 * E * I / ((1 + b) * L^3),       6 * E * I / ((1 + b) * L^2);
        0,           6 * E * I / ((1 + b) * L^2),     (4 + b) * E * I / ((1 + b) * L),     0,           -6 * E * I / ((1 + b) * L^2),        (2 - b) * E * I / ((1 + b) * L);
       -E * A / L,   0,                               0,                                   E * A / L,    0,                                  0;
        0,          -12 * E * I / ((1 + b) * L^3),   -6 * E * I / ((1 + b) * L^2),         0,            12 * E * I / ((1 + b) * L^3),       -6 * E * I / ((1 + b) * L^2);
        0,           6 * E * I / ((1 + b) * L^2),     (2 - b) * E * I / ((1 + b) * L),     0,            -6 * E * I / ((1 + b) * L^2),        (4 + b) * E * I / ((1 + b) * L)
    ]; 
    % 计算全局刚度矩阵
    k = R' * kLocal * R;
end



来源:易木木响叮当
AbaqusMATLAB
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-01-17
最近编辑:4天前
易木木响叮当
硕士 有限元爱好者
获赞 226粉丝 295文章 363课程 2
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈