[关闭]
@why-math 2015-01-23T07:40:32.000000Z 字数 10631 阅读 843

最优单元角度算法研究

网格


一, 四边形网格

给定一个由

  1. N 个节点 {Vi}Ni=1
  2. NT 个单元 {τi:=(Vk,Vj,Vm,Vn)|Vk,Vj,Vm,VnV}NTi=1

组成的四边形网格 T.

假设:
  1. 每个单元的四个顶点按逆时针方向排列
  2. T 是一个连通图
问题:
每个单元的四个顶点对应的角度为多少时, 四边形网格 T 的单元形状最接近正方形?

A1,A2,A3,A4 是四个长度为 NT 的列向量, 其中 Ai 的第 j 个分量为第 j 个单元第 i 个顶点对应的角度值.

I1,I2,I3,I4 是四个长度为 NT 的列向量, 其中 Ii 的第 j 个分量为第 j 个单元的第 i 个顶点对应的理想角度值.

建立如下极小化模型:

mini=14(AiIi)T(AiIi)

其中 Ai,i=1,2,3,4, 满足如下条件:

(ENTENTENTENT)A1A2A3A4(C1N×NTC2N×NTC3N×NTC4N×NT)A1A2A3A4==BM

其中

  1. ENT: NT 阶单位矩阵;
  2. CkN×NT:
    CkN×NT(i,j)={1,0, i  j  k ,;
  3. CkN×NT的每一列有且只有一个1, 其余全为0.
  4. B: 长度为NT的列向量, B(i)为第i个单元四个角的内角和, 这里都为360度;
  5. M: 长度为N的列向量, M(i) 为第 i 个节点周围的角度和.

引入拉格郞日乘子 Λ1,Λ2, 构造如下拉格郞日函数:

=F(A1,A2,A3,A4,Λ1,Λ2)i=14(AiIi)T(AiIi)+ΛT1{(ENTENTENTENT)A1A2A3A4B}+Λ2{(C1N×NTC2N×NTC3N×NTC4N×NT)A1A2A3A4M}

F(A1,A2,A3,A4,Λ1,Λ2)的驻点, 可得如下方程:

2ENT000ENTC1N×NT02ENT00ENTC2N×NT002ENT0ENTC3N×NT0002ENTENTC4N×NTENTENTENTENT00(C1N×NT)T(C2N×NT)T(C3N×NT)T(C4N×NT)T00A1A2A2A3Λ1Λ2=2I12I22I32I4BM

下面用块消元法,化简上述代数系统的增广矩阵.

2ENT0000C1N×NT02ENT000C2N×NT002ENT00C3N×NT0002ENT0C4N×NTENTENTENTENT2ENT0(C1N×NT)T(C2N×NT)T(C3N×NT)T(C4N×NT)T12(k=14CkN×NT)T02I12I22I32I4Bk=14IkM

ENT000000ENT000000ENT000000ENT0012ENT12ENT12ENT12ENTENT12i=14CiN×NT12(C1N×NT)T12(C2N×NT)T12(C3N×NT)T12(C4N×NT)T14(k=14CkN×NT)T12k=14CkN×NT(CkN×NT)TI1I2I3I412(k=14IkB)Mk=14CkN×NTIk

ENT000000ENT000000ENT000000ENT0012ENT12ENT12ENT12ENTENT012(C1N×NT)T12(C2N×NT)T12(C3N×NT)T12(C4N×NT)T14(k=14CkN×NT)TGI1I2I3I412(k=14IkB)J

其中

GJ=(k=14CkN×NT)(k=14CkN×NT)T4k=14CkN×NT(CkN×NT)T=8(Mk=14CkN×NTIk)+2(k=14IkB)

其中, 4k=1CkN×NTIk 表示每个节点处的理想角度之和,它和 M 相等,所以

J=2(k=14IkB)

下面分析 G, 因为两个不同的节点不可能是同一个单元的第 k 个顶点的, 所以 CkN×NT 任意两行正交,则

Dk=CkN×NT(CkN×NT)T

是一个对角矩阵, Dk(i,i)是第k个顶点为第i个节点的单元的个数,可得对角矩阵

D=k=14Dk

其中 D(i,i) 为第 i 个节点的邻接单元个数。

P=4k=1CkN×NT, 则

P(i,j)={1,  i  j;0,.

所以 P 为节点和单元的邻接矩阵. 记 Q=PPT,则

Q(i,j)=,i=j;2,(i,j) ;1,i  j  (i,j) ;0, .

G=4DQ , 是四边形网格的 Laplacian 矩阵. 从图的理论出发, 假设我们的网格为连通图,那么 G 有且只有一个 0 特征值。

由以上分析,可得如下结论:
1. 矩阵 A 的秩为 6NT+N1.
2. 只需求解一个 N×N 问题, 即可快速求解该离散系统。

二, 三角形网格

给定一个由

  1. N 个节点 {Vi}Ni=1
  2. NT 个单元 {τi:=(Vk,Vj,Vm)|Vk,Vj,VmV}NTi=1

组成的三角形形网格 T.

A1,A2,A3 是三个个长度为 NT 的列向量, 其中 Ai 的第 j 个分量为第 j 个单元第 i 个顶点对应的角度值.

I1,I2,I3 是三个长度为 NT 的列向量, 其中 Ii 的第 j 个分量为第 j 个单元的第 i 个顶点对应的理想角度值.

建立如下极小化模型:

mini=13(AiIi)T(AiIi)

其中 Ai,i=1,2,3, 满足如下条件:

(ENTENTENT)A1A2A3(C1N×NTC2N×NTC3N×NT)A1A2A3==BM

其中

  1. ENT: NT 阶单位矩阵;
  2. CkN×NT:
    CkN×NT(i,j)={1,0, i  j  k ,;
  3. CkN×NT的每一列有且只有一个1, 其余全为0.
  4. B: 长度为NT的列向量, B(i)为第i个三角形单元三个角的内角和, 这里都为360度;
  5. M: 长度为N的列向量, M(i) 为第 i 个节点周围的角度和.

引入拉格郞日乘子 Λ1,Λ2, 构造如下拉格郞日函数:

=F(A1,A2,A3,Λ1,Λ2)i=13(AiIi)T(AiIi)+ΛT1{(ENTENTENT)A1A2A3B}+Λ2{(C1N×NTC2N×NTC3N×NT)A1A2A3M}

F(A1,A2,A3Λ1,Λ2)的驻点, 可得如下方程:

2ENT00ENTC1N×NT02ENT0ENTC2N×NT002ENTENTC3N×NTENTENTENT00(C1N×NT)T(C2N×NT)T(C3N×NT)T00A1A2A3Λ1Λ2=2I12I22I3BM

下面用块消元法,化简上述代数系统的增广矩阵.

2ENT000C1N×NT02ENT00C2N×NT002ENT0C3N×NTENTENTENT32ENT0(C1N×NT)T(C2N×NT)T(C3N×NT)T12(k=13CkN×NT)T02I12I22I3Bk=13IkM

ENT00000ENT00000ENT0012ENT12ENT12ENTENT12i=13CiN×NT12(C1N×NT)T12(C2N×NT)T12(C3N×NT)T13(k=13CkN×NT)T12k=13CkN×NT(CkN×NT)TI1I2I323(k=13IkB)Mk=13CkN×NTIk

ENT00000ENT00000ENT0012ENT12ENT12ENTENT012(C1N×NT)T12(C2N×NT)T12(C3N×NT)T13(k=13CkN×NT)TGI1I2I323(k=13IkB)J

其中

GJ=(k=13CkN×NT)(k=13CkN×NT)T3k=14CkN×NT(CkN×NT)T=6(Mk=13CkN×NTIk)+2(k=13IkB)

其中, 3k=1CkN×NTIk 表示每个节点处的理想角度之和,它和 M 相等,所以

J=2(k=14IkB)

下面分析 G, 因为两个不同的节点不可能是同一个单元的第 k 个顶点的, 所以 CkN×NT 任意两行正交,则

Dk=CkN×NT(CkN×NT)T

是一个对角矩阵, Dk(i,i)是第k个顶点为第i个节点的单元的个数,可得对角矩阵

D=k=13Dk

其中 D(i,i) 为第 i 个节点的邻接单元个数。

P=3k=1CkN×NT, 则

P(i,j)={1,  i  j;0,.

所以 P 为节点和单元的邻接矩阵. 记 Q=PPT,则

Q(i,j)=,i=j;2,(i,j) ;1,(i,j) ;0, .

G=3DQ , 是三角形网格的 Laplacian 矩阵. 从图的理论出发, 假设我们的网格为连通图,那么 G 有且只有一个 0 特征值。

三, 四面体网格

四, 六面体网格

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注