CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM Programming & Development (
-   -   Electrostatic Multiregion Foam (

GPesch November 4, 2013 11:08

Electrostatic Multiregion Foam

I am trying to develop a solver to calculate electrostatic fields in a simulation volume containing multiple dielelectric materials with different properties, e.g. conductivity and permittivity.

In this case (let's assume absence of charges) I need to solve the Poisson Equation:

div (epsilon grad(phi)) = 0 (with phi being the electric potential)..

As far as I have understood my problem so far (:D), I need to define boundary conditions in which I put a constant potential on the (lets assume two) electrodes in my geometry.
So far so good (nothing which couldn't be solved with electrostaticFoam).
If I want to introduce several regions with different dielectric properties my field lines are not distributed equally in the volume, as they are "bend" at the interface between the two materials according to the following rules:

  • Normal component of (epsilon grad(phi)) is constant and
  • tangential component of grad(phi) is also constant.
Okay - so much for the theory.. In this case I need to define some sort of coupling between the two regions. I have looked into chtMultiRegionFoam, which is giving quite the functionality I need for solid/liquid interfaces and head conduction. So far I understand how they set up the problem: They divide every solid and/or liquid region with different properties and then set up some sort of "sub"-mesh for each region in which the equation is solved individually... From looking at the source files I feel confident that I could do the same:

What I do not understand so far is how they implement the coupling between the two regions. From looking at the tutorial case, the coupling is technically implemented as a boundary condition at the region interface (which makes sense).
However, from looking at the source file of the boundary condition (two be honest: I have never looked at the source file of a BC before so I am note quite sure what to look for... actually I have the impression the major work is done by a function called "updateCoeffs()"—am I right?) I cannot figure out how they actually achieve the desired coupling. I looked at turbulentTemperatureCoupledBaffleMixedFvPatchScala rField (quite a mouthful), as this is the one used in the tutorial cases of the solver.
However: This seems to be a rather complicated BC as it is neither a pure FixedValue nor a FixedGradient BC, but something in between (I don't actually care, because I need FixedGradient anyway :))...

An intensive search revealed that "in the old days" this was easier, because people achieved this before by applying FixedGradient Boundary Conditions which do not exist anymore. (Or which I could not find)..

Coming to the question I want to ask: Can someone give me a hint for a coupling condition between two regions which is more or less achieving what I want—so that I could have a look inside and understand how they do it? Or—if this is impossible, because such BCs do not exist anymore—I would be very grateful if you could give me some advice of how turbulentTemperatureCoupledBaffleMixedFvPatchScala rField actually works..

Thank you so much for reading thru all of this and for answering in advance!

Best wishes

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