MATLAB和Python网格桁架框架构件刚度载荷位移和受力微分方程

🎯要点

  1. 数学​方法​:🎯一维线性边界值问题:🖊高斯求积法则 | 🖊洛巴托求积法则 | 🖊矩阵插值和微分计算 | 🖊在细化网格上生成值。🎯二维边界值问题:构建二维网格:🖊生成几何边界 | 🖊生成扩展转置连接矩阵 | 🖊生成互补网格 | 🖊绘制标记网格图和互补标记网格 | 🖊从定义几何尺寸生成网格求解:使用逐元素策略、部分(或全部)矢量化方法或稀疏矩阵的坐标形式解刚度矩阵,使用全部矢量化方法解全局力矢量,计算方程系数,计算狄利克雷边界条件,解有限元矩阵和偏微分方程。
  2. 构件分析方法​:🎯矩阵分析:🖊平面桁架位移和形变状态:提取结构的刚度矩阵,绘制变形形状,节点位移后,计算杆件的内力和桁架 | 🖊 空间桁架位移和形变状态:提取结构的刚度矩阵,计算节点载荷下 | 🖊平面框架位移和形变状态:提取局部刚度矩阵和旋转矩阵,计算出内力,计算钢框架承载下 | 🖊空间框架位移和形变状态:提取结构刚度矩阵,绘制变形形状,计算钢框架承载下,计算承受横向载荷和力矩的空间钢框架 | 🖊网格结构位移和形变:提取结构刚度矩阵,绘制形变形状,计算承受集中力矩和点载荷,计算钢具有相同的圆形横截面网架结构承受两个集中力矩 | 🖊构件载荷位移和形变:承受集中和均匀荷载的钢网架结构 | 🖊支撑沉降平面框架位移:外力影响下形变 | 🖊温度因素产生的构件位移:构件的拉伸或压缩的应力 | 🖊非标件框架位移:提取结构的刚度矩阵,计算给定载荷下 | 🖊释放构件位移:节点载荷情况下 | 🖊弹性支撑构件位移:均匀分布载荷的节点。🎯线性弹性分析:🖊双节点和三节点桁架:计算刚度矩阵 | 🖊弹簧和不同横截面的一维结构:计算外力条件下的位移,计算节点载荷下位移和法向应力 | 🖊平面桁架:计算外力下的形变 | 🖊网格二维结构:计算平面应力、平面应变和轴对称单元的刚度矩阵,计算节点力矢量,绘制形变 | 🖊平面应力计算情景:受拉伸表面载荷作用下,均匀弯曲和表面牵引载荷作用下,平面应变结构,轴对称结构。🎯弹塑性分析 | 🎯有限变形和超弹性 | 🎯有限应变。

🍇Python平面应力下变形位移求解器

考虑长度为 50 毫米、宽度为 10 毫米、厚度为 1 毫米的条带。使用 200 N 的力,该条带在垂直的平面应变张力下变形。条带的底部保持固定。带材的弹性特性为E=100MPa,ν=0.48。

在此,我使用线性弹性方程:
σ i j = 2 μ ε i j + λ ε k k δ i j \sigma_{i j}=2 \mu \varepsilon_{i j}+\lambda \varepsilon_{k k} \delta_{i j} σij=2μεij+λεkkδij
拉梅常数可以根据已知的弹性性质来确定。通过分配平面应变并假设 1 方向的自由位移,我可以执行快速计算,得出:最大顶部位移 = 8 毫米。

