本文总结OpenFOAM中代码语句与模型或公式的对应关系
icoFoam solver
连续性方程
∇ ⋅ U = 0 \nabla \cdot U=0 ∇⋅U=0
动量方程
∂ U ∂ t + ∇ ⋅ ( U U ) = − ∇ p + ∇ ⋅ ( ν ∇ U ) \frac{\partial U}{\partial t}+\nabla\cdot (UU)=-\nabla p + \nabla \cdot (\nu \nabla U) ∂t∂U+∇⋅(UU)=−∇p+∇⋅(ν∇U)
fvm::ddt(U)
返回fvVectorMatrix
,返回N*N
的矩阵,矩阵中每个元素都是括号内的U
,因此是Vector。
- 与动量方程对应关系
∂ U ∂ t \frac{\partial U}{\partial t} ∂t∂U - 与离散方程对应关系
∂ ∂ t ∫ V P U d V ≈ ∂ ∂ t ( U P V P ) = a ⋅ U P n + 1 + b ⋅ U P n \frac{\partial }{\partial t}\int_{V_P} U dV \approx \frac{\partial }{\partial t} (U_P V_P)=a\cdot U_P^{n+1} +b\cdot U_P^n ∂t∂∫VPUdV≈∂t∂(UPVP)=a⋅UPn+1+b⋅UPn
最后一个等号所得的形式取决于定义在fvSchemes
中的ddtSchemes
离散格式
Field和Matrix的关系是什么?Field为(N,1)的向量,其中N为网格数。Matrix顾名思义为(N,N)的矩阵。Field为待求量,我们想按照AX=B的计算格式来求解Field X,由于B同样为Field,这就要求A为Matrix or Scalar
fvm::div(phi, U)
返回fvVectorMatrix
- 与动量方程对应关系
∇ ⋅ ( U U ) \nabla\cdot (UU) ∇⋅(UU) - 与离散方程对应关系
∫ V P ∇ ⋅ ( U U ) d V = ∫ ∂ V P ( U U ) d S ≈ ∑ ( U U ) f S ≈ ∑ F f n U f n +