使用动态网格的流体动画 Fluid Animation with Dynamic Meshes 论文阅读笔记

目录

原文:

Klingner, Bryan M., et al. "Fluid animation with dynamic meshes." ACM SIGGRAPH 2006 Papers. 2006. 820-825.

引言

使用 [Alliez et al., 2005] 的方法动态生成不规则的四面体网格

根据边界的位置、边界的形状、基于流体和速度场的视觉重点部分的标准来构建一个尺寸场。这个尺寸场表明要生成的四面体网格在某点处的尺寸

使用不规则的网格,而不是轴对称的,因为不规则的网格更加适应弯曲边界和不规则边界

并且不规则的网格允许控制网格细分

推广半拉格朗日平流,将物理量从旧网格传输到新网格,不会造成额外的平滑

然后执行质量守恒步,这步被拓展为流固双向耦合

背景

[Feldman et al., 2005a] 使用基于速度的非结构化四面体网格

[Elcott et al., 2005] 使用基于涡度的非结构化西面体网格

[Feldman et al., 2005b] 提出的半拉格朗日平流的拓展,不会造成额外的平滑

这个文章综合以上论文的思想

任意拉格朗日-欧拉法 arbitrary Lagrangian-Eulerian (ALE) 就是用于处理固定坐标系下的移动网格,它能够有效地处理高度可变形的弹性材料

使用 [Alliez et al., 2005] 的方法动态生成不规则的四面体网格

该方法是 Delaunay,提供了改进的梯度估计;简化了网格中的速度插值的表达式

方法

[Feldman et al., 2005b] 提出的半拉格朗日平流的拓展,它被用于将状态在变形域之间转移。现在这个文章将他用在将物理量从旧网格传输到新网格,不会造成额外的平滑

[Alliez et al., 2005] 的方法使得在每个时间步生成四面体网格的时间成本可以接受

离散化

交错网格推广到四面体,得到交错四面体法

压力定义在四面体的体心

面法线速度定义在四面体的外心

离散化的导数算子

使用 [Losasso et al., 2004] 和 [Elcott et al., 2005] 中的公式

散度近似为面法线速度的,以面积为权重的加权平均

面的外心处的沿着面法向的梯度使用有限差分计算

在 Delaunay 网格中,连接两个相邻四面体的体心的线穿过它们的公共面的外心

这个特性自然地引出了将速度存储在面的外心处的策略

因为梯度估计相当于对外心值进行插值的分段线性函数的梯度

"对外心值进行插值的分段线性函数的梯度"不知道是什么

速度插值

现在我们只是对于一个四面体定义了存储在面的外心处的面法线速度

但是使用半拉格朗日平流的时候,我们需要在网格的任意位置得到完整的速度矢量

使用 [Elcott et al., 2005] 的两步法

第一步,计算四面体的每个面的外心处的速度矢量

第二步,使用顶点处的速度矢量插值得到网格中任意位置的速度矢量

不知道为什么从面的外心处的速度矢量跳到了顶点处的速度矢量?

求解四面体的速度 u t u_t ut 需要求解一个小型的线性方程组

N t u t = z t N_t u_t = z_t Ntut=zt

其中 N t N_t Nt 是 4 行面的法向, z t z_t zt 是 4 个面法向速度标量排成一列,

其实这个就是,把四面体的速度向四个面法向投影,得到四个面法向速度的意思

如果是无散的话,那么这个投影就是精确的

那么 u t u_t ut 和 z t z_t zt 就可以来回转换

我在想象一个极端情况,一个正四面体,三个面的法向速度都是正无穷大, 那么最后一个面应该是负无穷大才能无散。但是我又想把这个"精确"和线性方程组的解的存在性联系起来。因为 N t N_t Nt 是 4 * 3, u t u_t ut 是 3 * 1, z t z_t zt 是 4 * 1。也就是至少有一个多余的方程。四个法向因为都定义在三维空间,所以最后应该能化简为三个自由度。也就是系数矩阵的秩为 3,增广矩阵的秩不一定是 3,可能是 4,所以我想用解的存在性来解释的话。就是,如果增广矩阵的秩是 4,说明无解,如果为 3 说明有唯一解。增广矩阵是 3 对应着"精确"?

