变形

区域边界的位置和形状可以随时间变化,例如由于接触体的运动。 在 Simcenter STAR-CCM+ 中,变形算法根据边界位移重新分布网格节点,使网格可以进行非刚性变形。

变形算法将重新分布网格节点,它对网格单元体积、面或边不起作用。 变形无法计算网格质量度量,因此不会优化网格。

通过一组控制点定义变形施加在网格上的初始移动。 这些控制点源自变形边界上的网格节点或源自控制点表。 每个控制点与一个已知的位移矢量关联。 变形使用这些位移构建插值场,用于计算所有网格节点的位移。

变形使用控制点位移为区域生成一个插值场,用于定义变形运动。 然后,变形使用该插值场将网格节点平移到新位置。

插值算法

Simcenter STAR-CCM+ 提供了 BSpline 和径向基函数 (RBF) 这两种插值法。 BSpline 系数和并行化格式仅限局部,因此 BSpline 变形对并行计算而言比 RBF 更具可扩展性,可能会减少计算开销。
BSpline

根据 [18]Simcenter STAR-CCM+ 根据渐进自适应网格使用多级 BSpline 层级方法。

插值法为 C2 连续曲线,该方法生成的表面比 C0 或 C1 连续曲线更平滑。

考虑一个简单的 1D 示例。 下图显示了一条线段,“节点”处有 4 个 BSpline 系数(标记为 0-3),沿该线段等距间隔。 参数 s 是可能包含一个或多个控制点的间隔内的标准化距离:



在此示例中,BSpline 曲线通过控制点(未显示)沿叠加到几何域的一条线拟合。 根据定义,这些点不与模型几何重合,而是围绕网格节点。 中心间隔 (1)-(2) 内的三次 BSpline 曲线至少需要 4 个系数:
1. EQUATION_DISPLAY
f(x)=k=03Bk(s)ϕk
(4845)
其中:
  • f(x) 为拟合曲线。
  • s 为沿间隔的标准化距离
  • ϕk 为节点 k 处的 BSpline 系数值,且 k=0、1、2 和 3。
权重函数 Bk(s)均匀基函数,由以下公式给出:
2. EQUATION_DISPLAY
B0(s)=(1s)3/6B1(s)=(3s36s2+4)/6B2(s)=(3s3+3s2+3s+1)/6B3(s)=s3/6
(4846)

这些函数充当加权因子。 每个函数都对 ϕk 具有适当的影响,使得 k=03Bk=1

该方法可轻松扩展到 2D 和 3D 情况:
3. EQUATION_DISPLAY
f(x,y)=k=03l=03Bk(s)Bl(t)ϕklf(x,y,z)=k=03l=03m=03Bk(s)Bl(t)Bm(v)ϕklm
(4847)

其中,Bk(s)Bl(t)Bm(v) 分别为 xyz 坐标方向上的基函数;这些函数描述了 1D 直线、2D 正方形或 3D 立方体上的节点(如适用)。

Simcenter STAR-CCM+ 中实现的 BSpline 方法采用层级过程,即:逐渐加密控制点网格,直到残差在变形容差指定的限制范围内。 按不同的网格尺度应用一系列校正。 为简单起见,将坐标命名为 xi,其中 i=1,2,...n 表示网格加密时间步,t 表示目标坐标,残差即这些坐标之差, ri=txi。 残差实际上是位移,这在控制点处已知,但在其他位置则未知。

在达到所需的位移之前,残差可以表示为插值 Ii 与剩余残差 ri1=Ii+ri 之和。

t 方程如下所示:

4. EQUATION_DISPLAY
t=x0+i=1nIi+rn
(4848)

其中,x0 为该过程开始时点的坐标,Ii 为时间步 i 处的插值,n 为最后一个加密时间步,在该时间步将达到所需的位移。

执行加密,直到变形误差收敛到变形容差的精度范围内。 由于接近数据集越来越小,在特定加密等级,每个数据集仅包含一个控制点并实现精确插值,因而可保证此类算法的收敛。

层级方法效率低下,因为计算点数会随着加密呈指数增长,而许多计算针对的区域中没有数据。 更有效的方法是从计算中移除这些点。 根据 Eqn. (4848),仅当符合下列任一条件时,系数 ϕ 才会等于零:

  1. 来自接近数据点的所有贡献为零,或
  2. 接近数据集为空。

在这两种情况下,可以假设这些点处的样条曲线校正已收敛,不需要进一步校正。 因此,在后续的加密等级,该算法仅收集非零系数,该过程名为自适应插值。 加密后,控制栅格中的点数会增加,但是相反,需要校正的点将减少。

下图显示了加密等级 0 处的控制栅格(左图)和级别 n 处的加密控制栅格(右图):



如果在边界表面(黑线)上定义了控制数据点,在特定加密等级后,不会校正内部区域节点。 操作数为 O(M+N)×n 阶,其中 M 为控制点数(即,存在位移的节点),N 为计算点数(即,几何中的所有节点),n 为加密等级数。

