线性约束方程
概述
线性多点约束要求节点自由度上的数值可以线性组合,即
A
1
u
i
P
+
A
2
u
j
Q
+
.
.
.
+
A
N
u
k
R
=
0
A_1u_i^P+A_2u_j^Q+...+A_Nu_k^R=0
A1uiP+A2ujQ+...+ANukR=0
其中,
u
i
P
u_i^P
uiP代表节点P,自由度i上的数值。
A
n
A_n
An为定义节点运动关系的系数。
定义线性约束方程
线性约束方程需要指定:
- 方程包含的项目数,N;
- 节点P,以及自由度i,相应地自由度上的数值为 u i P u_i^P uiP;
- 系数 A n A_n An
例如,实现方程
u
3
5
=
u
1
6
−
u
3
1000
u_3^5=u_1^6-u_3^{1000}
u35=u16−u31000
首先将方程写成
u
3
5
−
u
1
6
+
u
3
1000
=
0
u_3^5-u_1^6+u_3^{1000}=0
u35−u16+u31000=0
方程包含三项(N=3).P=5,i=3,
A
1
A_1
A1=1.0,Q=6,j=1,
A
2
A_2
A2=-1.0,R=1000,k=3,
A
3
A_3
A3=1.0
线性约束方程的求解
解决多点约束问题可采用的方法
- 罚函数法
- 拉格朗日乘子法
- 从自由度消去法
从自由度消去方法的列式
将所有自由度分为主自由度
u
m
u_m
um,从自由度
u
s
u_s
us,单点约束自由度
u
d
u_d
ud,按照主自由度、从自由度和单点约束自由度顺序排序所有自由度。
计算模型自由度记为
u
=
{
u
m
,
u
s
,
u
d
}
u=\{u_m,u_s,u_d\}
u={um,us,ud}
线性约束关系描述为
u
s
=
T
1
u
m
+
T
2
u
d
u_s=T_1u_m+T_2u_d
us=T1um+T2ud
其中
T
1
T_1
T1,
T
2
T_2
T2分别描述从自由度和主自由度、从自由度和单点约束自由度之间的线性关系矩阵,即主从关系的矩阵。那么整体位移向量可以表示为:
u
=
{
u
m
u
s
u
d
}
=
{
I
m
0
T
1
T
2
0
I
d
}
{
u
m
u
d
}
=
C
{
u
m
u
d
}
u=\left\{ \begin{matrix} u_m \\ u_s \\ u_d \\ \end{matrix} \right\}= \left\{ \begin{matrix} I_m && 0 \\ T_1&&T_2 \\ 0 &&I_d \\ \end{matrix} \right\} \left\{ \begin{matrix} u_m \\ u_d \\ \end{matrix} \right\}=C \left\{ \begin{matrix} u_m\\ u_d \\ \end{matrix} \right\}
u=⎩
⎨
⎧umusud⎭
⎬
⎫=⎩
⎨
⎧ImT100T2Id⎭
⎬
⎫{umud}=C{umud}
代入
K
u
=
f
Ku=f
Ku=f,左乘
{
I
m
T
1
T
0
0
T
2
T
I
d
}
\left\{ \begin{matrix} I_m&&T_1^T&&0\\ 0&&T_2^T&&I_d\\ \end{matrix} \right\}
{Im0T1TT2T0Id},得到
{
I
m
T
1
T
0
0
T
2
T
I
d
}
{
K
m
m
K
m
s
K
m
d
K
s
m
K
s
s
K
s
d
K
d
m
K
d
s
K
d
d
}
{
I
m
0
T
1
T
2
0
I
d
}
{
u
m
u
d
}
=
{
I
m
T
1
T
0
0
T
2
T
I
d
}
{
f
m
f
s
f
d
}
\left\{ \begin{matrix} I_m&&T_1^T&&0\\ 0&&T_2^T&&I_d\\ \end{matrix} \right\} \left\{ \begin{matrix} K_{mm}&&K_{ms}&&K_{md}\\ K_{sm}&&K_{ss}&&K_{sd}\\ K_{dm}&&K_{ds}&&K_{dd}\\ \end{matrix} \right\} \left\{ \begin{matrix} I_m&&0\\ T_1&&T_2\\ 0&&I_d\\ \end{matrix} \right\} \left\{ \begin{matrix} u_m\\ u_d \\ \end{matrix} \right\}= \left\{ \begin{matrix} I_m&&T_1^T&&0\\ 0&&T_2^T&&I_d\\ \end{matrix} \right\} \left\{ \begin{matrix} f_m\\ f_s \\ f_d \\ \end{matrix} \right\}
{Im0T1TT2T0Id}⎩
⎨
⎧KmmKsmKdmKmsKssKdsKmdKsdKdd⎭
⎬
⎫⎩
⎨
⎧ImT100T2Id⎭
⎬
⎫{umud}={Im0T1TT2T0Id}⎩
⎨
⎧fmfsfd⎭
⎬
⎫
将此式展开,注意到
u
d
u_d
ud 的位移已经指定,只有关于
u
m
u_m
um 的方程的是需要求解的,即:
(
K
m
m
+
K
m
s
T
1
+
T
1
T
K
s
m
+
T
1
T
K
s
s
T
1
)
u
m
=
I
m
f
m
+
T
1
T
f
s
−
(
K
m
d
+
K
m
s
T
2
+
T
2
T
K
s
m
+
T
1
T
K
s
s
T
2
)
u
d
(K_{mm}+K_{ms}T_1+T_1^TK_{sm}+T_1^TK_{ss}T_1)u_m=I_mf_m+T_1^Tf_s-(K_{md}+K_{ms}T_2+T_2^TK_{sm}+T_1^TK_{ss}T_2)u_d
(Kmm+KmsT1+T1TKsm+T1TKssT1)um=Imfm+T1Tfs−(Kmd+KmsT2+T2TKsm+T1TKssT2)ud
基于拉格朗日乘子法的列示
假定系统总自由度数为n(包含所有自由度,包括主、从以及单自由度约束),附加m个线性独立的离散约束(从自由度和单自由度约束之和为m)。
将从自由度和单自由度约束写成方程组形式
B
u
=
V
Bu=V
Bu=V
其中B矩阵是一个m*n的系数矩阵。
离散系统的拉格朗日变分形式可写为
Π
∗
(
u
,
λ
)
=
0.5
u
T
K
u
−
u
T
R
+
λ
T
(
B
u
−
V
)
\Pi^*(u,\lambda)=0.5u^TKu-u^TR+\lambda^T(Bu-V)
Π∗(u,λ)=0.5uTKu−uTR+λT(Bu−V)
取
δ
Π
∗
=
0
\delta\Pi^*=0
δΠ∗=0
可得如下的平衡方程
{
K
B
T
B
0
}
{
u
λ
}
=
{
R
V
}
\left\{ \begin{matrix} K&&B^T \\ B&&0 \\ \end{matrix} \right\} \left\{ \begin{matrix} u \\ \lambda \\ \end{matrix} \right\}= \left\{ \begin{matrix} R \\ V\\ \end{matrix} \right\}
{KBBT0}{uλ}={RV}
基于罚函数的列示
和拉格朗日方法取相同的B矩阵约束形式,加入罚函数的离散形式的变分形式为
Π
∗
(
u
)
=
0.5
u
T
K
u
−
u
T
R
+
0.5
α
(
B
u
−
V
)
T
(
B
u
−
V
)
\Pi^*(u)=0.5u^TKu-u^TR+0.5\alpha(Bu-V)^T(Bu-V)
Π∗(u)=0.5uTKu−uTR+0.5α(Bu−V)T(Bu−V)
取
δ
Π
∗
=
0
\delta\Pi^*=0
δΠ∗=0
得到
(
K
+
α
B
T
B
)
U
=
R
+
α
B
T
V
(K+\alpha B^TB)U=R+\alpha B^TV
(K+αBTB)U=R+αBTV