.. _sec:GeneralConservationEquation: General Conservation Equation ----------------------------- The equations that model the evolution of physical, chemical and biological systems often have a remarkably universal form. Indeed, PDEs have proven necessary to model complex physical systems and processes that involve variations in both space and time. In general, given a variable of interest :math:`\phi` such as species concentration, pH, or temperature, there exists an evolution equation of the form .. math:: :label: general-equation \frac{\partial \phi}{\partial t} = H(\phi, \lambda_i) where :math:`H` is a function of :math:`\phi`, other state variables :math:`\lambda_i`, and higher order derivatives of all of these variables. Examples of such systems are wide ranging, but include problems that exhibit a combination of diffusing and reacting species, as well as such diverse problems as determination of the electric potential in heart tissue, of fluid flow, stress evolution, and even the Schroedinger equation. A general conservation equation, solved using :term:`FiPy`, can include any combination of the following terms, .. math:: :label: num:gen \underbrace{ \frac{\partial (\rho \phi)}{\partial t} }_{\text{transient}} + \underbrace{ \vphantom{\frac{\partial (\rho \phi)}{\partial t}} \nabla \cdot \left( \vec{u} \phi \right) }_{\text{convection}} = \underbrace{ \vphantom{\frac{\partial (\rho \phi)}{\partial t}} \left[ \nabla \cdot \left( \Gamma_i \nabla \right) \right]^n \phi }_{\text{diffusion}} + \underbrace{ \vphantom{\frac{\partial (\rho \phi)}{\partial t}} S_{\phi} }_{\text{source}} where :math:`\rho`, :math:`\vec{u}` and :math:`\Gamma_i` represent coefficients in the transient, convection and diffusion terms, respectively. These coefficients can be arbitrary functions of any parameters or variables in the system. The variable :math:`\phi` represents the unknown quantity in the equation. The diffusion term can represent any higher order diffusion-like term, where the order is given by the exponent :math:`n`. For example, the diffusion term can represent conventional Fickean diffusion [*i.e.*, :math:`\nabla\cdot(\Gamma\nabla\phi)`] when the exponent :math:`n = 1` or a Cahn-Hilliard term [*i.e.*, :math:`\nabla \cdot (\Gamma_1 \nabla [ \nabla \cdot \Gamma_2 \nabla \phi ) ] )` :cite:`CahnHilliardI` :cite:`CahnHilliardII` :cite:`CahnHilliardIII`] when :math:`n = 2`, or a phase field crystal term [*i.e.*, :math:`\nabla \cdot (\Gamma_1 \nabla [ \nabla \cdot \Gamma_2 \nabla \{ \nabla \cdot \Gamma_3 \nabla \phi ) \} ) ] )` :cite:`Elder:2011p2811`] when :math:`n = 3`, although spectral methods are probably a better approach. Higher order terms (:math:`n > 3`) are also possible, but the matrix condition number becomes quite poor.