CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM Programming & Development (
-   -   Write scalar in file in every timeFolder (

RugbyGandalf September 19, 2013 09:48

Write scalar in file in every timeFolder
Dear Foam-Community,

i'd like to calculate the surface-area of the inlet-patch for a moving domain for every time step and write out the calculated value in a file in each time-folder.

For now i have the following code:


label inletPatchID = mesh.boundaryMesh().findPatchID("inlet");
    std::ofstream file("inlet_area.txt");
    file << gSum(mesh.magSf().boundaryField()[inletPatchID]) << std::endl;

But it only gives out a file in the case-directory (and overwrites it???)

Does anyone has any idea how to solve this?


Bernhard September 19, 2013 11:03

You will have to change the filename, something like this?

std::ofstream file(runTime.timeName(),"inlet_area.txt");
(This will probably not work due to string concatenation)

You also have alternative solutions
- Write to logfile (Info<<) and extract data afterwards from the log file (awk)
- Use a function object. functionObjects run during run time. I am not sure if you can do this with the default ones, but with the swak functionObjects by Bernhard Gschaider you can obtain this information easily for sure.

RugbyGandalf September 20, 2013 08:29

Dear Bernhard,

thank you very much for your answer.
Unfortunately your hint did not work for me. The wmake-compiler gives out the following error:
CarreauYasudaIcoFoam.C:91:59: error: no suitable function for calling »std::basic_ofstream<char>::basic_ofstream(Foam::w ord, const char [15])«

the log-file hint migth work, although i'd really like to add it in the code.


Bernhard September 20, 2013 08:37

The string concatenation is something I am not to sure about, this is something to dig into, maybe you could use something like "runTime.timeName().string()", but you wil have to experiment a bit.

All times are GMT -4. The time now is 10:49.