Open permcody opened 6 years ago
@permcody let's not call the external mesh a "rendezvous" mesh... that actually has a different meaning. I haven't seen your code yet - but let's refer to this as the ExternalMesh
.
I hadn't thought of the issue that you need to initialize the external application before building the mesh... that is interesting. I'll have to think about that a bit more.
Rationale
New enhancements to the framework to support a MooseMesh data structure for externally coupled applications to enable better interoperability and to simplify complex transfer operations when working in parallel.
Description
To further the "coupling to external codes" capability of the MOOSE framework we need the ability to create a MooseMesh for externally coupled applications. This Mesh will be used for all Multiapp Transfers and visualization of solution information on the coupled application's data.
Design
Rendezvous Mesh
A natural place to create a Rendezvous mesh is to just extend the existing MooseMesh object and build the mesh based on information from the externally coupled application. I've already prototyped this for the NRC's TRACE code and it works perfectly. One thing that could be added on the framework side to better support this capability would be the ability to call initialization routines on the external applications earlier. Currently in MOOSE, all of the mesh related activities occur before "Executioner" and "Problem" and "Multiapp" objects are constructed where current external initialization normally occurs.
Rendezvous Mesh Syncing
Once the Rendezvous Mesh is added into the simulation. Extra routines are needed to synchronize information between the mesh and external application. These routines don't exist today because they are not necessary for any MOOSE-based application which uses information off the Mesh an associated solution vectors directly. Extra overridable callbacks will be needed before/after each transfer (depending on direction) to keep information in sync.
Rendezvous Mesh Adaptivity
The Rendezvous Mesh will need to support adaptivity or re-meshing operations. MOOSE already contains callbacks when adaptivity is used but these may not be useful for externally coupled applications. The ability for the Rendezvous mesh to be adapted (or re-meshed) may need to be controlled more from the external application, or may need to occur at new times within the simulation not currently supported. More design will be needed after further requirements are gathered.
Impact
Moderate: New capability that shouldn't interfere with existing framework behavior.
Tag @friedmud