网址:https://www.youtube.com/watch?v=g_rGh3fS2Dg&list=PLmhFkUZSrlCc5k-kNvGSHBfbsodriv7qb
记录一下2020Palabos夏校复播的内容
Palabos历史
~2005: Palabos的前身:Vladvmir, OpenLB
2010: Palabos的第一个版本
2011:由日内瓦大学和FlowKit共同开发
2018:Numeca公司/Flowkit开发商业软件Omnis/LB
2018:日内瓦大学/hepia(Geneva School of Engineering, Architecture and Landscape——接管Palabos
当下Palabos已经在github开源,大家可以fork到自己的repository然后开发属于自己的代码。
1
Palabos内物理空间由规则相同的网格表示,网格由2D或3D矩阵表示,在Palabos里我们用Block而不是Matrix来表示。
2
Palabos内有3种Block
- Block Lattice 储存分布函数和dynamics
- Scalar Field 相当于一个标量值矩阵
- Tensor Field 相当于一个向量或者张量值矩阵
3
MultiBlockLattice2D<T, DESCRIPTOR>lattice,(
nx, ny, new BGKdynamics<T,DESCRIPTOR>(omega));//用于生成一个nx,ny的区域,BGK碰撞格式。
通过Sparse Domain我们可以节省计算。
4
- 每个循环被分为碰撞和迁移两部分,在实际的palabos应用中,二者合一(节省运算)。
- 迁移过程不可自定义。
- 碰撞过程较为一般化,可自定义。
不同碰撞模型的例子
BGK与线性平衡态:对流扩散方程
BGK与二阶平衡态:不可压缩流
BGK与三和四阶平衡态:可压缩流
Advanced collision models(recursive-regularized,central-momen,…)
5
碰撞步骤是局部运算在格点上,所以它才可被自定义化运行。
在Palabos里,每一个格点都存储了一个Dynamics类型的对象,它定义了这个格点的碰撞步骤算法,以及适用于其他算法,如计算密度,速度等。
6
通过defineDynamics可以修改指定区域格点的dynamics。
通过bool operator()可以获得更自定义化的指定区域。
7 碰撞迁移机制之外的事情
局部碰撞不具备的:非局部的边界条件,物理作用,与其他模型的耦合
Palabos的应对方法为Data Processors:用户自定义算法,可以为非局部,可手动设置运行或在每一个碰撞迁移循环后自动运行。
8 单位转换(不可压缩流体)
Lx:length
U:velocity
ρ0:density
μ:viscosity
ν:μ/ρ (mu:kinematic viscosity)
Simulation numerical parameters:
Nx: resolution of reference length
Ulb: top lid reference velocity
δt: physical value, (s), size of the time interval of one iteration
νlb: kinematica viscosity in lattice units
δx: physical quantity, (m), distance between two neighboring cells. = Lx/(Nx-1)