Add support for Multiscale Universal Interface (MUI) library
Issue/feature addressed
This adds support for coupling using the Multiscale Universal Interface (MUI) library. This library allows data on grids with different resolutions to be exchanged between two solvers which may be advancing at different time-steps. The coupling interface handles the interpolation between these grids and the different time-step sizes.
Proposed solution
In this MR we add support for linking with the MUI library and demonstrate the interface through a new equation system in the DummySolver, extending the earlier work to add the Cwipi coupling library.
Implementation
At the moment, the MUI interface is demonstrated only in the DummySolver, with the exchange being hard-coded in this solver. Details of how the exchange is managed (which application talks to which other application, which variables are exchanged, etc) are handled through a dedicated <COUPLING>
section of the XML input file. In particular, this provides details about which variables are to be sent to another application, the names of the variables into which information should be received, as well as the original names of these variables.
Tests
A test Dummy_2DTestMUI
is provided which runs two separate instances of the DummySolver (each with their individual input files) and demonstrates the exchange of fields of data between them.
Suggested reviewers
Notes
The majority of the implementation for this work was completed by Stefano Rolfo at STFC.
Checklist
-
Functions and classes, or changes to them, are documented. -
User guide/documentation is updated. -
Changelog is updated. -
Suitable tests added for new functionality. -
Contributed code is correctly formatted. (See the contributing guidelines). -
License added to any new files. -
No extraneous files have been added (e.g. compiler output or test data files).