Continuous basis functions, spatial discretization and solution procedure ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Until now, we always have allocated the unknown function :math:`u` with ``define_scalar_field("u","C2")``. While the first argument is just the name, the second argument needs more elaboration. It defines the *finite element space* where the function is defined upon. In pyoomph, there are two kinds on continuous spaces, namely ``"C1"`` and ``"C2"``. Discontinuous spaces ``"D0"`` (constant per element) and ``"DL"`` (affine linear per element, cf. :numref:`secspatialcr`) are also available, but not discussed here. To understand these two continuous spaces, let us delve slightly into the basics of the *finite element method*. In fact, the unknown function :math:`u` is spatially discretized by so-called *shape functions* :math:`\psi_l(\vec{x})`. .. math:: :label: eqspatialbasisexpand u(\vec{x})=\sum_l u_l \psi_l(\vec{x})\,. This linear expansion in the shape functions obviously separates the spatial dependency of the function :math:`u` into amplitudes :math:`u_l` and spatially varying basis functions :math:`\psi_l`. The second argument in :py:meth:`~pyoomph.generic.codegen.Equations.define_scalar_field` selects the particular choice of these shape functions :math:`\psi_l`, namely ``"C1"`` for linear basis functions and ``"C2"`` for basis functions of second order, i.e. quadratic ones. In principle, the basis functions are quite arbitrary. In fact, one could select e.g. :math:`\psi_l(\vec{x})=\exp(i\vec{k}_l\cdot{x})` to obtain a Fourier decomposition. However, since the conventional finite element method is solved in the spatial domain, not in the spectral one, this choice of the basis functions is problematic. Instead, it is beneficial to choose them that the *support* only covers a few neighboring elements, i.e. they should be zero almost everywhere in the entire domain, except in the vicinity of a single position. Thereby, the degrees of freedom, i.e. :math:`u_l`, are sufficiently localized in space. This idea leads to the conclusion that the basis functions should be defined in a piece-wise manner - zero almost everywhere, but non-zero in the vicinity of a position :math:`\vec{x}_l` associated with the degree of freedom :math:`u_l`. The simplest idea on a one-dimensional domain, discretized by positions at :math:`x_1