Palabos User Guide中文解读 | 第十二章 | 数据评估

作者的话:本人在学习palabos时,发现国内中文资料甚少,恰好网上可以直接搜到palabos user guide这种英文资料,加之时间充裕,便打算开始翻译,翻了一节后发现这可能算侵权,就比较伤脑筋,突然想到自己写中文解读即可,便有了下面的博客。

Palabos User Guide
Release 1.0 r1
Copyright © 2019 University of Geneva
Jul 05, 2019

Chapter Twelve
数据评估
12.1 概览

在19.2节附录(数据分析等的不变值算子操作(主要讲预设的block-lattice内的不变值用于数据后处理))中,有很多用于转换数据的palabos代码。

当我们运行完程序后,接下来就到了处理数据的环节,我们可能会用到一些标准的后处理工具,所以我们需要转换一下数据。

本节会涉及到 computeVelocity 函数。可用于2D和3D中的atomic-blocks与multi-blocks。

下面是3D的例子:

// Version 1
void computeVelocity(MultiBlockLattice3D<T,Descriptor>& lattice,
MultiTensorField3D<T,Descriptor< T>::d>& velocity, Box3D domain);
// Version 2
std::unique_ptr<MultiTensorField3D<T,3> >
computeVelocity(MultiBlockLattice3D<T,Descriptor>& lattice, Box3D domain);
// Version 3
std::unique_ptr<MultiTensorField3D<T,3> >
computeVelocity(MultiBlockLattice3D<T,Descriptor>& lattice);

上面的version1,速度是在block-lattice的子域被计算的,得到的结果对应的是3个元素的张量场的子域。
其中block-lattice和张量场无需拥有相同的尺寸,也不需要有相同的内部区块安排。如果两者之一的域超过了另一个的尺寸,域会自动相应地切对齐。

version2中的代码更加常用,会自动生成一个与上面代码中的domain尺寸相同的张量场。这里用到的是C++标准库的指针功能。
当你使用std::unique_ptr<MultiTensorField3D<T,3> >,就如同使用 MultiTensorField3D<T,3>*一样。区别在于自动指针有着自动内存管理的机制,把你从用完后还需要delete中解放出来。

下面是个典型的使用computeVelocity的例子:

pcout << *computeVelocity(lattice, domain) << endl;

如果你使用了这行代码,计算结果会立刻出现在终端屏幕上。代码前的星号是为了区分出别的速度域的指针。在程序末行,速度域的内存会自动被处理,无需再消除。

version3中因为domain语句为整个lattice的区域,即lattice.getBoundingBox(),就非常的方便。

12.2 输出数据评估算子

computeVelocity函数得到的值可以直接用于别的数据处理操作。由此代码可以写的比较复杂,例如,在之前节中提到的computeAverage函数可以被一个速度场的计算来替代(计算速度,将其值代入计算范数平方{normsquare},除以2,得到平均动能):

pcout << "The value " << *computeAverageEnergy(lattice) << " is the same as " << computeAverage (
*multiply ( 0.5, *computeNormSqr (
*computeVelocity(lattice) ) ) )
<< endl;

在附录19章(部分函数和类的参考)列出了这个例子涉及的所有函数。更多的数据分析,标量场构建以及数据分析算子的结合计算都在examples/codesByTopic/scalarField目录下。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值