Palabos程序代码解读(Code Explanation) | tutorial_2 | tutoria_2_4自动设置multiBlock

与Tutorial_2_2实现的区别

在Palabos tutorial里,2_2仅仅移除了11%的域,而2_4移除了45%。在2_4里,所有的流域都由15×15的小格子拼接,覆盖完半圆的管道。

图片来自Palabos Tutorial
图片来自Palabos Tutorial

与Tutorial_2_2代码的区别

在Tutorial_2_4中,多出了定义流体节点的模板类。


> template<typename T> class FluidNodes { public:
>     FluidNodes(plint N_, plint radius_) : N(N_), radius(radius_)
>     { }
>     bool operator() (plint iX, plint iY) const {
>         return ! BounceBackNodes<T>(N,radius)(iX,iY);//定义BounceBackNodes中非true部分为FluidNodes
>     } private:
>     plint N, radius; };

对应地后面也多出了利用flagMatrix来重新构建流域。


> MultiScalarField2D<int> flagMatrix(N+1, N/2+1);
>     setToFunction(flagMatrix, flagMatrix.getBoundingBox(), FluidNodes<T>(N, radius));//定义固体节点,液体节点。
>     plint blockSize = 15; //尺寸
>     plint envelopeWidth = 1;
>     MultiBlockManagement2D sparseBlockManagement =
>         computeSparseManagement (
>                 *plb::reparallelize(flagMatrix, blockSize,blockSize),
>                 envelopeWidth );
> 
>     // Instantiate the multi-block, based on the created block distribution and
>     // on default parameters.
>     MultiBlockLattice2D<T, DESCRIPTOR> lattice (
>         sparseBlockManagement,
>         defaultMultiBlockPolicy2D().getBlockCommunicator(),
>         defaultMultiBlockPolicy2D().getCombinedStatistics(),
>         defaultMultiBlockPolicy2D().getMultiCellAccess<T,DESCRIPTOR>(),
>         new BGKdynamics<T,DESCRIPTOR>(omega)
>     );

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值