openfoam UPstream类探索(二)
前言
接上次的博文,本篇补全以下几个函数的介绍:
Pstream::nProcs()
Pstream::parRun()
UPstream::exit()
简述几个常用的函数如下:
Pstream::nProcs()
openfoam对其的介绍是:
Number of processes in parallel run.
//- Number of processes in parallel run
static label nProcs(const label communicator = 0)
{
return procIDs_[communicator].size();
}
Foam::DynamicList<int> Foam::UPstream::myProcNo_(10);
//- List of process IDs
static DynamicList<List<int>> procIDs_;
Pstream::nProcs()与上篇我们介绍的函数Pstream::myProcNo()非常相似,
Pstream::nProcs()的介绍是Number of processes in parallel run
Pstream::myProcNo()的介绍是Number of this process (starting from masterNo() = 0)
按照这个程序释义来说,Pstream::nProcs()返回的是并行计算中进程的数量,而Pstream::myProcNo()返回的是从主节点开始该进程的数量
我这英语水平不大行,没看懂其中区别,继续从源码中寻找答案
看看两个静态成员函数的返回值
Pstream::nProcs()的返回值是procIDs_[communicator].size(),Pstream::myProcNo()的返回值是myProcNo_[communicator]
procIDs_与myProcNo_的定义分别是
//- List of process IDs
static DynamicList<List<int>> procIDs_;
//- My processor number
static DynamicList<int> myProcNo_;
单单从成份上看,procIDs_装载的是List< int >,而myProcNo_装载的只是int
从这个角度也更能解释他们的程序注释,Pstream::nProcs()返回的是包含列表的动态列表,Pstream::myProcNo()返回的仅仅是一个int类型的动态列表
后续遇到再结合程序案例进行分析
Pstream::parRun()
openfoam对其的介绍非常明确了
//- Is this a parallel run?
static bool& parRun()
{
return parRun_;
}
返回的是布尔型判断,默认值是false
而且返回值是引用类型,说明可以在程序运行时随时更改
bool Foam::UPstream::parRun_(false);
所以这句话也经常在判断语句中使用,如:
if (nProcs == 0)
{
parRun_ = false;
statement();
}
这段语句说明如果是在主节点运行,我这个标识符就置为false
当然也这样使用
if (doPstream && parRun())//并行处理前的判定
{
statement();
}
Pstream::exit()
这个可以参考该链接
之所以用exit()函数,因为他是强制关闭,类似正在开机的电脑长摁电源键几秒
结语
后续如果遇到并行计算需要的函数或者不理解其中原理,我认为可以按照我的方法刨根问底,可能前十次的速度很慢,但好事多磨,这两篇文章更重要的是说明学习openfoam的方法
of的学习曲线就是开始很缓慢后续很陡峭,没办法,该花的时间要花的
修行在个人,修行在个人
一起探索openfoam也是相当有趣的一件事,非常欢迎私信讨论
指正的价值要比打赏更重要,下面是个人联系方式,希望能结交到志同道合的朋友