得到四面体的速度之后,要得到任意位置的速度,使用 [Warren et al., 2004] 的方法在四面体的速度之间加权平均

σ t \sigma_t σt 是与插值位置所在的四面体相交的四面体的集合

x x x 是从插值位置到 σ t \sigma_t σt 中的四面体的面的距离, n f n_f nf 是对应的四面体的面的法向

d f d_f df 是平面偏差,我没理解

∣ N t ∣ \vert N_t \vert ∣Nt∣ 是插值位置所在的四面体的面法向组成的矩阵的行列式

为了简化计算,利用了"在 Delaunay 网格中,连接两个相邻四面体的体心的线穿过它们的公共面的外心"的性质

Vol(t) 是插值位置所在的四面体的体积

广义的半拉格朗日步

利用 [Feldman et al., 2005b] 的方法

重新网格化

[Alliez et al., 2005] 的划分网格的方法

网格的细化由一个函数控制

k0 是一个偏移,提供最小值

d(x) 是点 x 到最近的障碍物的距离

s(x) 是烟雾的密度

w(x) 是速度场的涡度

这就达成了在视觉重点的部分细化网格的结果

网格划分方法是迭代的。因为每一个时间步之间流体状态应该不会变化太快,所以用上一个时刻的值作为下一个时刻的初始值,以加速迭代

在优化节点位置时,我们将节点移动到周围四面体重心的平均值,而不是外心。我们发现,虽然这往往会稍微降低网格中四面体的平均质量,但它通常会导致网格中最差元素的质量显着提高,这是数值模拟更关心的

双向流固耦合和质量守恒

流固耦合和质量守恒的条件罗列到一起:

  1. 界面处的法向与速度的法向相同

  2. 速度场无散(质量守恒),固体刚性

  3. 线动量和角动量守恒

依次执行这些条件时,后执行的条件可能破坏以前的条件

现在这个文章同时执行这些条件

将质量守恒扩展到包括动态刚体,这是通过求解流体和刚体的加速度,忽略两者的压力来实现的(看不懂)。然后再求解满足流体无散条件和刚体边界条件的压力

就是说,先求两者的加速度,然后再求满足这两者的加速度的压力?这样就能求得兼顾两者的压力?

刚体的加速度时通过 R 乘以刚体周围一圈的压力组成的向量而得到的

很好,之后的看不懂了,要是需要再看吧

总结来说,感觉他就是把各个方法组合在了一起而已......

他把别人生成不规则四面体网格和半拉格朗日平流的算法结合了起来,然后自己稍微修改了一下,修改了西画网格的控制函数,流固耦合的方法

虽然我看不懂具体在说什么,因为我没看过他使用的别人的方法的源论文

相关推荐
huangkj-henan2 分钟前
DA217应用笔记
笔记
Young_202202023 分钟前
学习笔记——KMP
笔记·学习
秀儿还能再秀36 分钟前
机器学习——简单线性回归、逻辑回归
笔记·python·学习·机器学习
WCF向光而行41 分钟前
Getting accurate time estimates from your tea(从您的团队获得准确的时间估计)
笔记·学习
Li_0304062 小时前
Java第十四天(实训学习整理资料(十三)Java网络编程)
java·网络·笔记·学习·计算机网络
啤酒泡泡_Lyla3 小时前
现代无线通信接收机架构:超外差、零中频与低中频的比较分析
笔记·信息与通信
龙中舞王3 小时前
Unity学习笔记(4):人物和基本组件
笔记·学习·unity
红色的山茶花4 小时前
YOLOv7-0.1部分代码阅读笔记-general.py
笔记·yolo
烟雨长虹,孤鹜齐飞4 小时前
【SpringBoot】黑马大事件笔记-day3
笔记
我叫乐多你养我啊6 小时前
Windows远程连接Docker服务
笔记·docker