I am working on multiphysics simulations, using a partitioned approach with black-box solvers and a standalone coupling algorithm. That's a lot of jargon so let me briefly elaborate:
In case of fluid-structure interactions, I would need a flow solver (say OpenFOAM) and a structure solver (say Code Aster) and a code of my own design (aka the coupling algorithm) which manages the multiphysics simulation. The coupling algorithm basically boils down to a quasi-newton algorithm in each time step. During each iteration of the quasi-newton algorithm, numerical data is transferred between the coupling algorithm and the third-party solvers. I have performed such simulations using a coupling algorithm and a structure solver written in MATLAB and a third party commercial CFD package. Numerical data such as pressure, velocity and displacement distributions were stored in arrays and transferred between the solvers and the coupling algorithm using MPI's send and receive functions. My understanding is that Julia has a package which includes some MPI functionality. But the exact state of that package is unclear to me. Furthermore I do not know if Julia has a neat way of transferring numerical data to and from third party applications written in languages other than Julia (mostly interested in C, C++ and Fortran). So in the context of the work explained above, what would be the best way for me to transfer numerical data between an application written in Julia and several third-party applications written in languages other than Julia? --------- In the process of using Julia to perform fluid-structure interactions I have been developing several standalone Julia packages, which I hope to eventually combine into a large modular framework. Currently I have packages implementing Krylov solvers (for determined and undetermined linear systems), quasi-newton algorithms (for finding roots of nonlinear vector functions) and radial basis functions (for interpolating nodal values). Depending on the answers/suggestions I get from this topic I also might create my own MPI package for Julia (which I probably will probably experience to be extremely tedious).