径向基函数 (RBF)

RBF 变形通过一个方程组生成插值场;可使用控制点及其指定的位移创建这些方程,其中每个控制节点 i 的已知位移 d'i 展开为

5. EQUATION_DISPLAY
d'i=j=1Nfb,j(rij)λj+α
(4849)

其中,fb,j(rij) 是形状的径向基本函数

6. EQUATION_DISPLAY
fb,j(rij)=rij2+cj2
(4850)

rij 是两个节点之间的距离的幅值:

7. EQUATION_DISPLAY
rij=|xi-xj|
(4851)

在这些方程中,λj 是展开系数,xi 是节点 i 的位置,N 是控制节点的数量,cj 是基本常数。 在 Simcenter STAR-CCM+ 中,基本常数设为零。 常数矢量 α 用于满足额外约束

8. EQUATION_DISPLAY
j=1Nλj=0
(4852)

此额外约束限制大 x 的展开。 如果对于所有 ijxixj,则 Eqn. (4849) 中所述的系统非奇异。

方程 Eqn. (4849)Eqn. (4852) 求解后,得出所有 λj 的笛卡尔分量和常数矢量 α 的分量。 这会产生所需的插值场:

9. EQUATION_DISPLAY
d'(x)=j=1Nfb,j(r)λj+α
(4853)

其中,fb,j(r) 应用于网格中的所有节点,即

fb,j(r)=r2+cj2r=|x-xj|

此方程现在可用于按计算出的位移 d' 移动网格节点。

方程 Eqn. (4849)Eqn. (4853) 中所涉及的矩阵是密集矩阵,简单矩阵运算需要 O(N2) 运算。 已开发出 O(Nlog(N)) 方法,可在许多节点位置求解线性方程 Eqn. (4849) 和计算方程 Eqn. (4853)。 RBF 变形使用具有特殊预调节器([15][16])的共轭梯度法以及快速多极法 [17] 加速矩阵矢量乘法的计算。

边界平面条件(RBF 变形)

Simcenter STAR-CCM+ 为变形边界上的节点提供两个约束:边界平面和固定边界平面约束。 对于固定边界平面条件,位于指定平面上的节点固定;而对于边界平面条件,允许这些节点在平面自身内移动。 通过使用控制节点,可以实现类似于固定边界平面条件的作用,但固定边界平面条件本身效率更高。 约束平面附近节点的移动因此与平面上节点的移动顺利结合起来。

可以使用如下所述的阻尼距离 Lp 控制约束平面附近的这一移动,但这仅适用于 RBF 变形。

在求解 Eqn. (4849) 之前施加这些约束。 在准备时,通过求解以下方程,用户指定的位移 di 转换为 d'i

10. EQUATION_DISPLAY
di=p=1Np[spnpnpT+tp(1-npnpT)]d'i
(4854)

其中,np 是第 p 个平面的法线,Np 是平面的数量。 在变形过程结束时,位移 d'i 与其他网格节点一起转换回 disptp 是与选定平面类型和连续性条件相关的函数。 这些函数如下所示:

C0 连续 C2 连续
sp tp sp tp
固定边界平面 f0(l) f0(l) f2(l) f2(l)
边界平面 f0(l) 1 f2(l) 1

此处:

11. EQUATION_DISPLAY
f0(l)={11-(1-l)30;  l1;  1>l0;  l<0
(4855)
12. EQUATION_DISPLAY
f2(l)={1l3(10-15l+6l2)0;  l1;  1>l0;  l<0
(4856)

其中

13. EQUATION_DISPLAY
l=np(x-x0,p)Lp
(4857)

是第 p 个平面到 xi 的有符号距离与阻尼距离 Lp 之比。 x0,p 是第 p 个平面上的位置矢量,Lp 输入为有限距离,或自动计算为 (Lmin+Lmax)/2LminLmax 分别是平面到位于平面活动侧的最近和最远控制节点的距离。

下面绘制了函数 f0f2 在范围 0 到 1 内的变化以进行比较。 连续性等级 C2 产生平滑过渡。



时间步中 RBF 变形阶段所包含的步骤如下:

线性拟合

线性拟合可与 BSpline 和 RBF 变形一起使用。

每个位移分量 (dx,dy,dz) 表示为坐标的函数。 使用最小二乘法,得出每个位移分量的超平面方程。

考虑 x 位移 dx 的拟合问题:

dx(x,y,z)=Ax+By+Cz+D

可以构造超定线性方程组

(xiyizi1)(ABCD)=(dxi)

矩阵形式为

Pc=dx

其中,P 为带点坐标的矩阵,c 包含超平面系数,dx 为位移列。

要使用最小二乘法解决此问题,需构造正规方程:

c=P+dx,其中 P+ 为伪逆矩阵。

RBF 变形使用 Cholesky 分解来求解线性方程。 对于 BSpline 线性拟合实现,使用奇异值分解 (SVD) 方法分解该矩阵。