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