MATLAB有限元应用-四边形八节点梁受力弯曲

MATLAB在处理平面有限元问题和梁弯曲问题上有很强的能力,主要体现在以下几个方面:

建模与网格划分

MATLAB内置了方便的图形界面工具(pdetoolbox等),可以快速对几何模型进行二维三维网格划分,生成有限元分析需要的网格。

求解器

MATLAB内置了多种求解偏微分方程的有限元求解器,如:适用于线性和非线性问题的有限元求解器assembler,适用于时间依赖问题的时间自适应求解器timestepper等。这些求解器可以自动组装刚度矩阵并求解。

后处理

MATLAB支持多种后处理,可以方便的进行解的可视化,绘制云图、矢量图、剪切面;也可以计算量化解的误差与收敛性,绘制相关曲线。

应用程序接口

MATLAB提供了应用程序接口,允许自定义复杂几何模型,加载网格,实现自定义的有限元运算与后处理。

梁弯曲分析

对于梁的弯曲问题,MATLAB提供了专门的梁挠度计算与绘制工具beamCrippling,可以快速获得梁的弯矩与切力图,并自动检查其强度。

总的来说,利用MATLAB强大的工具箱与API,可以高效的对平面及梁挠问题进行预处理、求解与后处理,得到定量结果及直观的可视化。

主程序:

%% ---------------四边形八节点等参元 matlab计算程序----------------------------

clear all;clc; close all;

format short e ;

%%读入控制数据

E=1E5;                  %弹性模量

v=0.25;                  % 泊松比

h=1;                  %厚度

NumberElement=4;              %单元数

NumberNode=23;              % 总结点数

ElementNode=8;              %单元节点数

ForcePoint=1;             %受力结点数

NumberConstraint=3;              %约束结点个数

%% 节点坐标 x  y

% 结点号 x,y坐标(整体坐标下)

gNdt = [0.0000000e+000  -0.5000000e+000;

    1.0000000e+000  -0.5000000e+000;

    2.0000000e+000  -0.5000000e+000;

    3.0000000e+000  -0.5000000e+000;

    4.0000000e+000  -0.5000000e+000;

    5.0000000e+000  -0.5000000e+000;

    6.0000000e+000  -0.5000000e+000;

    7.0000000e+000  -0.5000000e+000;

    8.0000000e+000  -0.5000000e+000;

    0.0000000e+000  0.0000000e+000;

    2.0000000e+000  0.0000000e+000;

    4.0000000e+000  0.0000000e+000;

    6.0000000e+000  0.0000000e+000;

    8.0000000e+000  0.0000000e+000;

    0.0000000e+000  0.5000000e+000;

    1.0000000e+000  0.5000000e+000;

    2.0000000e+000  0.5000000e+000;

    3.0000000e+000  0.5000000e+000;

    4.0000000e+000  0.5000000e+000;

    5.0000000e+000  0.5000000e+000;

    6.0000000e+000  0.5000000e+000;

    7.0000000e+000  0.5000000e+000;

    8.0000000e+000  0.5000000e+000];

%% 单元节点

gElt = [1  2   3  11  17  16  15  10;

    3  4   5  12  19  18  17  11;

    5  6   7  13  21  20  19  12;

    7  8   9  14  23  22  21  13]; % 单元定义: 单元结点号(逆时针)

FPOIN=[9 0 -1];% 节点力:结点号、X方向力(向右正),Y方向力(向上正)

FIXED=[1 1 1;

    10 1 1;

    15 1 1];

%约束信息数组(n,3) n:受约束节点数目, (n,1):约束点号

%(n,2)与(n,3)分别为约束点x方向和y方向的约束情况,受约束为1否则为0

%========平面应力问题的求解==============

%  刚度矩阵的生成

%计算刚度矩阵,并对约束条件进行处理

Ke=zeros(2*ElementNode,2*ElementNode);   % 单元刚度矩阵并清零

HK=zeros(2*NumberNode,2*NumberNode);   % 总刚矩阵并清零

%调用子程序 生成单元刚度矩阵