openfoam UPstream类探索(二)的更多相关文章
- JavaScript学习笔记-实例详解-类(二)
实例详解-类(二) //===给Object.prototype添加只读\不可枚举\不可配置的属性objectId(function(){ Object.defineProperty(Object ...
- php分页类的二种调用方法(转载)
php分页类的二种调用方法 原文地址:http://www.xfcodes.com/php/fenye/25584.htm 导读:php分页类的二种调用用法,ajax调用php分页类,非ajax方式调 ...
- python中的类(二)
python中的类(二) 六.类的成员 字段:普通字段,静态字段 eg: class Province(): country=’中国’ #静态字段,保存在类中,执行时可以通过类或对象访问 def __ ...
- java中的常用类(二)
java中的常用类(二) Math类 Math类的声明:public final class Math extends Object Math类是与数学计算有关的类,里面的方法都是静态方法,直接使用类 ...
- 关于MapReduce中自定义带比较key类、比较器类(二)——初学者从源码查看其原理
Job类 /** * Define the comparator that controls * how the keys are sorted before they * are pa ...
- Python-面向对象(类)二
一.成员修饰符 • 共有成员 • 私有成员 __+字段 __:成员修饰符 无法直接访问,只能通过该成员所属类的方法简介访问 class Foo: def __init__(self, name, ag ...
- Java 之 常用类(二)
1.StringBuffer a.StringBuffer 与 String:①StringBuffer是一个全新的类型,与String没有继承关系 ②StringBuffer的出现是为了解决Stri ...
- Util应用程序框架公共操作类(十二):Lambda表达式公共操作类(三)
今天在开发一个简单查询时,发现我的Lambda操作类的GetValue方法无法正确获取枚举类型值,以至查询结果错误. 我增加了几个单元测试来捕获错误,代码如下. /// <summary> ...
- 常用的Arrays类和二维数组以及二分法的介绍
---恢复内容开始--- 1.Array类 Array中包含了许多数组的常用操作,较为常见的有: (1)快速输出 import java.util.Arrays; public class Test{ ...
- Excel通用类工具(二)
前言 上一篇中写到了用反射来处理类中的不用的属性,但是Excel的列名还得手动输入,这样还是比较麻烦的,今天这篇就利用自定义注解来解决手动传入列名的问题:其实很简单的,只需要在上一篇的基础上加一个类就 ...
随机推荐
- 【Shell案例】【awk map计数&sort按指定列排序】9、统计每个单词出现的个数
描述写一个 bash脚本以统计一个文本文件 nowcoder.txt 中每个单词出现的个数. 为了简单起见,你可以假设:nowcoder.txt只包括小写字母和空格.每个单词只由小写字母组成.单词间由 ...
- 【Java SE】Day08 String类、static关键字、Arrays类、Math类
一.String类 1.概述 所有双引号字符串,都是String类的对象 字符串常量,会存在字符串常量池中 2.创建 构造函数--空构造.字符数组.字节(byte ASCII码)数组 3.常用方法-- ...
- elasticsearch倒排索引(全面了解)
SimpleAI推荐语: 前年转过这篇文章,最近在看检索相关论文,发现又有点忘记倒排索引(inverted index)的具体内容,遂翻出来再看看,不得不说,这个漫画画的太好了,娓娓道来,一看就懂,再 ...
- 实施 GitOps 的三个关键步骤
GitOps 是一种自动化和管理基础架构和应用程序的模型,通过许多团队已经使用的相同 DevOps 最佳实践来形成的模型,例如版本控制.代码审查和 CI/CD 流水线.在实施 DevOps 时,我们找 ...
- 搭建漏洞环境及实战——在Windows系统中安装WAMP
安装成功之后,打开显示 链接:https://pan.baidu.com/s/1NpU7fUYOO_CSM8dNXKdnCw 提取码:mxvw
- python之字典(dict)创建与使用
字典(dict) 在其他语言中被称为哈希映射(hash map)或者相关数组,它是一种大小可变的键值对集,其中的key.value都是python对象. 特别注意: 1.字典中的key不能重复,key ...
- Pytorch 基本操作
Pytorch 基础操作 主要是在读深度学习入门之PyTorch这本书记的笔记.强烈推荐这本书 1. 常用类numpy操作 torch.Tensor(numpy_tensor) torch.from_ ...
- 绿色版MySQL8.0.26安装流程
下载 5.7 8.0 官网 https://dev.mysql.com/downloads/mysql/ 国内镜像网站 https://developer.aliyun.com/mirror/ ...
- 【转载】SQL SERVER 将多行数据合并成一行
昨天遇到一个SQL Server的问题:需要写一个储存过程来处理几个表中的数据,最后问题出在我想将一个表的一个列的多行内容拼接成一行 比如表中有两列数据 : ep_classes ep_name A ...
- Kafka相关面试题及答案
Kafka相关面试题及答案 1. Kafka中的ISR.AR又代表什么? ISR:与leader保持同步的follower集合 AR:分区的所有副本 2. Kafka中的HW.LEO等分别代表什么? ...