Back to Browse

21 MOOSE算例11 Preconditioning

2 views
May 4, 2026
11:45

MOOSE算例11 Preconditioning讲的是JFNK迭代前的预处理矩阵。好的预处理矩阵可以有效减小迭代次数。看本算例的推导过程也可以很好地理解什么叫全耦合。预处理矩阵的要求是要足够像雅可比矩阵,而且还要计算方便。本例中求解的方程组为−𝛻∙𝛻𝑢=0; −𝑢−𝛻∙𝛻𝑓=0。转化为MOOSE的方程组为 R_ui(u_h, f_h) = ∑_e _q w_q |J_e(ξ⃗_q)| [∇⃗ψ_i · k∇⃗u_h]_{ξ⃗_q} - ∑_f ∑_{q_face} w_{q_face} |J_f(ξ⃗_{q_face})| [ψ_i k∇⃗u_h · n⃗]_{ξ⃗_{q_face}}; R_fi(u_h, f_h) = ∑_e ∑_q w_q |J_e(ξ⃗_q)| [∇⃗ψ_i · k∇⃗f_h - ψ_i u_h]_{ξ⃗_q} - ∑_f ∑_{q_face} w_{q_face} |J_f(ξ⃗_{q_face})| [ψ_i k∇f_h · n]_{ξ⃗_{q_face}} 解该方程组,雅可比矩阵为 [𝜕𝑅_𝑢/𝜕𝑢 𝜕𝑅_𝑢/𝜕f 𝜕𝑅_f/𝜕𝑢 𝜕𝑅_f/𝜕f] 预处理矩阵的要求,足够像雅可比阵,方便用近似方法求逆 MOOSE的默认预处理矩阵为 [𝜕𝑅_𝑢/𝜕𝑢 0 0 𝜕𝑅_f/𝜕f] SMP方法可以让预处理矩阵的非主对角线元素不为0,本算例中设定了off_diag_row = 'forced' off_diag_column = 'diffused',会导致预处理矩阵变为 [𝜕𝑅_𝑢/𝜕𝑢 0 𝜕𝑅_f/𝜕𝑢 𝜕𝑅_f/𝜕f] FDP方法为使用近似的雅可比阵作为预处理矩阵。 运行算例,default.i、smp.i、fdp.i的计算结果一定是相同的,但是smp.i、fdp.i要更快一点。

Download

0 formats

No download links available.

21 MOOSE算例11 Preconditioning | NatokHD