ug4
Geometric Object Based Discretizations

The interfaces presented in Categorization of Problems separate nicely the implementation of the problem specific domain discretizations from the other components such as time-stepping schemes, non-linear solvers and linear solver. Now one (recommended) way of implementation the spatial part of the discretization is presented. It will lead to very flexibel and reusable implementations of small and commonly used parts of problems. These parts can be combined to form a major problem.



General Idea


In order to implement the spacial part of a discretization in Categorization of Problems have been identified several functions that a user has to specify to use the interface. These function are

  • stationary linear case

    • computation of the matrix \(A_h \left( := \frac{\partial A_h \vec{v}_h}{\partial \vec{v}_h} \left( \vec{u}_h \right) \right)\)
    • computation of the rhs \(\vec{f}_h\)
    • (this allows the computation of \(\vec{d}_h(\vec{u}_h) := A_h \vec{u}_h - \vec{f}_h\) )

  • stationary non-linear case

    • computation of the preconditioner \(J_h(\vec{u}_h) := \frac{\partial \mathcal{A}_h(\vec{v}_h)}{\partial \vec{v}_h} \left( \vec{u}_h \right)\)
    • computation of the defect \(\vec{d}_h(\vec{u}_h) := \mathcal{A}_h(\vec{u}_h)-\vec{f}_h\)

  • time-dependent case

  • the computation of the preconditioner \(J_h(\vec{u}_h, s_m, s_a) := s_m M_h + s_a \frac{\partial \mathcal{A}_h(\vec{v}_h)}{\partial \vec{v}_h} \left( \vec{u}_h \right)\)
  • the computation of the defect \(\hat{\vec{d}}_h(\vec{u}_h, s_m, s_a) := s_m M_h \vec{u}_h + s_a \mathcal{A}_h(\vec{u}_h)\)

Thus, the building blocks of every of the three needs are the following parts:

  • Defect

    • Mass-defect \(\mathcal{M}(\vec{u}_h) \equiv M_h \vec{u}_h\)
    • Stiffness-defect \(\mathcal{A}(\vec{u}_h)\)
    • Right-Hand Side \(\vec{f}_h\)

  • Jacobian
    • Mass-Jacobian \( \frac{\mathcal{M}_h(\vec{v}_h)}{\partial \vec{v}_h} \left( \vec{u}_h \right) \equiv M_h\)
    • Stiffness-Jacobian \( \frac{\mathcal{A}_h(\vec{v}_h)}{\partial \vec{v}_h} \left( \vec{u}_h \right) \)

A discrization can therefore be split up in this smaller parts.


Element Discretization


Many discretizations like Finite Elements and Finite Volumes base on an element by element assembling of the needed Stiffness- and Mass-matrix. This can be used to implement the forementioned building blocks on an element by element basis.

Specially those element assemblings does only need element-local information. These informations are:

  • the element itself
  • the local degrees of freedom of the element
  • the local defect/jacobian/rhs