#ifndef ITEM_ARRAY_UTILS_HPP #define ITEM_ARRAY_UTILS_HPP #include <utils/Messenger.hpp> #include <mesh/Connectivity.hpp> #include <mesh/ItemArray.hpp> #include <mesh/Synchronizer.hpp> #include <mesh/SynchronizerManager.hpp> #include <iostream> template <typename DataType, ItemType item_type, typename ConnectivityPtr> void synchronize(ItemArray<DataType, item_type, ConnectivityPtr>& item_array) { static_assert(not std::is_const_v<DataType>, "cannot synchronize ItemArray of const data"); if (parallel::size() > 1) { auto& manager = SynchronizerManager::instance(); const IConnectivity* connectivity = item_array.connectivity_ptr().get(); Synchronizer& synchronizer = manager.getConnectivitySynchronizer(connectivity); synchronizer.synchronize(item_array); } } #endif // ITEM_ARRAY_UTILS_HPP