CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM Programming & Development (
-   -   get position of interface and store it (

lindstroem June 7, 2011 10:46

get position of interface and store it
Hi all,

I am wondering if it might be possible to get and store the interface position to have it avaible for the next time step. The reason is that it would be interesting to have the distance the interface moved within one timestep. With this information the contact line velocity used in the dynamicAlphaContactAngle could be more precise as it is independent of the mesh.

I would be glad for any suggestions or comments.

Thank you!

Phicau June 8, 2011 12:27


you can try to store the alpha1 = 0.5 isosurface and then compare it. Just add the following code to the controlDict file. You can also change the surfaceFormat to raw (easier to read).


        type            surfaces;
        outputControl  outputTime;
        surfaceFormat  vtk;
                type        isoSurface;
                isoField    alpha1;
                isoValue    0.5;
                interpolate true;


lindstroem June 9, 2011 04:06

Thanks for the hint. So you mean that I then should read the output file from the dynamicAlphaContactAngle..C. Ok, I'll givr it a try and maybe come back with new questions :) thanks!

lindstroem June 9, 2011 10:37

Hi Phicau,

thanks again for your suggestion, it works actually as you said. Do you think it would be possible to get the data as an array e.g. within my C functions? Another problem is, that I only get these information at the timesteps i print out my data, but I need them for every timestep.
Thanks in advance!

Phicau June 9, 2011 11:10


yes, sorry for that, you can change the outputControl value to match your needs:

        outputControl  timeStep;
        outputInterval  1;

You should also include some code to purge old results, since raw ASCII files are usually very large if the case is big.

Reading the files will be easy, since the first line states the number of points and the second one states the format (x, y, z, alpha=0.5).

The most difficult part is to calculate the displacement between the surfaces, I hope someone can help you with that.

lindstroem June 9, 2011 11:33


Ok I get what you mean, so I delete all the results after getting my information except every 1e-05 step for example..
Yeah your right. After having the data from the timestep before I have the difficulty to compute the distance to the current timestep. So maybe I need sth like the 0.5 isosurface of the current timestep.. I'll think about that.

Thanks again!

lindstroem June 14, 2011 08:36

Hi again,

maybe someone can help me with that question again:
in the dynamicAlphaContactAngleFvPatchScalarField.C in the function Foam::dynamicAlphaContactAngleFvPatchScalarField:: theta we start by extracting some values

    const fvPatchVectorField& Up,
    const fvsPatchVectorField& nHat

where Up is the velocity in the center of a cell, if I get that right. Is it possible to extract in the same way the value of alpha1 of a cell? Something like:

const fvPatchScalarField& alpha1
scalarField alpha1wall = alpha1.patchInternalField();

As it is done for Uwall?!

Phicau June 14, 2011 10:41


I guess that might be possible, you can load the alpha field within the BC by:


    const volScalarField& alpha = db().lookupObject<volScalarField>("alpha1");

lindstroem June 14, 2011 10:53

Hi again ;)

thanks for your hint! Then I need to extract the values from the desired patch and delete the other lines.. Allright, I'll give that a try! That's similar to what andrea said. Thanks!

All times are GMT -4. The time now is 14:12.