A wrapper for [Ginkgo](https://github.com/ginkgo-project/ginkgo) solver to provide GPGPU capabilities to [OpenFOAM](https://openfoam.org/)
A wrapper for [ginkgo](https://github.com/ginkgo-project/ginkgo) solver to provide GPGPU capabilities to [OpenFOAM](https://openfoam.org/)
## Requirements
OGL has the following requirements
* Ginkgo
* OpenFOAM
* _cmake 3.9+_
* _OpenFOAM 6+_
* _Ginkgo 1.4.0+_
* C++14 compliant compiler
See also [ginkgo's](https://github.com/ginkgo-project/ginkgo) documentation for additional requirements.
## Compilation
OGL can be build using cmake in the main folder. Make sure that
the `controlDict` includes the `OGL.so` file:
*OGL* can be build using cmake. Make sure that
the `system/controlDict` includes the `OGL.so` file:
libs ("libOGL.so");
...
...
@@ -23,11 +26,17 @@ the `controlDict` includes the `OGL.so` file:
## Usage
OGL solver support the same syntax as the default OpenFOAM solver. Thus, to use a CG solver you can simply replace "PCG" by "GKOCG". In order to run either with CUDA, HIP, or OMP support set the "executor" to cuda, hip, or omp in your solver dictionary.
OGL solver support the same syntax as the default *OpenFOAM* solver. Thus, to use a `CG` solver you can simply replace `PCG` by `GKOCG`. In order to run either with *CUDA*, *HIP*, or *OMP* support set the `executor` to `cuda`, `hip`, or `omp` in the `system/fvSolution` dictionary.
Currently the following solver are supported
- CG with and without block Jacobi preconditioner
* CG with and without block Jacobi preconditioner
* BiCGStab
* IR
## Known Limitations
Currently cyclic boundary conditions are not supported.