边界条件write函数触发
-
-
@supersoldier 通过求解器里面的
runTime.write()
触发,runTime.write()
将调用Foam::Time::write()
向磁盘写入所有注册对象。 -
@wwzhao 嗯,我调试了一下,确实向您说的是runTime.write()这个函数触发的。我用Info输出了一下os发现是数字1,按理说是写到一个文件里,但运行后,case目录下并没有输出相关文件。在想是不是要在etc目录下的controlDict中设置一下DebugSwitches开关,不过还是没成功。这个函数的输出可以改成Info输出,显示一些信息,但是很想知道这个函数的输出是怎么回事。
-
@supersoldier 你是不是搞错了,
Info<<
是向终端输出,向文件输出的对应语句是os <<
。 -
@wwzhao Info<<os<<endl; 是我自己写的,是输出到终端,现在想知道os.writeKeyword("neighbourFieldName")<< neighbourFieldName_
<< token::END_STATEMENT << nl;是输出到什么地方去了。 -
现在想知道os.writeKeyword(“neighbourFieldName”)<< neighbourFieldName_
<< token::END_STATEMENT << nl;是输出到什么地方去了。这个输出到相应的
GeometricField
的边界当中了。这么说你可能不大明白,举个例子,比如你的计算域有个边界名为
solid
,温度场T
在这个边界上的边界条件为fluidSolidCombustionTemperature
,那么这个os.writeKeyword
函数将把内容输出到每个时间步的T
文件里面的boundaryField
里面,类似这样:boundaryField { ... solid { type fluidSolidCombustionTemperature; neighbourFieldName T; kappa xxx; } ... }
-
@wwzhao 嗯 看了一下好像是这样,谢谢解答:happy:
-
@wwzhao 再请教一个问题,您是怎么知道这个输出的位置或是这个函数的原理的,我一开始通过输出、调试这个函数并没有搞懂它是怎么回事。很想知道您当时是通过什么途径来弄清楚的? 感觉好多OpenFOAM的函数分析起来不是很好弄清楚,可能是我对OpenFOAM的原理和C++理解掌握的还不够:sad:
-
@supersoldier OpenFOAM大量使用了C++面向对象的设计思想,不能用一般面向过程的编程思维去阅读代码。了解面向过程的设计思想有助于去理解OpenFOAM的框架和具体实现。
3/9