Practical Multi-Scale Code Coupling?

This month I thought I would use this blog space to dump some thoughts and musings on the practical aspects of multi-scale coupling that have come to the light the more I talk with people from various scientific discplines looking to achieve this in some way or other! 

Clearly, a group like this one has a fundamental interest in problems at different scales. Arguably, this means a fundamental interest in code coupling as it is unlikely a single software framework or computational method will capture physics at very different length- and time-scales. The same can be said for many other areas of science, not just engineering. So we know that multi-scale, coupled simulation is important, what about when we actually try to do it?

I have talked on this blog in the past about some coupling software approaches, one in particular, the Multiscale Universal Interface (https://doi.org/10.1016/j.jcp.2015.05.004) or MUI. This uses MPI to transfer data between solvers in order to enable code coupling and provides an extensible framework in which to build spatial or temporal interpolation schemes to allow data sampling between dissimilar methods. Other frameworks exist (i.e. OpenPALM, MUSCLE-2, CPL) that provide similar functionality. The interesting point though is what multi-scale coupling actually means. 

When people thinking of coupling existing solvers, they tend to initially imagine some sort of domain-decomposed solution, two solvers operate on their domain independantly (note: these could be fully overlapped or adjacent with an overlapping region) and then each domain transfers data to the other. For those starting with the raw mathematics, they often look to remove seperation between methods where they can in order to simplify the problems (as a good mathematician should!) There are numerous examples of literature out there on what types of classification these couplings fall into, tight, loose, monolithic etc. 

The interesting thing for me though is that when we talk about multi-scale coupling, often the first option is the most likely as when one approaches the task of coupling Molecular Dynamics to complex 3-D Computational Fluid Dynamics, does one want to create a full CFD and MD solver? No, one does not! Clearly there are no hard and fast rules, but more often than not, complex multi-scale problems seem to fit this pattern.

So we know that we are likely coupling two existing solvers together, we know that we can use coupling software like MUI to glue them together, so we know that we have at least two seperate domains to deal with. This is where a problem comes in when dealing with practical engineering applications and the question that needs answering (and won't be in this blog because it' an open question):

"If we have two seperate domains at length scales so different it is considered multi-scale, how can we reasonably couple them in any physical sense? Indeed, should we even be realistically trying to achieve this?"

There is a caveat to this statement: the situation where one end of the coupled length scale spectrum only aims to provide (or receive) a single answer to the other. For example if we wish to define the rheology of a liquid in a macroscopic CFD simulation using MD, then this could be simplified to saying that we wish to define a parameter for whatever viscosity formulation the CFD uses, using MD. Clearly there is a huge complexity in doing this but it is tractable as the MD simulation is not trying to recreate a physical part of the CFD domain, a typical MD "periodic box" scenario may well be enough to derive a single macroscopic value.

I'm not going to provide an answer to the question here as I think it's an open question but just to highlight what I mean. This group has done some really cool work over the past 5 or so years on coupled simulation of difficult micro and nano scale problems where typical CFD solvers would simply fail because Navier-Stokes doesn't capture the physics correctly, such as flow of water through a carbon nanotube. In these we have augmented the computational domain of an intentionally simple CFD solver with either MD, or direct simulation Monte Carlo (DSMC) sub-domains.

There are plenty of references available through the publications section of this site, but this has meant simulating flow through nano- or micro-channels with a high-aspect ratio that would normally be achieved with weeks of MD simulation have been tackled in hours or days. However, this is a very specific case and arguably, isn't multi-scale as both domains are of the same length-scales.

In a nutshell, what do we do when we want to simulate a portion of a truly macroscopic domain (i.e. of the order of metres or even centimetres or millimetres) using a method appropriate to the nano-scale and we want to not have died of old age by the end of the calculations and we want to re-use existing solvers. Answers on a post-card please!