在我分析的一个构造函数中是以下方法:
if (validParOptions.found(optionName))
{
parRunControl_.runPar(argc, argv);
break; //leave loop
}
ParRunControl parRunControl_ //- Switch on/off parallel mode.
和
void runPar(int& argc, char**& argv)
{
RunPar = true; //bool RunPar;
if (!Pstream::init(argc, argv))
{
Info<< "Failed to start parallel run" << endl;
Pstream::exit(1);
}
}
此处
bool Foam::UPstream::init(int& argc, char**& argv) //Spawns slave processes and
{ //initialises inter-communication
FatalErrorIn("UPstream::init(int& argc, char**& argv)")
{
<< "Trying to use the dummy Pstream library." << nl
<< "This dummy library cannot be used in parallel mode"
<< Foam::exit(FatalError);
return false;
}
在第一个if条件中,检查commandlinearguments选项的存在,并且像最后一个方法的描述init
告诉应该生成一个从属进程
和初次沟通应该初始化。两个问题:
init
中的哪个进程产生了。相反,我只看到一个
方法中的错误消息。我错过了什么吗?问候直播
答案 0 :(得分:1)
我假设它是一个宏,因为it seems to have lots of different invocations。但是,错误消息正在盯着你:它不会让你使用该代码。 看看其他源文件:
它们具有空定义或包含notImplemented
。最重要的提示是它们都位于dummy
目录中。
我的猜测是你可能从错误的标题中拉出来。看看这个:
https://github.com/OpenFOAM/OpenFOAM-2.2.x/blob/master/src/Pstream/mpi/UPstream.C
它实际上有代码:
bool Foam::UPstream::init(int& argc, char**& argv)
{
MPI_Init(&argc, &argv);
int numprocs;
MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
MPI_Comm_rank(MPI_COMM_WORLD, &myProcNo_);
/* SNIP */
return true;
}