The DD techniques presented here for MFA computation are primarily implemented in Python, with main dependencies on SciPy for B-spline bases evaluations and linear algebra routines. Additionally, the drivers utilize Python bindings (PyDIY) for the DIY [1]} C++ library. DIY is a programming model and runtime
for block-parallel analytics on distributed-memory machines, built on MPI-3 [2]}. Rather than programming
for process parallelism directly in MPI, the programming model in DIY is based on block parallelism. In DIY, data are decomposed
into subdomains called blocks. One or more of these blocks are assigned to processing elements (processes or threads) and the computation is
described over these blocks, and communication between blocks is defined by reusable patterns.
PyDIY utilizes PyBind11 [3]} and MPI4Py [4]} to expose the interfaces in the C++ library. In our implementation, PyDIY is exclusively used to manage the data decomposition, including specifications to share an interface \(\partial \Omega _{i,j}\)  and ghost layers that represent the \(\Delta \cup \delta \)  overlapping domains.
