Skip to content
Open
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

## Develop

- Added a coupled CPU BiCGStab solver for three-component vector systems.
- *BREAKING* The `ax_helm_factory` is renamed to `ax_helm_allocator`. It now
selects matrix-vector product types by name instead of a `full_formulation`
logical argument, and supports runtime registration of user-defined `ax_t`
Expand Down
9 changes: 6 additions & 3 deletions doc/pages/user-guide/case-file.md
Original file line number Diff line number Diff line change
Expand Up @@ -464,8 +464,9 @@ the governing equations to feature the full viscous stress tensor, as required
for a variable viscosity field.

Note that the full viscous stress tensor requires the equations for the 3
velocity components to be solved in a coupled manner. Therefore, the `coupled_cg`
(or `fused_coupled_cg`) solver should be used for velocity.
velocity components to be solved in a coupled manner. Therefore,
`coupled_bicgstab`, `coupled_cg`, or `fused_coupled_cg` should be used for
velocity. The `coupled_bicgstab` solver is currently available on CPUs only.

### Schwarz iterations
This feature is enabled by setting the `schwarz_iterations` keyword inside
Expand Down Expand Up @@ -1831,6 +1832,8 @@ The following keywords are used, with the corresponding options.
- `cg`, a conjugate gradient solver.
- `pipecg`, a pipelined conjugate gradient solver.
- `bicgstab`, a bi-conjugate gradient stabilized solver.
- `coupled_bicgstab`, a coupled bi-conjugate gradient stabilized solver for
CPU backends. It can be used for velocity when viscosity varies in space.
- `cacg`, a communication-avoiding conjugate gradient solver.
- `coupled_cg`, a coupled conjugate gradient solver. Must be used for velocity
when viscosity varies in space.
Expand Down Expand Up @@ -1970,7 +1973,7 @@ concisely directly in the table.
| `source_terms` | Array of JSON objects, defining additional source terms. | See list of source terms above | - |
| `gradient_jump_penalty` | Array of JSON objects, defining additional gradient jump penalty. | See list of gradient jump penalty above | - |
| `boundary_types` | Boundary types/conditions labels. | Array of strings | - |
| `velocity_solver.type` | Linear solver for the momentum equation. | `cg`, `pipecg`, `bicgstab`, `cacg`, `gmres` | - |
| `velocity_solver.type` | Linear solver for the momentum equation. | `cg`, `pipecg`, `bicgstab`, `coupled_bicgstab`, `coupled_cg`, `cacg`, `gmres` | - |
| `velocity_solver.preconditioner.type` | Linear solver preconditioner for the momentum equation. | `ident`, `hsmg`, `jacobi` | - |
| `velocity_solver.absolute_tolerance` | Linear solver convergence criterion for the momentum equation. | Positive real | - |
| `velocity_solver.maxiter` | Linear solver max iteration count for the momentum equation. | Positive real | 800 |
Expand Down
3 changes: 2 additions & 1 deletion src/.depends
Original file line number Diff line number Diff line change
Expand Up @@ -218,12 +218,13 @@ krylov/precon.lo : krylov/precon.f90 config/num_types.lo
krylov/krylov.lo : krylov/krylov.f90 common/log.lo config/neko_config.lo krylov/bcknd/device/pc_identity_device.lo krylov/pc_identity.lo bc/bc_list.lo common/utils.lo field/field.lo mesh/mesh.lo sem/coef.lo krylov/precon.lo config/num_types.lo math/ax.lo gs/gather_scatter.lo
krylov/pc_identity.lo : krylov/pc_identity.f90 config/num_types.lo krylov/precon.lo math/math.lo
krylov/precon_fctry.lo : krylov/precon_fctry.f90 config/neko_config.lo common/utils.lo multigrid/phmg.lo krylov/pc_hsmg.lo krylov/bcknd/device/pc_jacobi_device.lo krylov/bcknd/sx/pc_jacobi_sx.lo krylov/bcknd/cpu/pc_jacobi.lo krylov/bcknd/device/pc_identity_device.lo krylov/pc_identity.lo krylov/precon.lo
krylov/krylov_fctry.lo : krylov/krylov_fctry.f90 config/neko_config.lo common/utils.lo krylov/precon.lo config/num_types.lo krylov/bcknd/device/gmres_device.lo krylov/bcknd/sx/gmres_sx.lo krylov/bcknd/device/cheby_device.lo krylov/bcknd/cpu/cheby.lo krylov/bcknd/cpu/gmres.lo krylov/bcknd/cpu/bicgstab.lo krylov/bcknd/device/fusedcg_cpld_device.lo krylov/bcknd/device/fusedcg_device.lo krylov/bcknd/device/pipecg_device.lo krylov/bcknd/sx/pipecg_sx.lo krylov/bcknd/cpu/pipecg.lo krylov/bcknd/cpu/cacg.lo krylov/bcknd/device/cg_cpld_device.lo krylov/bcknd/device/cg_device.lo krylov/bcknd/cpu/cg_coupled.lo krylov/bcknd/sx/cg_sx.lo krylov/bcknd/cpu/cg.lo krylov/krylov.lo
krylov/krylov_fctry.lo : krylov/krylov_fctry.f90 config/neko_config.lo common/utils.lo krylov/precon.lo config/num_types.lo krylov/bcknd/device/gmres_device.lo krylov/bcknd/sx/gmres_sx.lo krylov/bcknd/device/cheby_device.lo krylov/bcknd/cpu/cheby.lo krylov/bcknd/cpu/gmres.lo krylov/bcknd/cpu/bicgstab_coupled.lo krylov/bcknd/cpu/bicgstab.lo krylov/bcknd/device/fusedcg_cpld_device.lo krylov/bcknd/device/fusedcg_device.lo krylov/bcknd/device/pipecg_device.lo krylov/bcknd/sx/pipecg_sx.lo krylov/bcknd/cpu/pipecg.lo krylov/bcknd/cpu/cacg.lo krylov/bcknd/device/cg_cpld_device.lo krylov/bcknd/device/cg_device.lo krylov/bcknd/cpu/cg_coupled.lo krylov/bcknd/sx/cg_sx.lo krylov/bcknd/cpu/cg.lo krylov/krylov.lo
krylov/bcknd/cpu/cg.lo : krylov/bcknd/cpu/cg.f90 comm/comm.lo math/math.lo bc/bc_list.lo gs/gather_scatter.lo sem/coef.lo field/field.lo math/ax.lo krylov/precon.lo krylov/krylov.lo config/num_types.lo config/neko_config.lo
krylov/bcknd/cpu/cacg.lo : krylov/bcknd/cpu/cacg.f90 math/mxm_wrapper.lo comm/comm.lo common/utils.lo math/math.lo bc/bc_list.lo gs/gather_scatter.lo sem/coef.lo field/field.lo math/ax.lo krylov/precon.lo krylov/krylov.lo config/neko_config.lo config/num_types.lo
krylov/bcknd/cpu/cheby.lo : krylov/bcknd/cpu/cheby.f90 math/math.lo math/schwarz.lo bc/bc_list.lo gs/gather_scatter.lo sem/space.lo mesh/mesh.lo sem/coef.lo field/field.lo common/profiler.lo config/num_types.lo math/ax.lo krylov/precon.lo krylov/krylov.lo
krylov/bcknd/cpu/pipecg.lo : krylov/bcknd/cpu/pipecg.f90 comm/comm.lo math/math.lo bc/bc_list.lo gs/gather_scatter.lo sem/coef.lo field/field.lo config/num_types.lo math/ax.lo krylov/precon.lo krylov/krylov.lo config/neko_config.lo
krylov/bcknd/cpu/bicgstab.lo : krylov/bcknd/cpu/bicgstab.f90 comm/comm.lo common/utils.lo math/math.lo bc/bc_list.lo gs/gather_scatter.lo sem/coef.lo field/field.lo math/ax.lo krylov/precon.lo krylov/krylov.lo config/num_types.lo
krylov/bcknd/cpu/bicgstab_coupled.lo : krylov/bcknd/cpu/bicgstab_coupled.f90 common/utils.lo math/math.lo math/operators.lo comm/comm.lo bc/bc_list.lo gs/gather_scatter.lo sem/coef.lo field/field.lo math/ax.lo krylov/precon.lo krylov/krylov.lo config/num_types.lo
krylov/bcknd/cpu/gmres.lo : krylov/bcknd/cpu/gmres.f90 comm/comm.lo config/neko_config.lo math/math.lo bc/bc_list.lo gs/gather_scatter.lo sem/coef.lo field/field.lo config/num_types.lo math/ax.lo krylov/precon.lo krylov/krylov.lo
krylov/bcknd/cpu/pc_jacobi.lo : krylov/bcknd/cpu/pc_jacobi.f90 gs/gather_scatter.lo sem/dofmap.lo config/num_types.lo sem/coef.lo krylov/precon.lo math/math.lo
krylov/bcknd/cpu/cg_coupled.lo : krylov/bcknd/cpu/cg_coupled.f90 math/operators.lo common/utils.lo comm/comm.lo math/math.lo bc/bc_list.lo gs/gather_scatter.lo sem/coef.lo field/field.lo math/ax.lo krylov/precon.lo krylov/krylov.lo config/num_types.lo
Expand Down
1 change: 1 addition & 0 deletions src/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,7 @@ neko_fortran_SOURCES = \
krylov/bcknd/cpu/cheby.f90\
krylov/bcknd/cpu/pipecg.f90\
krylov/bcknd/cpu/bicgstab.f90\
krylov/bcknd/cpu/bicgstab_coupled.f90\
krylov/bcknd/cpu/gmres.f90\
krylov/bcknd/cpu/pc_jacobi.f90\
krylov/bcknd/cpu/cg_coupled.f90\
Expand Down
Loading
Loading