OF文件读写
-
一直没找到如何用OF进行文件读写,目标是在计算的过程中,把某一个scalar数输出到一个文本里面(例如叫 result.txt),似乎IOdictionary可以做到,但是不知道具体如何实现,请问大家有没有类似的代码参考一下。是输出到同一个文本里面,例如result.txt最终包含数据为:
1 5 7 45 78288 12554
-
再解释一下,例如我有一个scalar F, F是随计算变化的,而我想知道F随时间的变化规律,所以需要对F进行输出。为了方便以后数据处理,希望把F的值输出到同一个文本文件里面。
-
还有个问题是,OFstream能否像runTime.write()一样受到controlDict里面的输出间隔限制呢?目的主要是为了和runTime.write()对应,因为runTime.write()可能是每隔5个时间步长输出一次的,所以我想OFstream也是每隔五个时间步写入一次。
有没有某个函数能判断当前time是否需要write()呢? -
找到了
if(runTime.writeTime())
如果当前时间是需要写入的时间则会返回true
-
#include "fvCFD.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // class proxyWriter : public regIOobject { private: scalar value_; proxyWriter(const proxyWriter&) = delete; void operator=(const proxyWriter&) = delete; public: proxyWriter(const IOobject& io, const scalar& value) : regIOobject(io), value_(value) { } virtual bool writeData(Ostream& os) const { os<<value_; return os.good(); } proxyWriter& operator++() { ++value_; return *this; } }; int main(int argc, char *argv[]) { #include "setRootCaseLists.H" #include "createTime.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // proxyWriter writer ( IOobject ( "value", runTime.timeName(), runTime, IOobject::NO_READ, IOobject::AUTO_WRITE ), 0. ); Info<< "\nStarting time loop\n" << endl; while (runTime.loop()) { Info<< "Time = " << runTime.timeName() << nl << endl; ++writer; runTime.write(); runTime.printExecutionTime(Info); } Info<< "End\n" << endl; return 0; } :chigua: -
您好,我也有一些关于of 读写的问题,您可以给一个联系方式吗?咱们仔细交流一下,谢谢
-
您好,我目前对 源程序 添加了读写IOobject代码,但编译存在一定问题,您可以指点一下吗?谢谢,帖子如下:
http://www.cfd-china.com/topic/3329/湍流模型里面如何输出动态系数/2 -
#include "fvCFD.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // class proxyWriter : public regIOobject { private: scalar value_; proxyWriter(const proxyWriter&) = delete; void operator=(const proxyWriter&) = delete; public: proxyWriter(const IOobject& io, const scalar& value) : regIOobject(io), value_(value) { } virtual bool writeData(Ostream& os) const { os<<value_; return os.good(); } proxyWriter& operator++() { ++value_; return *this; } }; int main(int argc, char *argv[]) { #include "setRootCaseLists.H" #include "createTime.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // proxyWriter writer ( IOobject ( "value", runTime.timeName(), runTime, IOobject::NO_READ, IOobject::AUTO_WRITE ), 0. ); Info<< "\nStarting time loop\n" << endl; while (runTime.loop()) { Info<< "Time = " << runTime.timeName() << nl << endl; ++writer; runTime.write(); runTime.printExecutionTime(Info); } Info<< "End\n" << endl; return 0; } :chigua: @马乔 @Samuel-Tu 请问这个怎么用?这是重新编译一个lib然后link到controlDict吗?那怎么知道是在这一步的什么时候输出?是计算前还是计算后?
2020年1月7日 02:58
4/12
2020年2月8日 23:17