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}$$