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/)
-   -   OpenFoam data files (https://www.cfd-online.com/Forums/openfoam-post-processing/72630-openfoam-data-files.html)

chamoun February 12, 2010 07:47

OpenFoam data files
 
I would like to post-process OpenFoam velocity field data with Matlab. For this, I am going to use the 'points' file located in constant>polyMesh>points. I am also going to use a 'U' file. The points file containts more rows than the U file. I'm assuming this is the case because the points file contains the boundary points, while the U file does not. This presents a problem

Does anyone know what the correspondence is between these two data files? I need to know which points have which velocities, and which points are on the boundary, and which are in the interior of the boundary?

thanks!

ngj February 12, 2010 09:15

The points in OpenFoam are the the corners of any computational cell, e.g. a hex-cell is made out of 8 points. The velocity is computed in the cell centres of these computational cells, hence there should not be a direct correspondence.

Use the tool "writeCellCentres" to achieve the cell centres, which corresponds to those in the velocity file.

Best regards,

Niels

chamoun February 15, 2010 05:47

Thanks for the help. I looked up writeCellCentres.C in the documentation, but they don't have an example of how to enter it into the solver. Is this straightforward or more involved? Any help would be appreciated!

thank you

ngj February 15, 2010 06:56

You cannot make it a part of the solver, as it is a stand-alone postprocessing tool. Just type writeCellCentres in the command line when you have completed the computation, and the cell centres will be written to each time directory.

Type "writeCellCentres -help" if you are unsure how to use it.

Best regards,

Niels

chamoun February 15, 2010 07:53

Tak, Niels! :)

jeicek April 17, 2014 10:39

Hello Guys,

I typed writeCellCenters and it creates files in each time step with names of 'ccx ,ccy and ccz' but the strange thing is that the dimension of these ccx ccy ccz are only m or in other words their dimension is length and not the velocity also their values are not corresponding with U file!!!??? am I wrong?? do you have any idea? :confused:

alexeym April 17, 2014 10:51

Hi,

Units for coordinates of the centers of cells should be in meters. Why would they be in meters per second?

jeicek April 18, 2014 14:46

Hi Alexeym, then what are these 'ccx ,ccy and ccz' ?? Aren't they the velocity components in x,y and z directions in the cell center?!?!? if not then what are they?

jeicek April 18, 2014 14:47

Quote:

Originally Posted by alexeym (Post 486753)
Hi,

Units for coordinates of the centers of cells should be in meters. Why would they be in meters per second?

Hi Alexeym,then what are these 'ccx ,ccy and ccz' ?? Aren't they the velocity components in x,y and z directions in the cell center?!?!? if not then what are they?

alexeym April 18, 2014 15:33

Hi,

no, they are not. Reread the name of the utility - write cell centers. Look at the code of utility:

Code:

        for (direction i=0; i<vector::nComponents; i++)
        {
            volScalarField cci
            (
                IOobject
                (
                    "cc" + word(vector::componentNames[i]),
                    runTime.timeName(),
                    mesh,
                    IOobject::NO_READ,
                    IOobject::AUTO_WRITE
                ),
                mesh.C().component(i)
            );

            cci.write();
        }

mesh.C() is an array of cell centers (i.e. coordinates of cell centers).

If you'd like to get velocity components use foamCalc.

jeicek April 20, 2014 09:30

Thank you very much Alexym for clarifying, now it was cleared for me. :)

Elham March 10, 2016 01:29

coresponding coordination of gradient filed
 
Hi,

I want to know the coordinates of cell centres coresponding to Ug values. Ug is gradient of U that is created by calcFvcGrad. I have used writeCellCentres to have ccx, ccy and ccz. But the number of data that I have for them is a bit more than the number of data that I have for Ug; 515618 for coordinates and 503367 for gradient.

Anyone can help me to find the right coordinate for UGrad?

Thanks

pattim November 25, 2022 21:12

doesn't work
 
Hi Neils - I tried typing writeCellCentres at the linux command line (after sourcing the bashrc file for OF) and it doesn't exist. On a search, I found a directory named writeCellCentres in the subdir /usr/lib/openfoam/openfoam2112/src/functionObjects/field/ containing two files - a header and a C file. Do we have to rebuild all the utilities in that subdir before they can be used?


Please help! Thanks!

Code:

(base) patti@linux-lhkc:/OSS/Data_drive/users/00__OF_Combustion_2021-2023/n-Butane_100> setfoam
bash@OpenFoam >>> writeCellCentres -help
If 'writeCellCentres' is not a typo you can use command-not-found to lookup the package that contains it, like this:
    cnf writeCellCentres
bash@OpenFoam >>> ./writeCellCentres -help
bash: ./writeCellCentres: No such file or directory
bash@OpenFoam >>>

Quote:

Originally Posted by ngj (Post 246052)
You cannot make it a part of the solver, as it is a stand-alone postprocessing tool. Just type writeCellCentres in the command line when you have completed the computation, and the cell centres will be written to each time directory.

Type "writeCellCentres -help" if you are unsure how to use it.

Best regards,

Niels


Krapf November 26, 2022 05:18

In the current versions of OpenFOAM it is no longer a stand-alone application, but a function object: OpenFOAM 10, OpenFOAM v2112.

pattim November 26, 2022 14:42

Thank you very much for the reply, Krapf. I thought it might be a version difference. So now I'm not sure how to use writeCellCentres in my runs. (I guess I only need it to run once)

Do I put this code example, for instance, in controDict or some other OF run file? BTW: the API guide for v2112

Code:

Usage
    Minimal example by using system/controlDict.functions:

    writeCellCentres
    {
        // Mandatory entries (unmodifiable)
        type        writeCellCentres;
        libs        (fieldFunctionObjects);

        // Optional (inherited) entries
        ...
    }

The API guide for v2112 also lists...

Minimal example by using the postProcess utility:
postProcess -func writeCellCentres

This runs with some OF screen output - but I didn't see any outputs... Hmmm,maybe I need to "reconstruct" the (parallel) case first... (runApplication -append reconstructPar)


Quote:

Originally Posted by Krapf (Post 840062)
In the current versions of OpenFOAM it is no longer a stand-alone application, but a function object: OpenFOAM 10, OpenFOAM v2112.


pattim December 7, 2022 15:03

help with conversion?
 
Thank you very much - I was able to create files, but I'm not sure how to read them. They are, like the raw datafiles, mixtures of ASCII and what appears to be (compressed?) binary data. Is there a utility to convert the data to ASCII for easy reading? (I don't see such an option in postProcess -func writeCellCentres -help-full) I was able to export the written cell center data to ASCII (as ".csv" files) using paraFoam - but I was just wondering if there was a specific OF command I'm not finding.


Thanks,
PattiM

Edit: I was able to load the output of writeCellCenters into paraFoam and to write them to CSV files from paraFoam - the but number of points output by paraFoam is 12,283 points, whereas my 2D solution is on 48x126 = 6,048cells. This may arise because I'm exporting from paraFoam. Isn't there a way to output a flat acsii data file directly from OpenFoam that can be to imported into matlab/python/etc.? Anyone?


Edit2: The final fix was to use the python package "openfoamparser" - no issues with formats, etc.



All times are GMT -4. The time now is 13:23.