首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >罚单元

罚单元

作者头像
fem178
发布2021-04-16 15:38:12
6920
发布2021-04-16 15:38:12
举报
  • 什么是罚单元

罚单元可以用来使结构位移强制满足某个或某一组线性约束。它非实际单元,但它的所有行为都与实际单元相同。如图所示的结构对象,中间的铰接点不能看作拥有两个自由度的一个节点。因为连续梁的挠度函数在铰接点这里虽然连续但不可导,即节点两边,不同单元的转角是不一样的。

所以铰接点要建立两个节点。

这样一来自由度1和自由度3对应的位移必须相等,就需要建立约束关系

u_1 = u_3

或者

u_1 - u_3 =0
  • 罚单元应用

以上述连续梁为例。将约束关系

u_1 - u_3 =0

写成矩阵形式:

\begin{bmatrix} 1 & -1 \\ \end{bmatrix} \begin{bmatrix} u_1 \\ u_3 \\ \end{bmatrix} =0

两边再乘以矩阵

\begin{bmatrix} 1 & -1\\ \end{bmatrix}^T

,得到

\begin{bmatrix} 1 & -1 \\ -1 & 1 \\ \end{bmatrix} \begin{bmatrix} u_1 \\ u_3 \\ \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \\ \end{bmatrix}

两边再乘以参数

\lambda

,得

\begin{bmatrix} \lambda & -\lambda \\ -\lambda & \lambda \\ \end{bmatrix} \begin{bmatrix} u_1 \\ u_3 \\ \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \\ \end{bmatrix}

这就是罚单元,等号右边是罚荷载。然后再将其组装到整体刚度矩阵中。

K = \begin{bmatrix} \frac {12EI}{l^3}+\lambda & -\frac {6EI}{l^2} &-\lambda &0 \\ -\frac {6EI}{l^2} & \frac {4EI}{l} &0 &0 \\ -\lambda & 0 &\frac {12EI}{l^3}+\lambda & \frac {6EI}{l^2} \\ 0 & 0 &\frac {6EI}{l^2} &\frac {4EI}{l} \\ \end{bmatrix}

理论上,参数

\lambda

的取值越大越好,这样才能起到约束作用。实际取

10^6-10^9

l=1,EI=1,

验证罚单元的准确性。

import numpy as np
K = np.array([  [ 12+12e6,    -6,    -12e6,     0],
                [     -6,     4,        0,     0],
                [  -12e6,     0,   12+12e6,    6],
                [       0,    0,        6,     4] ])

F = np.array( [ [-4], [1], [0], [0] ])

x = np.linalg.solve(K, F)
print("Solution", x) 

结果为:

结构力学求解器的计算结果为:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数值分析与有限元编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档