import numpy as np
import math
from matplotlib import pyplot as plt
def shape(xi):x,y = tuple(xi)N = [(1.0-x)*(1.0-y), (1.0+x)*(1.0-y), (1.0+x)*(1.0+y), (1.0-x)*(1.0+y)]return 0.25*np.array(N)print('create mesh')mesh_ex = 9
mesh_ey = 49
mesh_lx = 10.0
mesh_ly = 50.0
# derived
mesh_nx      = mesh_ex + 1
mesh_ny      = mesh_ey + 1
num_nodes    = mesh_nx * mesh_ny
num_elements = mesh_ex * mesh_ey
mesh_hx      = mesh_lx / mesh_ex
mesh_hy      = mesh_ly / mesh_ey
nodes = []
for y in np.linspace(0.0, mesh_ly, mesh_ny):for x in np.linspace(0.0, mesh_lx, mesh_nx):nodes.append([x,y])
nodes = np.array(nodes)
conn = []
for j in range(mesh_ey):for i in range(mesh_ex):n0 = i + j*mesh_nxconn.append([n0, n0 + 1, n0 + 1 + mesh_nx, n0 + mesh_nx])print ('material model - plane strain')
E = 100.0
v = 0.48
C = E/(1.0+v)/(1.0-2.0*v) * np.array([[1.0-v,     v,     0.0],[    v, 1.0-v,     0.0],[  0.0,   0.0,   0.5-v]])print('create global stiffness matrix')
K = np.zeros((2*num_nodes, 2*num_nodes))
q4 = [[x/math.sqrt(3.0),y/math.sqrt(3.0)] for y in [-1.0,1.0] for x in [-1.0,1.0]]
B = np.zeros((3,8))
for c in conn:xIe = nodes[c,:]Ke = np.zeros((8,8))for q in q4:dN = gradshape(q)J  = np.dot(dN, xIe).TdN = np.dot(np.linalg.inv(J), dN)B[0,0::2] = dN[0,:]B[1,1::2] = dN[1,:]B[2,0::2] = dN[1,:]B[2,1::2] = dN[0,:]Ke += np.dot(np.dot(B.T,C),B) * np.linalg.det(J)for i,I in enumerate(c):for j,J in enumerate(c):K[2*I,2*J]     += Ke[2*i,2*j]K[2*I+1,2*J]   += Ke[2*i+1,2*j]K[2*I+1,2*J+1] += Ke[2*i+1,2*j+1]K[2*I,2*J+1]   += Ke[2*i,2*j+1]print('assign nodal forces and boundary conditions')
f = np.zeros((2*num_nodes))
for i in range(num_nodes):if nodes[i,1] == 0.0:K[2*i,:]     = 0.0K[2*i+1,:]   = 0.0K[2*i,2*i]   = 1.0K[2*i+1,2*i+1] = 1.0if nodes[i,1] == mesh_ly:x = nodes[i,0]f[2*i+1] = 20.0if x == 0.0 or x == mesh_lx:f[2*i+1] *= 0.5print('solving linear system')
u = np.linalg.solve(K, f)
print('max u=', max(u))
print('plotting displacement')
ux = np.reshape(u[0::2], (mesh_ny,mesh_nx))
uy = np.reshape(u[1::2], (mesh_ny,mesh_nx))
xvec = []
yvec = []
res  = []
for i in range(mesh_nx):for j in range(mesh_ny):xvec.append(i*mesh_hx + ux[j,i])yvec.append(j*mesh_hy + uy[j,i])res.append(uy[j,i])
t = plt.tricontourf(xvec, yvec, res, levels=14, cmap=plt.cm.jet)
plt.scatter(xvec, yvec, marker='o', c='b', s=2)
plt.grid()
plt.colorbar(t)
plt.axis('equal')
plt.show()

下图显示了运行 Python 代码的结果,最大位移为6.75 mm,与上面的近似计算结果一致。

参阅一:计算思维

参阅二:亚图跨际

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

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

相关文章

Linux--IIC驱动编程实验

对于 I2C 主机驱动,一旦编写完成就不需要再做修改,其他的 I2C 设备直接调用主机驱动提供的 API 函数完成读写操作即可。这个正好符合 Linux 的驱动分离与分层的思想,因此 Linux内核也将 I2C 驱动分为两部分: ①、 I2C 总…

虚拟化之---virtio通信

一、理解virtio的背景 我们知道虚拟化hypervisor大的类型分为两种,全虚拟化和半虚拟化。 在全虚拟化的解决方案中,guest VM 要使用底层 host 资源,需要 Hypervisor 来截获所有的请求指令,然后模拟出这些指令的行为,这样…

Java毕设之学院党员管理系统的设计与实现

运行环境 环境说明: 开发语言:java 框架:springboot,vue JDK版本:JDK1.8 数据库:mysql5.7(推荐5.7,8.0也可以) 数据库工具:Navicat11 开发软件:idea/eclipse(推荐idea) Maven包:Maven3.3.9 系统实现 管理员功能实现 党员管理 管理员进入指定功能操作…

算法学习:二分查找

🔥 引言 在现代计算机科学与软件工程的实践中,高效数据检索是众多应用程序的核心需求之一。二分查找算法,作为解决有序序列查询问题的高效策略,凭借其对数时间复杂度的优越性能,占据着算法领域里举足轻重的地位。本篇内…

如何使用resource-counter统计跨Amazon区域的不同类型资源数量

关于resource-counter resource-counter是一款功能强大的命令行工具,该工具基于纯Python 3开发,可以帮助广大研究人员跨Amazon区域统计不同类型资源的数量。 该工具在统计完不同区域的各类资源数量后,可以在命令行中输出并显示统计结果。res…

【driver5】调用堆栈函数,printk,动态打印,ftrace,proc,sysfs

文章目录 1.内核函数调用堆栈:4个函数2.printk:cat /proc/cmdline查看consolettyS03.动态打印:printk是全局的且只能设打印等级,动态打印可控制选择模块的打印,在内核配置打开CONFIG_DYNAMIC_DEBUG4.ftrace&#xff1a…