for m=1:NumberElement                %m为单元号

    Ke=K(E,v,h,...

        gNdt(gElt(m,1),1),gNdt(gElt(m,1),2),...

        gNdt(gElt(m,3),1),gNdt(gElt(m,3),2),...

        gNdt(gElt(m,5),1),gNdt(gElt(m,5),2),...

        gNdt(gElt(m,7),1),gNdt(gElt(m,7),2));    %调用单元刚度矩阵

   

    a=gElt(m,:);   %临时向量,用来记录当前单元的节点编号

   

    % 对总刚度矩阵的处理

    for j=1:8

        for k=1:8

            HK((a(j)*2-1):a(j)*2,(a(k)*2-1):a(k)*2)=HK((a(j)*2-1):a(j)*2,(a(k)*2-1):a(k)*2)+...

                Ke(j*2-1:j*2,k*2-1:k*2);

        end

    end

end

%—————————————————————————————————

% 对荷载向量进行处理

FORCE=zeros(2*NumberNode,1);      % 张成总荷载向量并清零

for i=1:ForcePoint

    b1=FPOIN(i,1)*2-1;b2=FPOIN(i,1)*2;     %FPION(i,1)为作用点

    FORCE(b1)=FPOIN(i,2);                 %FPION(i,2)为x方向的节点力

    FORCE(b2)=FPOIN(i,3);                 %FPION(i,3)为y方向的节点力

end

%—————————————————————————————————

%将约束信息加入总刚,总荷载

for i=1:NumberConstraint

    if FIXED(i,2)==1

        c1=2*FIXED(i,1)-1;

        HK(c1,:)=0;      %将一约束序号处的总刚列向量清0

        HK(:,c1)=0;      %将一约束序号处的总刚行向量清0

        HK(c1,c1)=1;     %将行列交叉处的元素置为1

        FORCE(c1)=0;

    end

    if FIXED(i,3)==1

        c2=2*FIXED(i,1);

        HK(c2,:)=0;

        HK(:,c2)=0;

        HK(c2,c2)=1;

        FORCE(c2)=0;

    end

end

%—————————————————————————————————

HK

Displacement=HK\FORCE;%计算节点位移向量

%% 转换

Displacement2=reshape(Displacement,2,length(Displacement)/2)';

gNdt2=gNdt+Displacement2*100;

figure;

gNdt;

for i=1:size(gElt,1)

    for j=1:8

        %画点

        plot(gNdt(gElt(i,:),1),gNdt(gElt(i,:),2),'b-');

        hold on;

        %画线

        plot(gNdt2(gElt(i,:),1),gNdt2(gElt(i,:),2),'r-');

        hold on;

    end

end

axis equal;

xlabel('x(m)');

ylabel('y(m)');

title('八节点四边形等参单元:梁位移(放大100倍)');

%———————————求解单元应力————————————————

stress=zeros(3,NumberElement);

for m=1:NumberElement

    u(1:16)=0;

    d=gElt(m,:);    %临时向量,用来记录当前单元的节点编号

    for i=1:ElementNode

        u(i*2-1:i*2)=Displacement(d(i)*2-1:d(i)*2);

        %从总位移向量中取出当前单元的节点位移

    end

    D=(E/(1-v*v))*[1 v 0;v 1 0;0 0 (1-v)/2];%弹性矩阵

    %形成应变矩阵BM

    BM=zeros(3,16);

    for i=1:ElementNode

        J=Jacobi(gNdt(gElt(m,1),1),gNdt(gElt(m,1),2),...

            gNdt(gElt(m,3),1),gNdt(gElt(m,3),2),...

            gNdt(gElt(m,5),1),gNdt(gElt(m,5),2),...

            gNdt(gElt(m,7),1),gNdt(gElt(m,7),2),0,0);

        [N_s,N_t]=DHS(0,0);

        B1i=J(2,2)*N_s(i)-J(1,2)*N_t(i);

        B2i=-J(2,1)*N_s(i)+J(1,1)*N_t(i);

        BM(1:3,2*i-1:2*i)=[B1i 0;0 B2i;B2i B1i]/det(J);

    end

    stressm=D*BM*u';

    stress(:,m)=stressm;

end

stress      %输出应力

程序结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/443340.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YoloV8改进策略:IoU改进|Iou Loss最新实践|高效涨点|完整论文翻译

摘要 涨点效果:在我自己的数据集上,mAP50 由0.986涨到了0.99,mAP50-95由0.737涨到0.753,涨点明显! 目标检测是计算机视觉的基本任务之一,旨在识别图像中的目标并定位其位置。目标检测算法可分为基于锚点和无锚点的方法。基于锚点的方法包括Faster R-CNN、YOLO系列、SS…

