Class ConvectionDiffusionEquation1D

  • All Implemented Interfaces:
    PDE

    public class ConvectionDiffusionEquation1D
    extends Object
    implements PDE
    The convection–diffusion equation is a combination of the diffusion and convection (advection) equations, and describes physical phenomena where particles, energy, or other physical quantities are transferred inside a physical system due to two processes: diffusion and convection. Depending on context, the same equation can be called the advection–diffusion equation, drift–diffusion equation, Smoluchowski equation (after Marian Smoluchowski), or (generic) scalar transport equation.

    A one-dimensional general convection-diffusion equation is of the following form. \[ \frac{\partial u}{\partial t} = \sigma(t,x) \frac{\partial^2 u}{\partial x^2} - \mu(t,x) \frac{\partial u}{\partial x} + R(t,x), \] The initial condition has this form: \[ u(0,x) = f(x), ~0 < x < a \] The mixed boundary conditions have this form: \[ (1-c_1)u(t,0) - c_1\frac{\partial u}{\partial x}(t,0) = g_1(t), \\ (1-c_2)u(t,a) + c_2\frac{\partial u}{\partial x}(t,a) = g_2(t) \] where \(0 \le c_k \le 1, k = 1, 2\).

    See Also:
    Wikipedia: Convection-diffusion equation
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      double a()
      Gets the size of the one-dimensional space, that is, the range of x, (0 < x < a).
      double c1()
      Gets the coefficient c1 in the mixed boundary condition at the boundary x = 0.
      double c2()
      Gets the coefficient c2 in the mixed boundary condition at the boundary x = a.
      double f​(double x)
      Gets the initial condition of u at a given position x.
      double g1​(double t)
      The value of the linear combination of \(u\) and \(\frac{\partial u}{\partial x}\) at the boundary \(x = 0\) at a given time \(t\).
      double g2​(double t)
      The value of the linear combination of \(u\) and \(\frac{\partial u}{\partial x}\) at the boundary \(x = a\) at the given time \(t\).
      double mu​(double t, double x)
      Gets the convection coefficient at a given time t and a position x.
      double R​(double t, double x)
      Gets the source (or sink) value at a given time t and a position x.
      double sigma​(double t, double x)
      Gets the diffusion coefficient at a given time t and a position x.
      double T()
      Gets the time period of interest, that is, the range of t, (0 < t < T).
    • Constructor Detail

      • ConvectionDiffusionEquation1D

        public ConvectionDiffusionEquation1D​(BivariateRealFunction sigma,
                                             BivariateRealFunction mu,
                                             BivariateRealFunction R,
                                             double a,
                                             double T,
                                             UnivariateRealFunction f,
                                             double c1,
                                             UnivariateRealFunction g1,
                                             double c2,
                                             UnivariateRealFunction g2)
        Constructs a convection-diffusion equation problem.
        Parameters:
        sigma - the diffusion coefficient (or diffusivity) \(\sigma(t,x)\)
        mu - the convection coefficient \(\mu(t,x)\)
        R - the sources (or sinks) R(t,x)
        a - the region of interest (0, a)
        T - the time period of interest (0, T)
        f - the initial condition of u, i.e., u(0,x)
        c1 - the coefficient in the mixed boundary condition at x = 0
        g1 - the mixed boundary condition at x = 0
        c2 - the coefficient in the mixed boundary condition at x = a
        g2 - the mixed boundary condition at x = a
    • Method Detail

      • sigma

        public double sigma​(double t,
                            double x)
        Gets the diffusion coefficient at a given time t and a position x.
        Parameters:
        t - a time
        x - a position
        Returns:
        the diffusion coefficient \(\sigma(t,x)\)
      • mu

        public double mu​(double t,
                         double x)
        Gets the convection coefficient at a given time t and a position x.
        Parameters:
        t - a time
        x - a position
        Returns:
        the convection coefficient \(\mu(t,x)\)
      • R

        public double R​(double t,
                        double x)
        Gets the source (or sink) value at a given time t and a position x.
        Parameters:
        t - a time
        x - a position
        Returns:
        the source (or sink) R(t,x)
      • a

        public double a()
        Gets the size of the one-dimensional space, that is, the range of x, (0 < x < a).
        Returns:
        the size of the space
      • T

        public double T()
        Gets the time period of interest, that is, the range of t, (0 < t < T).
        Returns:
        the time period of interest
      • f

        public double f​(double x)
        Gets the initial condition of u at a given position x.
        Parameters:
        x - a position
        Returns:
        u(0, x)
      • c1

        public double c1()
        Gets the coefficient c1 in the mixed boundary condition at the boundary x = 0. \[ (1-c_1)u(t,0) - c_1\frac{\partial u}{\partial x}(t,0) = g_1(t) \] where \(0 \leq c_1 \leq 1\). If \(c_1 = 0\), this is the Dirichlet boundary condition. If \(c_1 = 1\), this is the Neumann boundary condition.
        Returns:
        the coefficient c1
      • g1

        public double g1​(double t)
        The value of the linear combination of \(u\) and \(\frac{\partial u}{\partial x}\) at the boundary \(x = 0\) at a given time \(t\). \[ (1-c_1)u(t,0) - c_1\frac{\partial u}{\partial x}(t,0) = g_1(t) \]
        Parameters:
        t - a time
        Returns:
        \(g_1(t)\)
      • c2

        public double c2()
        Gets the coefficient c2 in the mixed boundary condition at the boundary x = a. \[ (1-c_2)u(t,a) + c_2\frac{\partial u}{\partial x}(t,a) = g_2(t) \] where \(0 \leq c_2 \leq 1\). If \(c_2 = 0\), this is the Dirichlet boundary condition. If \(c_2 = 1\), this is the Neumann boundary condition.
        Returns:
        the coefficient c2
      • g2

        public double g2​(double t)
        The value of the linear combination of \(u\) and \(\frac{\partial u}{\partial x}\) at the boundary \(x = a\) at the given time \(t\). \[ (1-c_2)u(t,a) + c_2\frac{\partial u}{\partial x}(t,a) = g_2(t) \]
        Parameters:
        t - a time
        Returns:
        \(g_2(t)\)