Illustrative examples of mimetic finite difference methods

As much as I try to find a concise explanation on the internet, I can't seem to grasp the concept of a mimetic finite difference, or how it even relates to standard finite differences. It would be really helpful to see some simple examples of how they are implemented for classic linear PDE's (hyperbolic, elliptic and parabolic).

Not sure if it is the answer you wanted, but seeing as no-one else have answered I can mention the GPL'd MATLAB Reservoir Toolbox, which uses mimetic solvers for pressure equations in reservoir simulation. Seeing as this equation, $$-\nabla \frac{K}{\mu} \nabla p = q$$ reduces to the typical elliptic test equation, $\Delta p = 0$ (Poisson) for constant permeability/viscosity ratio, you can probably get some understanding out of the MRST solvers. MRST supports fully unstructured grids using different mimetic methods, where mimetic here refers to a mimicking of the inner product required for setting up mass balance equations. You will probably not need any understanding of reservoir simulations to understand this.

A good example to start with is described here. The examples included use MATLAB's block script functionality, where you can use shift-enter to step through the steps and inspect the data at each step.

Relevant articles can be found here. The first paper goes through the formulation of the mimetic inner product so you can have a readalong with the code. If you haven't got MATLAB or is unfamiliar with the language, this is probably not very helpful - but I think the simple examples should be compatible with Octave as well.

• Could you elaborate a little more on what you mean by "mimicking" the inner product? How does one go about "mimicking" it, in general? – Paul May 27 '12 at 5:17

There's a Masters thesis "Comparison Between Mimetic and Two-Point Flux-Approximation Schemes on PEBI-grids" that walks through some of the details, and section 7.3 in particular works through a small example by hand.

The support operators method (SOM) takes advantage of the fact that most partial differential equations are formulated in terms of the differential operators divergence $\nabla\cdot$, gradient $\nabla$, and curl $\nabla\times$. The SOM provides an approach for spatial differencing by constructing discrete analogs of the aforementioned differential operators. The discrete operators satisfy discrete versions of important differential and integral identities satisfied by the continuum operators. In essence, the SOM constructs a discrete version of the differential operator calculus.

The construction of a discrete calculus proceeds in two steps. First we choose a discrete form for one of the fundamental operators, termed the prime operator. Then, based on some subset of differential and integral identities we choose to maintain, we construct the other fundamental operator(s), termed the derived operators. The choice of the prime operator is application and discretization dependent. In a sense, the prime operator "supports" the construction of the derived operators. Conservation laws, solution symmetries and adjoint relationships between differential operators are examples of properties we want the discrete operators to mimic.

For example, a SOM discretization of the linear diffusion equation the mimetic discretization would mimic

1. The Gauss-Green theorem to enforce the local conservation law
2. The negative adjoint relationship between the flux and divergence operators, $-\textbf{K}\nabla = (\nabla\,\cdot)^{*}$
3. Guaranteed symmetry and positivity of the product of the discrete divergence and discrete flux
4. The null space of the discrete flux operator is the constant functions.

Full details on the mimetic discretization of the diffusion equation are available in 1D or 2D.

See the thesis of Jerome Bonelle which is available on his website or directly here. I found his chapters 2 - 4 to be quite easy to read and give a nice introduction. He also talks about two examples, one elliptic PDE and the Stokes equations.