汽车标定技术(十七)--Bypass的前世今生

目录 1.Bypass的诞生 2.Bypass的发扬光大 2.1 基于XCP的Bypassing 2.2 基于Debug的Bypass 2.3 小结 3.Bypass的实际应用 1.Bypass的诞生 下图我相信只要用过INCA的朋友都非常熟悉。 这是远古时期(2000年左右?我猜)ETAS针对发动机控制参数标定设计的一种并行数据…

深度强化学习(王树森)笔记10

深度强化学习(DRL) 本文是学习笔记,如有侵权,请联系删除。本文在ChatGPT辅助下完成。 参考链接 Deep Reinforcement Learning官方链接:https://github.com/wangshusen/DRL 源代码链接:https://github.c…

十分钟快速上手Spring Boot与微信小程序API接口的调用,快速开发小程序后端服务

1.1 微信小程序API接口介绍 微信小程序API接口是连接小程序前端与后端服务器的桥梁,它提供了丰富的功能接口,包括用户信息、支付、模板消息、数据存储等。这些API接口能够满足开发者在小程序中实现各种复杂业务逻辑的需求。 用户信息接口 用户信息接口…

Java强训day13(选择题编程题)

选择题 编程题 题目1 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);String s sc.nextLine();char[] c s.toCharArray();int i 0;int t 0;while (i < c.length) {if (c[i] ! \") {…

快速美化上百张图片,就是这么简单

你是否曾经遇到过需要批量处理大量图片的情况&#xff1f;比如调整图片大小、裁剪、美化等等。如果你还在一张张地处理&#xff0c;那么你一定需要一款强大的工具来帮助你完成这个任务。今天&#xff0c;我将向你介绍一款名为"固乔智创助手软件"的工具&#xff0c;它…

一文读懂国内外开源大模型特性及发展

一文读懂国内外开源大模型特性及发展。 在 2023 年&#xff0c;大型语言模型&#xff08;Large Language Models&#xff0c;简称 LLMs&#xff09;受到了公众的广泛关注&#xff0c;许多人对这些模型的本质及其功能有了基本的了解。是否开源的议题同样引起了广泛的讨论。在 Hu…

万户 ezOFFICE wpsservlet SQL注入漏洞复现

0x01 产品简介 万户OA ezoffice是万户网络协同办公产品多年来一直将主要精力致力于中高端市场的一款OA协同办公软件产品,统一的基础管理平台,实现用户数据统一管理、权限统一分配、身份统一认证。统一规划门户网站群和协同办公平台,将外网信息维护、客户服务、互动交流和日…

计算机网络-调度算法-2(时间片轮转 优先级调度算法 多级反馈队列调度算法 多级队列调度算法)

文章目录 总览时间片轮转时间片大小为2时间片大小为5若按照先来先服务算法 优先级调度算法例题&#xff08; 非抢占式优先级调度算法&#xff09;例题&#xff08; 抢占式优先级调度算法&#xff09;补充 思考多级反馈队列调度算法例题 小结多级队列调度算法 总览 时间片轮转 …

【C++进阶08】哈希的应用(位图and布隆过滤器)

一、位图 1.1 位图的概念 面试题 给40亿个不重复的无符号整数&#xff0c;没排过序 给一个无符号整数&#xff0c;如何快速判断一个数是否在 这40亿个数中。【腾讯】 能想到的解决思路&#xff1a; 遍历&#xff0c;时间复杂度O(N)排序(O(NlogN)) 利用二分查找: logN放到哈…

ChatGPTAI聊天机器人新功能推出后,更加智能和便捷的同时又曝出安全问题变得犯二?

OpenAI的AI聊天机器人ChatGPT前段时间推出的新功能&#xff0c;付费用户现在可以通过输入“”并从列表中选择自定义GPT&#xff0c;将自定义GPT引入对话中。这个功能的推出&#xff0c;让GPT能够了解完整的对话上下文&#xff0c;并且能够根据不同的用例和需求“标记”不同的自…

探索ESP32 C++ OOP开发:与传统面向过程编程的比较

探索ESP32 OOP开发&#xff1a;与传统面向过程编程的比较 在嵌入式系统开发中&#xff0c;ESP32是一个强大的平台&#xff0c;可以应用于各种项目和应用场景。在编写ESP32代码时&#xff0c;我们可以选择使用面向对象编程&#xff08;OOP&#xff09;的方法&#xff0c;将代码…