some cool effects
Chapter 1: Wind
1.1 Navier-Stokes Wind Simulation
$$ \frac{Dv}{Dt} = \frac{\partial v}{\partial t} + (V_i \cdot \nabla)V_i = \mathbf{F} + \frac{\mu}{\rho} \nabla^2 V_i - \frac{1}{\rho}P$$
- $ \frac{\partial \mathbf{v}}{\partial t}$ 是速度随时间的变化。
- $ (\mathbf{v} \cdot \nabla) \mathbf{v} $ 是速度对流项。
- $ -\frac{1}{\rho} \nabla P $ 是压力梯度项。
- $ \nu \nabla^2 \mathbf{v} $ 是粘性扩散项。
$\frac{\partial v}{\partial t}$(Local Dervative)
Local Dervative 也称unsteady term, 表示v在(x,y,z)随时间t变化的速率。锁定空间,水流的速度随时间变化而变化。
$(\mathbf{v} \cdot \nabla) \mathbf{v} $ (Convective Term)
Convective Term(对流项),每个位置的速度都不一样,一个水分子从一个场到另一个场时速度的变化。
material derivative
物质导数 = Local Dervative + Convective Term.速度场中一个质点感受到的加速度 = 站在原地本身因为时间变化而产生的速度变化 + 因为
$\mathbf{F}$
外力。加在速度场中间的外力。
$\frac{\mu}{\rho} \nabla^2 V_i$
扩散项。扩散项主要是描述场是如何在空间内平滑/扩散的。$\mu$ 是动力粘度,$\rho$ 是流体密度。$V_i$ 是拉普拉斯算子,描述的是空间二维导数。高粘性物体(蜂蜜),流动趋近于平滑。欧拉视角(网格)下扩散想可以理解为,当前网格于周边6格(3D)交换。如果某网格速度高,周围网格速度低,扩散项会让它们的速度逐渐接近通过‘交换’。
Integral Equation
好多年没碰过微积分了,认真学习一遍。
Integral Example
step 1 : $$V(t) = V(0) + \int_0^t (Q_{\text{in}} - Q_{\text{out}}) , dt$$
假设池塘水量V(T)
在时间t
的总量,是最初水量V(0)
加上流入流出累积量。
step 2 : $$ \frac{d}{dt} \left[ V(0) + \int_0^t \left( Q_{\text{in}} - Q_{\text{out}} \right) dt \right] $$
对右侧函数求导,并且V(0)是常数
得到step3
step3 :
$$
\frac{dV}{dt} = \frac{d}{dt} \int_{0}^{t} (Q_{\text{in}} - Q_{\text{out}}) , dt
$$
根据Calculus Rule(下面的公式)得到step4,
$$\frac{d}{dt} \int_{a}^{t} f(x) ,dx = f(t)
$$
step4 : $$\frac{dV}{dt} = Q_{in} - Q_{out}$$
Calculus Rule
Overall, 积分的导数等于被积函数本身,即微积分互为逆运算
,下面是推导。
根据导数的定义:
$$
F’(t) = \lim_{\Delta t \to 0} \frac{F(t+\Delta t) - F(t)}{\Delta t}
$$
用积分函数 ( F(t) ) 代入:
$$
F(t+\Delta t) = \int_{a}^{t+\Delta t} f(x) ,dx
$$
$$
F(t) = \int_{a}^{t} f(x) ,dx
$$
所以:
$$
F(t+\Delta t) - F(t) = \int_{a}^{t+\Delta t} f(x) ,dx - \int_{a}^{t} f(x) ,dx
$$
根据 积分的可加性,我们可以拆分成:
$$
F(t+\Delta t) - F(t) = \int_{t}^{t+\Delta t} f(x) ,dx
$$
现在我们把这个代入导数定义:
$$
F’(t) = \lim_{\Delta t \to 0} \frac{\int_{t}^{t+\Delta t} f(x) ,dx}{\Delta t}
$$
当 $ \Delta t \to 0 $ 时,由于积分 $ \int_{t}^{t+\Delta t} f(x) ,dx $ 只是对一个很小的区间积分,我们可以用Mean Value Theorem for Integrals近似:
$$
\int_{t}^{t+\Delta t} f(x) ,dx \approx f(t) \cdot \Delta t
$$
代入上面的公式:
$$
F’(t) = \lim_{\Delta t \to 0} \frac{f(t) \cdot \Delta t}{\Delta t} = f(t)
$$
这就得到了:
$$
\frac{d}{dt} \int_{a}^{t} f(x) ,dx = f(t)
$$
Mean Value Theorem for Integrals
ps: 总的来说我觉得类似于monte carlo methods, 都是用代表性点来对整个区间去平均值。
在微积分中,定积分的平均值定理(Mean Value Theorem for Integrals)告诉我们:
$$
\int_{a}^{b} f(x) ,dx = f(c) \cdot (b - a), \quad \text{for some } c \in [a, b]
$$
这意味着,在区间 $[a,b]$ 内,存在一个特殊点 c
,使得函数 f(x)
的值可以代表整个区间的平均行为。
我们对很小的区间 $[t, t+\Delta t]$ 进行积分:
$$
\int_{t}^{t+\Delta t} f(x) ,dx
$$
由于 $\Delta t$ 非常小,( f(x) ) 在这个小区间内变化不会很大,因此我们可以用平均值定理来近似:
$$
\int_{t}^{t+\Delta t} f(x) ,dx \approx f(t) \cdot \Delta t
$$
这样,我们就能简化导数的计算,使得:
$$
F’(t) = \lim_{\Delta t \to 0} \frac{\int_{t}^{t+\Delta t} f(x) ,dx}{\Delta t} = f(t)
$$