前言

接上次的博文,本篇补全以下几个函数的介绍:

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类探索(二)的更多相关文章

  1. JavaScript学习笔记-实例详解-类(二)

    实例详解-类(二)   //===给Object.prototype添加只读\不可枚举\不可配置的属性objectId(function(){ Object.defineProperty(Object ...

  2. php分页类的二种调用方法(转载)

    php分页类的二种调用方法 原文地址:http://www.xfcodes.com/php/fenye/25584.htm 导读:php分页类的二种调用用法,ajax调用php分页类,非ajax方式调 ...

  3. python中的类(二)

    python中的类(二) 六.类的成员 字段:普通字段,静态字段 eg: class Province(): country=’中国’ #静态字段,保存在类中,执行时可以通过类或对象访问 def __ ...

  4. java中的常用类(二)

    java中的常用类(二) Math类 Math类的声明:public final class Math extends Object Math类是与数学计算有关的类,里面的方法都是静态方法,直接使用类 ...

  5. 关于MapReduce中自定义带比较key类、比较器类(二)——初学者从源码查看其原理

    Job类 /**   * Define the comparator that controls    * how the keys are sorted before they   * are pa ...

  6. Python-面向对象(类)二

    一.成员修饰符 • 共有成员 • 私有成员 __+字段 __:成员修饰符 无法直接访问,只能通过该成员所属类的方法简介访问 class Foo: def __init__(self, name, ag ...

  7. Java 之 常用类(二)

    1.StringBuffer a.StringBuffer 与 String:①StringBuffer是一个全新的类型,与String没有继承关系 ②StringBuffer的出现是为了解决Stri ...

  8. Util应用程序框架公共操作类(十二):Lambda表达式公共操作类(三)

    今天在开发一个简单查询时,发现我的Lambda操作类的GetValue方法无法正确获取枚举类型值,以至查询结果错误. 我增加了几个单元测试来捕获错误,代码如下. /// <summary> ...

  9. 常用的Arrays类和二维数组以及二分法的介绍

    ---恢复内容开始--- 1.Array类 Array中包含了许多数组的常用操作,较为常见的有: (1)快速输出 import java.util.Arrays; public class Test{ ...

  10. Excel通用类工具(二)

    前言 上一篇中写到了用反射来处理类中的不用的属性,但是Excel的列名还得手动输入,这样还是比较麻烦的,今天这篇就利用自定义注解来解决手动传入列名的问题:其实很简单的,只需要在上一篇的基础上加一个类就 ...

随机推荐

  1. 【Shell案例】【awk map计数&sort按指定列排序】9、统计每个单词出现的个数

    描述写一个 bash脚本以统计一个文本文件 nowcoder.txt 中每个单词出现的个数. 为了简单起见,你可以假设:nowcoder.txt只包括小写字母和空格.每个单词只由小写字母组成.单词间由 ...

  2. 【Java SE】Day08 String类、static关键字、Arrays类、Math类

    一.String类 1.概述 所有双引号字符串,都是String类的对象 字符串常量,会存在字符串常量池中 2.创建 构造函数--空构造.字符数组.字节(byte ASCII码)数组 3.常用方法-- ...

  3. elasticsearch倒排索引(全面了解)

    SimpleAI推荐语: 前年转过这篇文章,最近在看检索相关论文,发现又有点忘记倒排索引(inverted index)的具体内容,遂翻出来再看看,不得不说,这个漫画画的太好了,娓娓道来,一看就懂,再 ...

  4. 实施 GitOps 的三个关键步骤

    GitOps 是一种自动化和管理基础架构和应用程序的模型,通过许多团队已经使用的相同 DevOps 最佳实践来形成的模型,例如版本控制.代码审查和 CI/CD 流水线.在实施 DevOps 时,我们找 ...

  5. 搭建漏洞环境及实战——在Windows系统中安装WAMP

    安装成功之后,打开显示 链接:https://pan.baidu.com/s/1NpU7fUYOO_CSM8dNXKdnCw 提取码:mxvw

  6. python之字典(dict)创建与使用

    字典(dict) 在其他语言中被称为哈希映射(hash map)或者相关数组,它是一种大小可变的键值对集,其中的key.value都是python对象. 特别注意: 1.字典中的key不能重复,key ...

  7. Pytorch 基本操作

    Pytorch 基础操作 主要是在读深度学习入门之PyTorch这本书记的笔记.强烈推荐这本书 1. 常用类numpy操作 torch.Tensor(numpy_tensor) torch.from_ ...

  8. 绿色版MySQL8.0.26安装流程

    下载  5.7 8.0 官网 https://dev.mysql.com/downloads/mysql/ 国内镜像网站 https://developer.aliyun.com/mirror/ ​  ...

  9. 【转载】SQL SERVER 将多行数据合并成一行

    昨天遇到一个SQL Server的问题:需要写一个储存过程来处理几个表中的数据,最后问题出在我想将一个表的一个列的多行内容拼接成一行 比如表中有两列数据 : ep_classes  ep_name A ...

  10. Kafka相关面试题及答案

    Kafka相关面试题及答案 1. Kafka中的ISR.AR又代表什么? ISR:与leader保持同步的follower集合 AR:分区的所有副本 2. Kafka中的HW.LEO等分别代表什么? ...