CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM Running, Solving & CFD (
-   -   Material interfaces and the laplacian operator (

cliffoi November 7, 2006 09:35

Hi to all I am fairly new to
Hi to all
I am fairly new to OpenFoam so if anyone could help me, I'd appreciate it. I am solving a simple diffusion equation of the form
fvm::laplacian(gamma,phi) == Src
How does one implement an effective gamma at a face separating two cells with different gamma values (i.e. different materials). This would be done for any solid heat conduction problem (where an interface between solid materials of different conductivities exists).
As I understand it, it is necessary to define an interpolation scheme and add a weighting parameter to the laplacian operator.
Could somebody please clarify how this is done practically in OpenFOAM, or at least point me to an example where this is done.

Thankyou in advance

dmoroian November 7, 2006 10:03

I think the answer is in the s
I think the answer is in the solver written by Daniele Panara, and presented in :

hjasak November 7, 2006 10:30

When you specify the Laplaciam
When you specify the Laplaciam scheme in a dictionary, you will have something like this:

laplacian(nu,U) Gauss linear corrected;

The word "linear" here tells you how to interpolate nu between the cell centres. The final word,"corrected", tells you how to calculate the surface-normal gradient needed by the operator - this one is corrected for mesh non-orthogonality.

Other choices for the interpolation scheme can be made here, for example "harmonic" or any other scheme. Keep in mind that more complex schemes may requre more than one word, i.e. you may have additional parameters before the snGradScheme.



cliffoi November 7, 2006 11:06

Hi, Thankyou for your respons
Thankyou for your response. The method proposed there would work but it seems to me to be unnecessary to define a new mesh for each new material.
I was thinking more along the lines of updating the face conductivities, so that when openFOAM calculates k*grad(T) at the face, the k value used is not a linearly interpolated value but rather a custom calculated value. This value would depend on the P and E cell conductivity values and the distance of each cell centre to the face.
k=(dx_E+dx_P)*k_P*k_E / (dx_P*k_E + dx_E*k_P)

cliffoi November 7, 2006 11:15

Thanks Hrv Seeing the equatio
Thanks Hrv
Seeing the equation a gave in my last post, do you know if FOAM has a suitable scheme built in. Where will I find a list of the available schemes?


hjasak November 7, 2006 11:31

Looking at your scheme, it loo
Looking at your scheme, it looks to me like harmonic interpolation. If you wish to implement your own interpolation, I've got a Laplace operator for you that will take the diffusivity as a surfaceScalarField, i.e. you can do the face interpolation beforehand in the code and present the face values directly.


cliffoi November 8, 2006 03:17

Thanks Hrv The laplace operat
Thanks Hrv
The laplace operator that will take the diffusivity as a surfaceScalarField sounds ideal. could I get that from you?


hjasak November 8, 2006 07:36

You mis-understood me: the ope
You mis-understood me: the operator is already in the library so you don't need any code from me.


cliffoi November 8, 2006 09:57

Right you are Hrv: I had anoth
Right you are Hrv: I had another look at the doxygen documents and I see the operator you're talking about. Will give it a try... thanks


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