CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM Running, Solving & CFD (
-   -   interFoam fvSchemes for Convection Equation (

carowjp February 7, 2012 23:29

interFoam fvSchemes for Convection Equation
2 Attachment(s)
I have been implementing a solver for one phase of fluid and a second phase of viscoelastic solid based on interFoam. The constitutive equation for the solid depends on the left Cauchy-Green deformation tensor (B) which is calculated by an equation (similar to an upper convective derivative):


  gradU = fvc::grad(U);
  L = gradU.T();

  fvSymmTensorMatrix BEqn
    + fvm::div(phi, B)
    twoSymm(B & L)

As a test case I am solving a lid drive cavity case with a viscoelastic solid disk as the second phase. The fluid velocities and behavior seems correct however I am observing 'ripples' on the surface of the disk which seem artificial (please see the attached). The solid also orbits around the cavity faster than the benchmark.

I suspect numerical diffusion from the upwind differencing scheme used in the solution of BEqn.

Sorry for the discourse but can anyone suggest alternative schemes or PISO settings which might improve this?

I am using the following:


    default        none;
    div(rho*phi,U)  Gauss limitedLinearV 1;
    div(phi,alpha)  Gauss vanLeer;
    div(phirb,alpha) Gauss interfaceCompression;
    div(phi,B) Gauss upwind;



    momentumPredictor yes;
    nCorrectors    3;
    nNonOrthogonalCorrectors 0;
    nAlphaCorr      1;
    nAlphaSubCycles 2;
    cAlpha          2;

thank you,


akidess February 8, 2012 04:06

I don't know about your specific case, but if you want to limit numerical diffusion MUSCL and SuperBee schemes work quite well.

carowjp April 19, 2012 23:17

'Wiggles' and 'Wrinkles'
Thanks for the input on the convection schemes. I can run with UMIST and SFCD applied to the convection term in the equation above but QUICK, MUSCL, and SuperBee lead to segmentation faults. :eek:

Since then I've learned the issue shown in the attached images wasn't numerical diffusion, although maintaining a sharp interface is always a good thing.

I am still looking for an explanation for the presence of the artificial 'wiggles' or 'wrinkles' which appear on the interface using interFoam's interfaceCompression scheme and a non-zero value for cAlpha.

If you have a look at a nice comparison of VOF methods in:

Gopala, V. R., & van Wachem, B. G. M. (2008). Volume of fluid methods for immiscible-fluid and free-surface flows. Chemical Engineering Journal, 141(1-3), 204-221. doi:10.1016/j.cej.2007.12.035

You will see the same artificial wiggles present in the results of their simulations performed with interFoam, though there is no specific mention of this issue.

In my cases there were no forces due to surface tension and I believe that such forces stabilize the interface an counteract the artificial distortion. Does Weller's scheme used in interFoam depend on the presence of surface tension?

thanks and regards,


akidess April 23, 2012 08:42

Section 4.2 of this paper mentioned grid-alignment of the interface:

It looks like the only thing you can do is reduce the time step.

bcgooder July 15, 2013 15:51

I've also been trying to use the left-cauchy green tensor in a new solver with this code.

I was just wondering what you used for your boundary and initial conditions for B??

carowjp July 15, 2013 16:08

BC and IC's for B

I used the initial conditions B=I, identity since the body was initially undeformed, and I used zeroGradient conditions for the BC's.

If you are advecting the tensor B you will likely face the challenge of diffusion based on the convection schemes I mentioned in this post.

I ended up having best success with the using the CICSAM scheme (available in OF extend version ShipHydroSIG) for advecting the scalar field alpha.

Curious to know what you are working on.



bcgooder July 15, 2013 16:36

I'm actually working on a viscoelastic fluid model for blood where the left-cauchy tensor is needed for the stress constitutive equation.

I'm still not entirely sure if this method for finding B will work in my case but I was planning to test it out as a first try.

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