CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Post-Processing (https://www.cfd-online.com/Forums/openfoam-post-processing/)
-   -   Change file and directory output structure for OpenFOAM (https://www.cfd-online.com/Forums/openfoam-post-processing/160930-change-file-directory-output-structure-openfoam.html)

ThuliumC October 15, 2015 17:26

Change file and directory output structure for OpenFOAM
 
Hello

I would like to have the output of OpenFOAM files and directories modified and I don't know where to get started.
The solver used for the cases is a settMixingFoam, a modified version of twoLiquidMixingFoam.
The file structure I would like to have is binary volScalarField with no header and no trailer for all fields. And the directory structure I wold like to have is one directory per field, one file per time (not one directory per time, one file per field; as is the default); all inside another directory (e.g. data). For example, the file "$FOAM_RUN/case/14/alpha1" could be "$FOAM_RUN/case/data/alpha1/014".

So I wold like to know:
Is it reasonable to write the directories in this format or is it preferable to change the structure after the case is run?
Is it possible to write and read the velocity field U (volVectorField) as Ux, Uy, Uz (volScalarField)? I believe modifying the files after the case is run would have a significant cost for processing and data storage.
Is it reasonable to write and read binary files without the header and trailer or is it preferable to remove the headers and trailers after the case is run? I believe it would be better to write the files with no headers and trailers, as this could take a significant time to write.
How do I remove the headers and trailers from binary files? I have a case that was already run and I need to do the post processing now.

Thank you


Here is an example of the header I refer to:
Code:

/*--------------------------------*- C++ -*----------------------------------*\
| =========                |                                                |
| \\      /  F ield        | OpenFOAM: The Open Source CFD Toolbox          |
|  \\    /  O peration    | Version:  2.2.2                                |
|  \\  /    A nd          | Web:      www.OpenFOAM.org                      |
|    \\/    M anipulation  |                                                |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version    2.0;
    format      binary;
    class      volScalarField;
    location    "6";
    object      alpha1;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

dimensions      [0 0 0 0 0 0 0];

internalField  nonuniform List<scalar>
1182465
("

Here is an example of the trailer I refer to:
Code:

        valueExpression "0";
        gradientExpression "alpha1*Res";
        fractionExpression "0";
        evaluateDuringConstruction 0;
        variables      "Res=-1600;";
        timelines      (
);
        lookuptables    (
);
    }
    frontBack
    {
        type            empty;
    }
}


// ************************************************************************* //


KingKraut November 26, 2015 09:07

Dear ThuliumC,

have you managed to solve your problem or gotten an idea how to tackle the issue?
I have a similar problem concerning the file output. In order to reduce the ouput file number of a simulated case I would like to write just one output file for each field which combines all timesteps of the simulated case.
Since we are both interested in manipulating the output format of an OpenFOAM case I think our approaches could be similar.
I would be glad if you let me know how you approached the problem and for any advice you could give me!
Thank you very much in advance for any help.

Best regards
Johannes

ThuliumC December 10, 2015 16:43

Johannes,

Sadly, I have not yet managed to solve this issue and do not know the best way to tackle it.
Indeed, I believe our approaches could be similar. As soon as I have any advice to you, I will let you know, and please let me know of any advice you may have.
Thanks for replying.

Túlio A. C.

rushs777 July 1, 2016 10:19

Particular interest in having all time folders stored in a single "data" folder
 
I was wondering if y'all had been able to come up with a method for having OF store all of the individual time directories into a "data" folder?

KingKraut July 19, 2016 03:40

Dear rushs777, sorry, no news on this...
at least as far as I am concerned...

m0nzderr August 4, 2021 14:14

As far as I can see from the codebase, the field data storage/retrieval is provided by the object registry. In particular, the Time class implementation
looks responsible for a final layout of time-based files:
(https://www.openfoam.com/documentati...8H_source.html)
```
//- Return path
fileName path() const
{
return rootPath()/caseName();
}

//- Return read access to the controlDict dictionary
const dictionary& controlDict() const
{
return controlDict_;
}

virtual const fileName& dbDir() const
{
return fileName::null;
}

//- Return current time path
fileName timePath() const
{
return path()/timeName();
}

```

Since there is no (evident to me) configurable parameters for changing the this directory structure, the only way to tackle this would be though building your own modification of either the OF or the a solver application that uses a a modified Time class implementation.

- BTW, being able to relay time-data to an arbitrary location somewhere outside the project dir would be a great feature (without recompiling the whole codebase). Maybe it's worth a feature request...

Tobermory August 25, 2021 07:32

The simplest way, surely, is to just write a shell script that is executed after the run and which reformats the directory structure as you wish. eg moves data files to some other folder. I would not try to update OF itself to write out in a different structure ... that seems to be asking for trouble.

For adjusting headers, again you can write shell scripts to reprocess those as well.

m0nzderr August 31, 2021 09:29

Quote:

Originally Posted by Tobermory (Post 810952)
The simplest way, surely, is to just write a shell script that is executed after the run and which reformats the directory structure as you wish. eg moves data files to some other folder.

- Not applicable for my scenario, I need a different layout while the case is running as well. The main goal here to separate the sources from data (by telling OF where to look for data, instead of telling where to look for sources).

Quote:

Originally Posted by Tobermory (Post 810952)
I would not try to update OF itself to write out in a different structure ... that seems to be asking for trouble.

- That depends available skills and the size of the trouble you already into ;) Being able to change things is the one of the greatest advantages of the *Open*FOAM.

snak August 31, 2021 23:39

How about creating symbolic links to data files and directories. You can arrange the files and directories as you like, aren't you?

m0nzderr September 10, 2021 10:46

Quote:

Originally Posted by snak (Post 811380)
How about creating symbolic links to data files and directories. You can arrange the files and directories as you like, aren't you?

- Yes, symlinks will do just fine in many scenarios! But not ideal for our production workflow, mostly due to the OS limitations and "fragility" when used across different network storage/filesystems and OSs.


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