(2013-05-10 18:21)
该视频集中简明地介绍了LBM及其开源软件Palabos的应用和性能,希望通过此视频,为喜欢LBM的科研及工业界的朋友提供微不足道的帮助。(视频由Flowkit公司授权发布)外部链接
- LBM 基础知识及其理论框架;
- LBM 编程优势及其超大规模并行性能,CPU与GPU应用;
- 复杂流体应用:多相流应用、旋转几何体、湍流、最新大涡模拟模型应用、热流体应用、动脉瘤血凝应用、流体雾化等;
在Palabos开源应用库的支持下,您可以自由的开发自己的代码为科研和工业应用提供有效工具。同时,此开源库支持GPU开发,由此库可以实现廉价的大规模并行计算!请享视频
LBM: PalaBos几何及边界的定义
在PalaBos中有很多中边界条件的定义方法,其可针对平直的边界、网格相关的边界(也就是我们常说的计算是在真是的物理边界上执行的)。
一般情形下,有这么两种选择:基于Bounce-Back的阶梯逼近;高阶插值的曲线或曲面边界逼近。目前,
在1.0版本中,曲线或者曲面边界已经实现,可参考动脉瘤的例子(aneurysm)。
网格相关的边界条件:
1. 所使用的类:OnLatticeBoundaryConditionXD
(XD,中的X选取为2或3,针对于2维或3维)。
在边界的条件的执行中,有些是局部执行的,有些是非局部。局部执行方法在dynamics中直接实现,而非局部需要借助外部的数据处理方法来实现,比方:集成过程。PalaBos给我们提供一些接口,来帮助我们执行可能的方法。OnLatticeBoundaryConditionXD负责初始化dynamics对象,并添加数据处理机制。例如:Zou/He边界条件
OnLatticeBoundaryCondition3D<T,DESCRIPTOR>* boundaryCondition
=
createZouHeBoundaryCondition3D<T,DESCRIPTOR>();
这
使用方法:
如果不想修改源文件路径,可在examples中建立一个文件夹,然后将其他的示例中的Makefile和此文件加入,修改Makefile文件。即可编译运行!
//对3D液滴下落飞溅感兴趣的可使用如下示例程序
#include 'palabos3D.h'
#include 'palabos3D.hh'
#include <cstdlib>
#include <iostream>
using namespace plb;
using namespace std;
typedef double T;
//定义外力模型描述
#define DESCRIPTOR descriptors::ForcedShanChenD3Q19Descriptor
//初始化重流体(底部)和轻流体(上部)
template<typename T, template<typename U> class
Descriptor>
class DropInitializer : public
OneCellIndexedFunctional3D<T,Descriptor> {
public:
DropInitializer(plint ny_, plint radius_, Dot3D
center_, bool dropLayer_)
&
http://www.lbmethod.org/
PalaBos的是一款高效的流体模拟及其建模库,开发基于C++的STL(标准模板库),有极强的拓展性!尽管其源代码是开放,但是基于PalaBos的FlowKit公司已于2011年9月开始运营(http://www.flowkit.com/),主要为流体力学相关领域提供解决方案,并定制软件。主要的开发者为我的日内瓦朋友Jonas
Latt博士,另外一个重要开发成员Orestis博士也是我的合作者和好朋友,其主要的贡献在于湍流模型和多块加密的代码的开发。在版本1.0中,目前二维的多块加密是可用的,三维的曲面边界可用,需要提供stl几何文件(参:examples/showCases/aneurysm)。PalaBos的主要特点在于,其在并行结构上采取并行机制与模型分离的方式,使得应用建模与并行机制不相关。这也使得PalaBos的易于扩展。下面举例来说明其代码特点:
对于二维计算下面两个基本的文件必须包括
#include 'palabos2D.h'
#include 'palabos2D.hh'
#include <vector>
#include <cmath>
#include <iostream>
#include <fstream>
#include <iomanip>