# 2. 基于直接刚度法的杆系有限元方法

## 2.1 弹簧的力学分析原理

首先是大家都知道的胡克定律： $$F=k\delta$$。 但是这里引入了一个新的概念：刚度方程/矩阵。

![](/files/-MZmhIphzR25C2V0_DzX)

乍一看是画蛇添足之举，实则另有用处，这么处理之后的单元规范了，就可以和其他杆件连接了。

下一步分析两个弹簧的连接+存在一个外力$$F\_2$$作用在节点2上的实例：

![](/files/-MZmhIpirch9w0M0XpEg)

建模过程视频很详细，略了，大致思路是：$$F\_2$$ 给右边的弹簧，弹簧内力设置为$$F\_{I\_2}$$，左右相互抵消，这个$$F\_{I\_2}$$将来要在方程组中约去。

![](/files/-MZmhIpjslGrcm-8FIc1)

这里扩充矩阵，使其标准化为3✖3的矩阵，方便相加，这里取了一个巧，正常我们有两个方程组，例如：$$A\_1x=b\_1$$和$$A\_2x=b\_2$$，要揉成一个，一般会取两个系数，比如$$\alpha\_1$$和$$\alpha\_2$$，加上系数以后相加：

$$(\alpha\_1A\_1 + \alpha\_2A\_2)x=(\alpha\_1b\_1 + \alpha\_2b\_2)$$

然后调整这些系数保证$$F\_{I\_2}$$约去，视频里直接让两个方程组b的第二项的内力互为相反数，这样直接加起来就约掉了。

最后考虑$$u\_1$$和$$u\_3$$都是0（约束条件），所以得到u2的计算公式：

![](/files/-MZmhIpknLMbh2Z6rq5_)

## 2.2 弹簧单元与杆单元的比较

杆单元和弹簧一样，都是线性元件，所以计算方式也是一样的。考虑弹性模量为E，长度为l，截面面积A的杆，等效于 $$k = \frac{EA}{l}$$ 的弹簧。

Q.E.D.

## 2.3 杆单元的坐标变换

之前的杆单元的位移u都是沿着杆的方向定义的，但是这个时候如果出现斜拉的杆件，计算就会显得有点复杂。

2.3节的主要思想，就是统一坐标系，全部分解到x-y或者x-y-z坐标系，这样刚度矩阵加起来就更加的流畅。

这一切，都会导致计算量大幅上升，但是这是值得的，因为带来的好处就是计算更加规范了，这样就利于编程实现，反正最后受苦的是CPU/GPU又不是我。

![](/files/-MZmhIplk1jVfiOLLd3F)

这里就很清晰的展示了坐标变换的方式，虽然2个坐标变4个了，但是考虑小变形问题的话，$$\alpha$$ 是基本不会变化的，计算中省略其变化，所以秩其实还是2。

![](/files/-MZmhIpm8fWwAmjNcCJ0)

这里我们进行矩阵化，我们用矩阵T联系了变化前和变化后的坐标。

![](/files/-MZmhIpnvvIE6ZmnhnyB)

我们也需要对刚度矩阵进行同等的变换才可以让刚度阵（其实还有F向量）适应新的坐标，直接思考刚度阵的变化是很费脑细胞的，所以这里使用（线性）代数进行等效变换，我们得到了新的刚度矩阵，过程如下：

* 首先把坐标$$\bold{q}^e$$替换成$$\bold{T}^e\bold{\overline{q}}^e$$
* 两边左侧乘以矩阵$$\bold{T}^{eT}$$。
  * 其实根据线性代数的理论这里其实乘什么都行，但是由于要对力F也进行坐标变换才乘以的这个矩阵。
  * 只有用$$\bold{T}^{eT}$$，右侧的式子才有物理意义了，代表的是力。
* 最后根据线性代数的结合律，我们把$$\bold{T}^{eT}\bold{K}^e\bold{T}^e$$捆绑一下，就得到了新的刚度矩阵。

![](/files/-MZmhIponrgQOzf_jCIW)

老师还列举了三维的形式，三维的刚度矩阵写出来可能一张PPT就满了（6x6），所以就略了。

## 2.4 一个四杆结构的实例分析

![](/files/-MZmhIpp1Dg7F7VEH7zr)

以上是今天要分析的问题，四个线性元件组成的桁架结构的受力分析。第一件事情其实是体力活儿，列出所有杆和节点的信息：

| 杆子 | 节点    | l   | $$n\_x$$ | $$n\_y$$ |
| -- | ----- | --- | -------- | -------- |
| 1  | {1,2} | 400 | 1        | 0        |
| 2  | {3,2} | 300 | 0        | -1       |
| 3  | {1,3} | 500 | 0.8      | 0.6      |
| 4  | {4,3} | 400 | 1        | 0        |

| 节点 | x   | y   |
| -- | --- | --- |
| 1  | 0   | 0   |
| 2  | 400 | 0   |
| 3  | 400 | 300 |
| 4  | 0   | 300 |

![](/files/-MZmhIpqj7yUOAdZBtNn)

随后就是看着图片和表格填刚度矩阵，这个活太细碎了……

曾老师是先填写了一个个小的矩阵，然后扩充填0以后相加，不过我觉得直接填写应该也OK。

这里的支反力是因为有了约束条件，当你约束一个坐标的时候，坐标是已知了，但相应的你就产生一个未知的力。

![](/files/-MZmhIprt_nEfehAA_6m)

这就是刚度矩阵，好特么大……（对于人类而言），其中的$$F\_x2$$，$$F\_x3$$，$$F\_y3$$都是刚才已知的力。

![](/files/-MZmhIps1wyi1gZXl7nT)

考虑到$$u\_1$$，$$v\_1$$，$$v\_2$$，$$u\_4$$，$$v\_4$$全都是0，所以未知数只有3个，而且$$u\_2$$直接就可以肉眼算出，最后只剩下一个二元线性方程组。

![](/files/-MZmhIptJlwQYytEsnv4)

节点位移求出以后，支反力也就知道了，这个是很自然的，因为位移知道以后，拉伸量也就知道了。

## 2.5 四杆结构的ANSYS实例分析

略


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://blog.tsingjyujing.com/fem/02-direct-stiffness-method.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
