Heat Explicit

Heat Equation#

热传导方程 $$\frac{\partial T}{\partial t}=\alpha \nabla^2 T$$

式中

  • $T(x,t)$:温度场
  • $\nabla^2 T$:拉普拉斯算子,描述温度向四周扩散的过程
  • $\alpha$:热扩散系数

从直觉上可以直观地理解:哪里温度较高,温度就将向四周扩散,直至平均。

Numerical Computation#

Use explicit time scheduler: $$T^{n+1}=T^n+\delta t\cdot \alpha \nabla^2 T^m$$

cpp implementation#

class HeatExplicitSolver {
    public:
        static std::shared_ptr<TimeStepper> create(double alpha) {
            auto rhs = [alpha](const Field& T, const auto&) {
                Field lapl = T.laplacian(); // predefined field class
                lapl *= alpha;
                return lapl;
            };
            return std::make_shared<ExplicitEuler>(rhs);
        }
};

Physical Intuation#

In math, $$\alpha=\frac{\kappa}{\rho c}$$

which has stationary condition: $$\Delta t\le \frac{C \Delta x^2}{\alpha}$$