Palabos程序示例:boolMask应用:如何导入二值化图片至流场

最终效果

在这里插入图片描述

图片预处理
PS类软件

这里生成的画布为300×900,在中间输入文字后,保存为1.png。
在这里插入图片描述

Matlab二值化处理
clear
clc
// Here the size of 1.png is 300*900 
A=imread('1.png');  
thresh=graythresh(A)
B=im2bw(A,thresh);
B=flipud(B);//垂直翻转
B=rot90(B,3);
C=~B;
imshow(C);
dlmwrite('1.dat',C,'delimiter',' ');

其中元素以空格为分隔符输出保存在1.dat里。

Palabos输入
MultiScalarField2D<bool> boolMask(parameters.getNx(), parameters.getNy());
    plb_ifstream ifile("1.dat");
    ifile >> boolMask;
    defineDynamics(lattice, boolMask, new BounceBack<T,DESCRIPTOR>, true);

核心代码如上,由于输入dat文件数据时,Palabos逐行读取dat文件的行,然后写入Palabos的列,所以上面的m文件有一个旋转的操作,就是为了让图片的列对应上Palabos的列。最后设置为反弹格子。

由于图片尺寸为300×900,所以在cpp文档中流场的尺寸也该对应设置为300×900,。

IncomprFlowParam<T> parameters (
        (T) 1e-2,  // uMax
        (T) 300.,  // Re
        299,        // N y轴方向的像素点数
        3.,        // lx 即3×N
        1.         // ly 即1×N
    );
//Poiseuille流的解释可以去下面这个网址看:
//https://github.com/Yulan-Fang/PalabosCodeExplanation/blob/master/tutorial_1/tutorial_1_5.cpp

示例代码网址:
https://github.com/Yulan-Fang/SampleCodesofPalabos/tree/master/BoolMask

该文件夹的loadGeometry.cpp主要基于palabos/examples内的tutorial_1_5和loadGeometry来改写。用于示范如何导入二值化的图片至流域中。
流场为Poiseuille流。
你需要添加makefile,以及include路径和tmp文件夹用于输出。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值