贪吃蛇项目(小白保姆级教程)

游戏介绍 游戏背景: 贪吃蛇游戏是经典的游戏项目之一,也是很简单的小游戏 实现背景: 这里我们是基于32位的Win32_API进行实现的 需要的知识点: C语言函数、枚举、结构体、动态内存管理、预处理指令、链表、Win32_API等 适合人群&a…

通过packageKit完成的系统更新(一)

最近在学习packagekit,学习是如何进行的系统更新,本系列主要讲述,如何使用packageKit接口实现系统更新。 1. 导入依赖 在使用packageKit 之前需要导入一些依赖和安装一些包,不然会报错,以下以报错信息讲解:…

分布式光伏管理系统和一般的光伏管理系统相比有什么区别?

随着全球对可再生能源的关注度日益提高,光伏技术作为其中的佼佼者,已经得到了广泛的应用。在光伏技术中,管理系统扮演着至关重要的角色,它关乎着光伏电站的运行效率、能源产出以及运维成本等多个方面。其中,分布式光伏…

搜索算法系列之四(斐波那契)

以下算法被验证过,如有什么问题或有补充的欢迎留言。 前言 斐波那契数列,又称黄金分割数列,是由意大利数学家(Leonardo Fibonacci)在1202年提出的。这个数列的递推关系是F(0)1,F(1)1,F(n)F(n-…

【数据库】docker搭建mysql8一主两从节点,配置proxysql读写分离

docker搭建mysql8一主两从节点,配置proxysql读写分离 一、docker 搭建 mysql8 一主两从节点1.1 相关配置文件与docker启动1.2 半同步复制1.3 主从同步异常处理 二、mysql 中间件 ProxySql 配置读写分离2.1 在mysql服务里创建给proxySQL访问的用户2.2 安装ProxySql及…

测试用例执行的结果pass_fail_block_skip

pass fail block skip 测试用例的执行结果通常包括以下几个方面: 1. **测试结果状态**:通常分为“通过”、“失败”、“阻塞”和“跳过”等状态。 - **通过**:测试用例执行完毕,预期结果与实际结果一致。 - **失败**&am…

【MySQL】——用户和权限管理(二)

💻博主现有专栏: C51单片机(STC89C516),c语言,c,离散数学,算法设计与分析,数据结构,Python,Java基础,MySQL,linux&#xf…

大模型争霸的下一站:不仅是超越GPT-4,更是寻求模型之间的平衡应用

文 | 智能相对论 作者 | 沈浪 知名科学杂志《Nature》发表了一篇关于大模型规模参数大小争议的文章《In Al, is bigger always better?》——AI大模型,越大越好吗?随着大模型应用走向实践,这一问题不可避免地成为了当前AI行业发展的焦点与…

OpenGL 入门(二)—— 渲染摄像头采集的预览画面

本篇主要内容: 将摄像头采集到的图像通过 OpenGL 绘制到屏幕上FBO 离屏渲染 在开始上述流程前,我们有必要对 SurfaceTexture 做一个简单了解,因为 OpenGL 需要通过它获取要绘制的图像。 1、认识 SurfaceTexture SurfaceTexture 是 Androi…

Go Energy GUI框架 cli 使用

energy cli 简单介绍与使用 Go ENERGY 命令行工具 简介 版本: energy v 命令参数 energy [options] 参数名说明install环境安装init应用初始化build编译&构建应用package制作应用安装包version查看所有已发行版本env查看开发环境变量setenv设置开发环境变量v查看当前c…

(论文阅读-优化器)Selectivity Estimation using Probabilistic Models

目录 摘要 一、简介 二、单表估计 2.1 条件独立Condition Independence 2.2 贝叶斯网络Bayesian Networks 2.3 查询评估中的贝叶斯网络 三、Join选择性估计 3.1 两表Join 3.2 概率关系模型 3.3 使用PRMs的选择性估计 四、PRM构建 4.1 评分标准 4.2 参数估计 4.3 结…

堡垒机——网络技术手段

目录 一、简介 1.什么是跳板机 2.跳板机缺陷 3.什么是堡垒机 4.为什么要使用堡垒机 4.1堡垒机设计理念 4.2堡垒机的建设目标 4.3堡垒机的价值 4.4总结 5.堡垒机的分类 6.堡垒机的原理 7.堡垒机的身份认证 8.堡垒机的运维方式常见有以下几种 9.堡垒机其他常见功能…

基于springboot+vue+Mysql的在线动漫信息平台

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

vue中的async

📕:来源于chatgpt的回答 1.async是什么 async 是 JavaScript 中的一个关键字,用于定义一个异步函数。异步函数是一种特殊类型的函数,它可以让你更方便地使用异步操作,如异步请求、定时器等。 在使用 async 关键字声明…