The disadvantage is that the library can not handle cache blocking (as this has to be done within the loops) or wrapping of the API-calls for accelerators (e.g. via CUDA or OpenCL). Implementations include Cactus, a physics problem solving environment, and waLBerla. Cell-based libraries These libraries move the interface to updating single simulation cells: only the current cell and its neighbors are exposed, e.g. via getter/setter methods. The advantage of this approach is that the library can control tightly which cells are updated in which order, which is useful not only to implement cache blocking, but also to run the same code on multi-cores and GPUs. This approach requires the user to recompile the source code together with the library. Otherwise a function call for every cell update would be required, which would seriously impair performance. This is only feasible with techniques such as class templates or metaprogramming, which is also the reason why this design is only found in newer libraries. Examples are Physis and LibGeoDecomp. See also Advanced Simulation Library Finite difference method Computer simulation Five-point stencil Stencil jumping Stencil (numerical analysis) References External links Physis LibGeoDecomp waLBerla Computational fluid dynamics Simulation software