.. _InputsMPMD:

Multiple Program Multiple Data (MPMD)
=====================================

MFIX-Exa utilizes the AMReX-MPMD interface to send data across to another program or application. In order to enable this
feature, the executable has to be built with ``-DMFIX_MPMD = yes``.

*Limitations*

* Does not work with simulations that require restarts.
* Cannot be used to send and receive particle data.


The following inputs are defined using the ``mfix`` prefix and control frequency and the data sent to the other program.

+----------------------+-----------------------------------------------------------------------+-------------+-----------+
|                      | Description                                                           |   Type      | Default   |
+======================+=======================================================================+=============+===========+
| mpmd_int             | Frequency at which data is sent to the other application              |    Int      | -1        |
|                      | when using MPMD.                                                      |             |           |
+----------------------+-----------------------------------------------------------------------+-------------+-----------+
| mpmd_per_approx      | Time period for sending data to the other pipeline (approximate)      |    Real     | -1        |
|                      | when using MPMD.                                                      |             |           |
+----------------------+-----------------------------------------------------------------------+-------------+-----------+
| mpmd_static_mfs      | A list of the names of static ``MultiFabs`` that will be sent         |   String    | None      |
|                      | only once when using MPMD. Possible values are                        |             |           |
|                      | "volfrac" and "centroid".                                             |             |           |
+----------------------+-----------------------------------------------------------------------+-------------+-----------+
| mpmd_mfs             | A list of the names of  multifabs that will be sent per set frequency |   String    | None      |
|                      | when using MPMD. Possible values are "ep_g", "vel_g", "T_g"           |             |           |
|                      | and "X_gk".                                                           |             |           |
+----------------------+-----------------------------------------------------------------------+-------------+-----------+

The description of a python script that gathers and plots velocity statistics for fluid pipe flow is provided in
:ref:`the reference section<ReferenceMPMD>`, while the python script can be found in the source code under the
tutorials directory, ``tutorials/mpmd/main.py``.