Concurrently coupled numerical simulations using heterogeneous solvers are
powerful tools for modeling multiscale phenomena. However, major modifications
to existing codes are often required to enable such simulations, posing
significant difficulties in practice. In this paper we present a C++ library,
i.e. the Multiscale Universal Interface (MUI), which is capable of facilitating
the coupling effort for a wide range of multiscale simulations. The library
adopts a header-only form with minimal external dependency and hence can be
easily dropped into existing codes. A data sampler concept is introduced,
combined with a hybrid dynamic/static typing mechanism, to create an easily
customizable framework for solver-independent data interpretation. The library
integrates MPI MPMD support and an asynchronous communication protocol to
handle inter-solver information exchange irrespective of the solvers' own MPI
awareness. Template metaprogramming is heavily employed to simultaneously
improve runtime performance and code flexibility. We validated the library by
solving three different multiscale problems, which also serve to demonstrate
the flexibility of the framework in handling heterogeneous models and solvers.
In the first example, a Couette flow was simulated using two concurrently
coupled Smoothed Particle Hydrodynamics (SPH) simulations of different spatial
resolutions. In the second example, we coupled the deterministic SPH method
with the stochastic Dissipative Particle Dynamics (DPD) method to study the
effect of surface grafting on the hydrodynamics properties on the surface. In
the third example, we consider conjugate heat transfer between a solid domain
and a fluid domain by coupling the particle-based energy-conserving DPD (eDPD)
method with the Finite Element Method (FEM).Comment: The library source code is freely available under the GPLv3 license
at http://www.cfm.brown.edu/repo/release/MUI