pUCoupledFoam - an open source coupled incompressible pressure-velocity solver based on foam-extend
暂无分享,去创建一个
Due to the general slow convergence of steady-state incompressible solvers, coupled ap- proaches are attractive alternatives. Such implicit solvers are well suited within the ex- isting generic block matrix format available with foam-extend. In this work, new implicit discretisation operators as well as assembling tools and matrix solvers are described and combined in the new solver pUCoupledFoam. To preserve the transparency and clarity of the current segregated solvers, all needed block discretisation operators must be generically implemented and kept within the gen- eral framework of foam-extend. The block coefficients must also be assembled fully auto- matically, avoiding ugly and error prone code which is intrinsically difficult to extend. However, for the implementation of the coupled pressure-velocity algorithm, there was a lack of implicit divergence and gradient operators, Due to the mapping from scalar to vector and from vector to scalar, for the implicit gradient and divergence operators respectively, these schemes are not supported within the standard scalar or vector matrix formats. The implicit block matrix discretisation of the the gradient operator, allows computing the implicit contribution from the pressure to the velocity. On the other hand, the implicit discretisation of the divergence operator computes the contribution from the velocity to the pressure. The discretised operators are automatically assembled in the block matrix system using existing and new block matrix coefficient insertion tools. All insertion tools are generic and templated on the type of solution variable (scalar/vector). which is realised by a combination of an implicit Laplacian and an explicit computation of the divergence of a surface normal gradient. Again, such an interpolation is achieved fully with operators and block matrix tools, without any discretization or assembly by hand in the solver. The block matrix is solved by current Krylov space solvers or by the newly implemented block algebraic multigrid (AMG) solver, released with foam-extend-3.0. All solvers are fully parallelised and templated on the size and type. To characterize the performance of the method and the implementation, the new code (pUCoupledFoam) is compared to the existing segregated incompressible solver (simpleFoam). A sample, single CPU investigation of the convergence rate per time is given for a laminar pitzDaily case in Figure 1. The results show a substantial increase in the convergence rate, in particular for the pressure equation. Out of the applied block matrix solvers, the AMG solver results in the best convergence rate per elapsed CPU time. Similar conver- gence results will be presented for the parallelised problem to additionally determine the scaling of the solver. The full source code of the coupled pressure-velocity solver will be released in the upcom- ing release of foam-extend-3.1.