前言

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

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. Kettle基础及快速入门

    (一)概述 1.ETL ETL(Extract-Transform-Load的缩写,即数据抽取.转换.装载的过程) ETL工具:Sqoop,DataX,Kettle,Talend等 2.Kettle介 ...

  2. Java的两大、三类代理模式

    简述 代理,是一种设计模式,主要作用是为其他对象提供一种代理,以控制对这个对象的访问.在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 主要分 ...

  3. view-design tabpane禁用后renderHeader失效问题

    需求是这样的 在tabPane的renderHeader里面添加hover事件(使用组件自带的Poptip)能显示提示 其实这个不算是问题,设置disabled属性后,原本的元素上面添加了 ivu-t ...

  4. Django静态文件配置(from表单-request对象方法-get请求与post请求-视图函数书写)

    目录 一:静态文件配置 1.静态文件配置 2.什么是静态文件? 3.静态文件的创建 4.解决使用django后端代码修改前端不显示(缓存问题) 5.settings.py 静态文件配置 6.静态文接口 ...

  5. 手写promise解决回调地狱问题

    在介绍promise之前我们先来看一段代码: 根据案例我们可以看出,这段代码可以无限的嵌套下去,但是每嵌套一层,代码的运行就会降低,而解决回调地狱最好的办法就是new promise 一.什么是 pr ...

  6. 4、Idea设置显示多行文件

    使用IDEA时,可能会没有注意到,一旦打开过多的Java文件时,默认会堆积在一行显示,就像浏览器打开了多个标签一样,此时需要通过右侧箭头筛选的方式来选择其他文件.为了解决这一问题,需要打开多行显示的方 ...

  7. [数学理论] NP问题解释

    转载自http://m.blog.csdn.net/csshuke/article/details/74909562 希望通过这篇文章可以不仅让计算机相关专业的人可以看懂和区分什么是P类问题什么是NP ...

  8. Redis-02 Redis 类型

    Redis List 命令 说明 例子 LPush 在 List 头插入一个或多个元素 LPush mylist hello RPush 在 List 尾插入一个或多个元素 RPush mylist ...

  9. curl请求https报错

    curl 一般情况下请求http时不会有问题 但是请求 https 协议的链接时会报错,如下: curl: (60) SSL certificate problem: unable to get lo ...

  10. NW js 打包入门教程

    NW js 打包入门教程 NW.JS的安装与打包_u013288292的博客-CSDN博客_nwjs打包