Octopus is an adaptive mesh refinement (AMR) library for scientific applications, implemented on top of the HPX C++ runtime system. Octopus allows domain scientists to solve computational fluid dynamics (CFD) problems on a hierarchy of Cartesian meshes with different scales of spatial resolution utilizing a technique known as adaptive mesh refinement (AMR). Astrophysicists at Louisiana State University are using Octopus to simulate important phenomena such as binary star mergers.
Octopus is a policy-driven framework. Domain scientists select policies, either at run-time or compile-time, which fulfill a specified interface in the library, known as a customization point. These policies are used by the underlying framework to implement application functionality. Many aspects of Octopus are completely controlled by policies, such as the methods for time discretization, interpolation and spatial decomposition.
This talk will discuss how the use of policies allows us to build efficient, scalable and accessible libraries for scientific applications. We will show how this powerful generic programming technique abstracts scientists away from complex networking and synchronization code.
The intended audience for this talk is developers interested in the field of scientific computing, library design or generic programming. No particular knowledge of any of the background mathematics or astrophysics will be expected of the audience.