Finite volume method of Laplace equation

1k Views Asked by At

I'm having some trouble understanding the finite volume method in 2 dimensions. I want to solve $$ \Delta u(\mathbf{x}) = 0 $$ for $\mathbf{x}$ on a rectangular grid $[0,1]\times[0,1]$. I have homogeneous Dirichlet boundary conditions.

If $\Omega_{ij}$ is a (square, equidistant) control volume, using the divergence theorem we get $$ \int_{\Omega_{ij}} \Delta u d\Omega = \int_{\partial\Omega_{ij}}\nabla u \cdot n \ d(\partial\Omega). $$

I do not understand how to proceed from here. It is however given that I need to use the central scheme for the fluxes, but my main goal at the moment is to go write the integral in terms of the flux.

1

There are 1 best solutions below

2
On

1) You define a basis for each of your volumes. The basis should be chosen to be some useful set of functions, but for the start you can choose a polynomial basis $u = a + bx + cy + dx^2 + ey^2 + fxy + ...$.

As can be seen later, a more useful choice of basis are so called edge elements, that allow to share degrees of freedom across several elements, thus saving on matrix size. Also. you have to compromise between the size of your basis and the size of your mesh. In general, basis converges faster than mesh, but then you get dense matrices, so there is generally a good compromise.

2) For each little volume, you will find the gradients $\nabla u$ of your basis with respect to each boundary.

3) You can solve the equation using the testing function approach. To do that the original equation is relaxed to hold in an integral sense, when tested by each testing function

$\int_{\Omega} t_i(r) \Delta u(r)dr = \int_{\Omega} t_i(r) \nabla \cdot \nabla u(r)dr = \int_{\Omega} \nabla \cdot (t_i(r) \nabla u(r))dr - \int_{\Omega} \nabla t_i(r) \cdot \nabla u(r)dr = \int_{\partial \Omega_{j}} t_i(r) \vec{n}_j(r) \cdot \nabla u_j(r) dr - \int_{\Omega_j} \nabla t_i(r) \cdot \nabla u_j(r)dr = 0$

Notice that first equation goes over all boundaries between elements, domain boudaries and interior boundaries. For domain boundaries, you can simply substitute your boundary condition in the place of $u(x)$, obtaining

$F_i = \int_{\partial \Omega} t_i(r) \vec{n}_i \cdot \nabla f(r) dr$

where $f(r) = u(r)$ at the boundary. Note that this equation only has 1 index, so it will be a vector. It will go to the right hand side of the equation. The equation for each interior boundary will be a sum of the contributions from two neighbouring cells. It is necessary to insure the relaxed continuity of $u(r)$ in the interior of the domain

$\int_{\partial \Omega_{+-}} t_i(r) \vec{n}_+(r) \cdot (\nabla u_+(r) - \nabla u_-(r)) dr$

where $+$ and $-$ denote the neighboring element indices. Since there are two pairs of indices $(i,+)$ and $(i,-)$, each of the summands will enter the corresponding diagonal and off-diagonal blocks of the final matrix. Finally, the volume equation will enter the diagonal blocks

$- \int_{\Omega_j} \nabla t_i(r) \cdot \nabla u_j(r)dr$

4) The last step is to plug the basis expansions for $t_i$ and $u_j$. Using Galerkin's approach, one can assume that a good choice for the testing functions are exactly the basis functions selected for the finite elements. This way, since the basis functions are only supported inside each element and do not intersect, all integrals can be completely reduced to the integrals inside individual elements and their boundaries

$t_i(r) = \sum_m \alpha^i_m b^i_m(r)$

$u_j(r) = \sum_n \alpha^j_n b^j_n(r)$

Note that indices $i,j$ go over elements, whereas $m,n$ go over individual basis functions. The latter will correspond to the rows and the columns of the matrix. Also note that all elements of your matrix will be a sum of multiple terms, for example for the elements on the boundary will have a domain boundary term, interior boundary term and a volume term, but elements on the interior will only have interior boundary and volume terms.

Finally, you will have to solve a linear system

$\sum_n M_{mn} \alpha_n = -F_m$

EDIT

I highly recommend a classical text of J. Volakis,

https://www.wiley.com/WileyCDA/WileyTitle/productCd-0780334256,miniSiteCd-IEEE2.html

I have learned using it and multiple other resources, and it is really good and concise. It is also very expensive, so it is best that you first look for paperback or electronic versions from your library

EDIT 2 I am very sorry, because of the way you wrote your first integral, I completely forgot about the most important part of this analysis - the testing functions. Please see the appropriate changes above.