Commit 698b6673 authored by GILLES Sebastien's avatar GILLES Sebastien

#1476 In MoReFEMData, introduce a new template parameter about the type of the program run.

parent 5a48a7fb
......@@ -49,6 +49,9 @@ namespace MoReFEM
{ };
//! Whether a model, a test or a post-processing program is run.
enum class program_type { model, test, post_processing };
/*!
* \brief Init MoReFEM: initialize mpi and read the input data file.
......@@ -58,6 +61,8 @@ namespace MoReFEM
* Make sure each exception is properly communicated to all ranks so that each rank can gracefully throw
* an exception and hence allow the program to stop properly.
*
* \tparam ProgramTypeT Type of the program run. For instance for post-processing there is no removal of the
* existing result directory, contrary to what happens in model run.
* \tparam AdditionalCommandLineArgumentsPolicyT Policy if you need additional arguments on the command line.
* To see a concrete example of this possibility, have a look at Test/Core/MoReFEMData/test_command_line_options.cpp
* which demonstrate the possibility.
......@@ -69,6 +74,7 @@ namespace MoReFEM
template
<
class InputDataT,
program_type ProgramTypeT,
Utilities::InputDataNS::DoTrackUnusedFields DoTrackUnusedFieldsT = Utilities::InputDataNS::DoTrackUnusedFields::yes,
class AdditionalCommandLineArgumentsPolicyT = NoAdditionalCommandLineArgument
>
......@@ -78,7 +84,7 @@ namespace MoReFEM
public:
//! Alias to self.
using self = MoReFEMData<InputDataT, DoTrackUnusedFieldsT, AdditionalCommandLineArgumentsPolicyT>;
using self = MoReFEMData<InputDataT, ProgramTypeT, DoTrackUnusedFieldsT, AdditionalCommandLineArgumentsPolicyT>;
//! Alias to unique_ptr.
using const_unique_ptr = std::unique_ptr<self>;
......
......@@ -23,10 +23,11 @@ namespace MoReFEM
template
<
class InputDataT,
program_type ProgramTypeT,
Utilities::InputDataNS::DoTrackUnusedFields DoTrackUnusedFieldsT,
class AdditionalCommandLineArgumentsPolicyT
>
MoReFEMData<InputDataT, DoTrackUnusedFieldsT, AdditionalCommandLineArgumentsPolicyT>
MoReFEMData<InputDataT, ProgramTypeT, DoTrackUnusedFieldsT, AdditionalCommandLineArgumentsPolicyT>
::MoReFEMData(int argc, char** argv)
{
Internal::PetscNS::RAII::CreateOrGetInstance(__FILE__, __LINE__, argc, argv);
......@@ -203,10 +204,11 @@ namespace MoReFEM
template
<
class InputDataT,
program_type ProgramTypeT,
Utilities::InputDataNS::DoTrackUnusedFields DoTrackUnusedFieldsT,
class AdditionalCommandLineArgumentsPolicyT
>
MoReFEMData<InputDataT, DoTrackUnusedFieldsT, AdditionalCommandLineArgumentsPolicyT>
MoReFEMData<InputDataT, ProgramTypeT, DoTrackUnusedFieldsT, AdditionalCommandLineArgumentsPolicyT>
::~MoReFEMData()
{
......@@ -237,11 +239,12 @@ namespace MoReFEM
template
<
class InputDataT,
program_type ProgramTypeT,
Utilities::InputDataNS::DoTrackUnusedFields DoTrackUnusedFieldsT,
class AdditionalCommandLineArgumentsPolicyT
>
inline const Wrappers::Mpi&
MoReFEMData<InputDataT, DoTrackUnusedFieldsT, AdditionalCommandLineArgumentsPolicyT>
MoReFEMData<InputDataT, ProgramTypeT, DoTrackUnusedFieldsT, AdditionalCommandLineArgumentsPolicyT>
::GetMpi() const noexcept
{
decltype(auto) raii = Internal::PetscNS::RAII::GetInstance(__FILE__, __LINE__);
......@@ -252,10 +255,12 @@ namespace MoReFEM
template
<
class InputDataT,
program_type ProgramTypeT,
Utilities::InputDataNS::DoTrackUnusedFields DoTrackUnusedFieldsT,
class AdditionalCommandLineArgumentsPolicyT
>
const InputDataT& MoReFEMData<InputDataT, DoTrackUnusedFieldsT, AdditionalCommandLineArgumentsPolicyT>
const InputDataT&
MoReFEMData<InputDataT, ProgramTypeT, DoTrackUnusedFieldsT, AdditionalCommandLineArgumentsPolicyT>
::GetInputData() const noexcept
{
assert(!(!input_data_));
......@@ -266,11 +271,13 @@ namespace MoReFEM
template
<
class InputDataT,
program_type ProgramTypeT,
Utilities::InputDataNS::DoTrackUnusedFields DoTrackUnusedFieldsT,
class AdditionalCommandLineArgumentsPolicyT
>
template<MpiScale MpiScaleT>
const std::string& MoReFEMData<InputDataT, DoTrackUnusedFieldsT, AdditionalCommandLineArgumentsPolicyT>
const std::string&
MoReFEMData<InputDataT, ProgramTypeT, DoTrackUnusedFieldsT, AdditionalCommandLineArgumentsPolicyT>
::GetResultDirectory() const noexcept
{
if constexpr (MpiScaleT == MpiScale::processor_wise)
......@@ -283,10 +290,12 @@ namespace MoReFEM
template
<
class InputDataT,
program_type ProgramTypeT,
Utilities::InputDataNS::DoTrackUnusedFields DoTrackUnusedFieldsT,
class AdditionalCommandLineArgumentsPolicyT
>
const Internal::Parallelism* MoReFEMData<InputDataT, DoTrackUnusedFieldsT, AdditionalCommandLineArgumentsPolicyT>
const Internal::Parallelism*
MoReFEMData<InputDataT, ProgramTypeT, DoTrackUnusedFieldsT, AdditionalCommandLineArgumentsPolicyT>
::GetParallelismPtr() const noexcept
{
if (!parallelism_)
......
......@@ -138,7 +138,7 @@ namespace MoReFEM
using InputData = InputData<InputDataTuple>;
//! \copydoc doxygen_hide_morefem_data_type
using morefem_data_type = MoReFEMData<InputData>;
using morefem_data_type = MoReFEMData<InputData, program_type::model>;
......
......@@ -29,7 +29,7 @@ int main(int argc, char** argv)
try
{
MoReFEMData<InputData> morefem_data(argc, argv);
MoReFEMData<InputData, program_type::model> morefem_data(argc, argv);
const auto& input_data = morefem_data.GetInputData();
const auto& mpi = morefem_data.GetMpi();
......
......@@ -35,7 +35,12 @@ int main(int argc, char** argv)
//! \copydoc doxygen_hide_model_specific_input_data
using InputData = ElasticityNS::InputData;
MoReFEMData<InputData, Utilities::InputDataNS::DoTrackUnusedFields::no> morefem_data(argc, argv);
MoReFEMData
<
InputData,
program_type::post_processing,
Utilities::InputDataNS::DoTrackUnusedFields::no
> morefem_data(argc, argv);
const auto& input_data = morefem_data.GetInputData();
const auto& mpi = morefem_data.GetMpi();
......
......@@ -25,7 +25,7 @@ int main(int argc, char** argv)
try
{
MoReFEMData<InputData> morefem_data(argc, argv);
MoReFEMData<InputData, program_type::post_processing> morefem_data(argc, argv);
RewriteInputDataFile(morefem_data.GetInputData());
}
......
......@@ -162,7 +162,7 @@ namespace MoReFEM
using InputData = InputData<InputDataTuple>;
//! \copydoc doxygen_hide_morefem_data_type
using morefem_data_type = MoReFEMData<InputData>;
using morefem_data_type = MoReFEMData<InputData, program_type::model>;
} // namespace HeatNS
......
......@@ -29,7 +29,7 @@ int main(int argc, char** argv)
try
{
MoReFEMData<InputData> morefem_data(argc, argv);
MoReFEMData<InputData, program_type::model> morefem_data(argc, argv);
const auto& input_data = morefem_data.GetInputData();
const auto& mpi = morefem_data.GetMpi();
......
......@@ -35,7 +35,12 @@ int main(int argc, char** argv)
//! \copydoc doxygen_hide_model_specific_input_data
using InputData = HeatNS::InputData;
MoReFEMData<InputData, Utilities::InputDataNS::DoTrackUnusedFields::no> morefem_data(argc, argv);
MoReFEMData
<
InputData,
program_type::post_processing,
Utilities::InputDataNS::DoTrackUnusedFields::no
> morefem_data(argc, argv);
const auto& input_data = morefem_data.GetInputData();
const auto& mpi = morefem_data.GetMpi();
......
......@@ -25,7 +25,7 @@ int main(int argc, char** argv)
try
{
MoReFEMData<InputData> morefem_data(argc, argv);
MoReFEMData<InputData, program_type::post_processing> morefem_data(argc, argv);
RewriteInputDataFile(morefem_data.GetInputData());
}
......
......@@ -131,7 +131,7 @@ namespace MoReFEM
using InputData = InputData<InputDataTuple>;
//! \copydoc doxygen_hide_morefem_data_type
using morefem_data_type = MoReFEMData<InputData>;
using morefem_data_type = MoReFEMData<InputData, program_type::model>;
} // namespace CardiacMechanicsPrestressNS
......
......@@ -27,7 +27,7 @@ int main(int argc, char** argv)
try
{
MoReFEMData<InputData> morefem_data(argc, argv);
MoReFEMData<InputData, program_type::model> morefem_data(argc, argv);
const auto& input_data = morefem_data.GetInputData();
const auto& mpi = morefem_data.GetMpi();
......
......@@ -35,7 +35,12 @@ int main(int argc, char** argv)
//! \copydoc doxygen_hide_model_specific_input_data
using InputData = MidpointHyperelasticityNS::InputData;
MoReFEMData<InputData, Utilities::InputDataNS::DoTrackUnusedFields::no> morefem_data(argc, argv);
MoReFEMData
<
InputData,
program_type::post_processing,
Utilities::InputDataNS::DoTrackUnusedFields::no
> morefem_data(argc, argv);
const auto& input_data = morefem_data.GetInputData();
const auto& mpi = morefem_data.GetMpi();
......
......@@ -25,7 +25,7 @@ int main(int argc, char** argv)
try
{
MoReFEMData<InputData> morefem_data(argc, argv);
MoReFEMData<InputData, program_type::post_processing> morefem_data(argc, argv);
RewriteInputDataFile(morefem_data.GetInputData());
}
......
......@@ -128,7 +128,7 @@ namespace MoReFEM
using InputData = InputData<InputDataTuple>;
//! \copydoc doxygen_hide_morefem_data_type
using morefem_data_type = MoReFEMData<InputData>;
using morefem_data_type = MoReFEMData<InputData, program_type::model>;
} // namespace LaplacianNS
......
......@@ -25,11 +25,11 @@ int main(int argc, char** argv)
{
//! \copydoc doxygen_hide_model_specific_input_data
using InputData = LaplacianNS::InputData;
using InputData = LaplacianNS::InputData;
try
{
MoReFEMData<InputData> morefem_data(argc, argv);
MoReFEMData<InputData, program_type::model> morefem_data(argc, argv);
const auto& input_data = morefem_data.GetInputData();
const auto& mpi = morefem_data.GetMpi();
......
......@@ -35,7 +35,12 @@ int main(int argc, char** argv)
//! \copydoc doxygen_hide_model_specific_input_data
using InputData = LaplacianNS::InputData;
MoReFEMData<InputData, Utilities::InputDataNS::DoTrackUnusedFields::no> morefem_data(argc, argv);
MoReFEMData
<
InputData,
program_type::post_processing,
Utilities::InputDataNS::DoTrackUnusedFields::no
> morefem_data(argc, argv);
const auto& input_data = morefem_data.GetInputData();
const auto& mpi = morefem_data.GetMpi();
......
......@@ -25,7 +25,7 @@ int main(int argc, char** argv)
try
{
MoReFEMData<InputData> morefem_data(argc, argv);
MoReFEMData<InputData, program_type::post_processing> morefem_data(argc, argv);
RewriteInputDataFile(morefem_data.GetInputData());
}
......
......@@ -149,7 +149,7 @@ namespace MoReFEM
using InputData = InputData<InputDataTuple>;
//! \copydoc doxygen_hide_morefem_data_type
using morefem_data_type = MoReFEMData<InputData>;
using morefem_data_type = MoReFEMData<InputData, program_type::model>;
} // namespace RivlinCubeNS
......
......@@ -43,7 +43,7 @@ namespace MoReFEM
using parent = MoReFEM::Model<Model, morefem_data_type, DoConsiderProcessorWiseLocal2Global::yes>;
//! \copydoc doxygen_hide_morefem_data_type
using morefem_data_type = MoReFEMData<InputData>;
using morefem_data_type = MoReFEMData<InputData, program_type::model>;
public:
......
......@@ -29,7 +29,7 @@ int main(int argc, char** argv)
try
{
MoReFEMData<InputData> morefem_data(argc, argv);
MoReFEMData<InputData, program_type::model> morefem_data(argc, argv);
const auto& input_data = morefem_data.GetInputData();
const auto& mpi = morefem_data.GetMpi();
......
......@@ -35,7 +35,12 @@ int main(int argc, char** argv)
//! \copydoc doxygen_hide_model_specific_input_data
using InputData = RivlinCubeNS::InputData;
MoReFEMData<InputData, Utilities::InputDataNS::DoTrackUnusedFields::no> morefem_data(argc, argv);
MoReFEMData
<
InputData,
program_type::post_processing,
Utilities::InputDataNS::DoTrackUnusedFields::no
> morefem_data(argc, argv);
const auto& input_data = morefem_data.GetInputData();
const auto& mpi = morefem_data.GetMpi();
......
......@@ -25,7 +25,7 @@ int main(int argc, char** argv)
try
{
MoReFEMData<InputData> morefem_data(argc, argv);
MoReFEMData<InputData, program_type::post_processing> morefem_data(argc, argv);
RewriteInputDataFile(morefem_data.GetInputData());
}
......
......@@ -141,7 +141,7 @@ namespace MoReFEM
//! \copydoc doxygen_hide_morefem_data_type
//! \copydoc doxygen_hide_morefem_data_type
using morefem_data_type = MoReFEMData<InputData>;
using morefem_data_type = MoReFEMData<InputData, program_type::model>;
}; // namespace StokesNS
......
......@@ -29,7 +29,7 @@ int main(int argc, char** argv)
try
{
MoReFEMData<InputData> morefem_data(argc, argv);
MoReFEMData<InputData, program_type::model> morefem_data(argc, argv);
const auto& input_data = morefem_data.GetInputData();
const auto& mpi = morefem_data.GetMpi();
......
......@@ -35,7 +35,12 @@ int main(int argc, char** argv)
//! \copydoc doxygen_hide_model_specific_input_data
using InputData = StokesNS::InputData;
MoReFEMData<InputData, Utilities::InputDataNS::DoTrackUnusedFields::no> morefem_data(argc, argv);
MoReFEMData
<
InputData,
program_type::post_processing,
Utilities::InputDataNS::DoTrackUnusedFields::no
> morefem_data(argc, argv);
const auto& input_data = morefem_data.GetInputData();
const auto& mpi = morefem_data.GetMpi();
......
......@@ -25,7 +25,7 @@ int main(int argc, char** argv)
try
{
MoReFEMData<InputData> morefem_data(argc, argv);
MoReFEMData<InputData, program_type::model> morefem_data(argc, argv);
RewriteInputDataFile(morefem_data.GetInputData());
}
......
......@@ -54,7 +54,12 @@ int main(int argc, char** argv)
//! \copydoc doxygen_hide_model_specific_input_data
using InputData = InputData<InputDataTuple>;
MoReFEMData<InputData, Utilities::InputDataNS::DoTrackUnusedFields::no> morefem_data(argc, argv);
MoReFEMData
<
InputData,
program_type::post_processing,
Utilities::InputDataNS::DoTrackUnusedFields::no
> morefem_data(argc, argv);
const auto& input_data = morefem_data.GetInputData();
const auto& mpi = morefem_data.GetMpi();
......
......@@ -68,7 +68,7 @@ int main(int argc, char** argv)
using InputData = InputData<InputDataTuple>;
using morefem_data_type =
MoReFEMData<InputData, Utilities::InputDataNS::DoTrackUnusedFields::no>;
MoReFEMData<InputData, program_type::post_processing, Utilities::InputDataNS::DoTrackUnusedFields::no>;
morefem_data_type morefem_data(argc, argv);
......
......@@ -74,6 +74,7 @@ BOOST_FIXTURE_TEST_CASE(cli_options, Fixture)
using morefem_data_type = MoReFEMData
<
InputData,
program_type::test,
Utilities::InputDataNS::DoTrackUnusedFields::no,
NewArguments
>;
......
......@@ -38,7 +38,7 @@ namespace MoReFEM
using InputData = InputData<InputDataTuple>;
//! \copydoc doxygen_hide_morefem_data_type
using morefem_data_type = MoReFEMData<InputData>;
using morefem_data_type = MoReFEMData<InputData, program_type::test>;
} // namespace TestInputDataSolidNS
......
......@@ -54,7 +54,7 @@ namespace // anonymous
struct MockModel
{
using morefem_data_type = MoReFEMData<TestInputDataSolidNS::InputData>;
using morefem_data_type = MoReFEMData<TestInputDataSolidNS::InputData, program_type::test>;
};
......
......@@ -37,7 +37,7 @@ namespace MoReFEM
using InputData = InputData<InputDataTuple>;
//! \copydoc doxygen_hide_morefem_data_type
using morefem_data_type = MoReFEMData<InputData>;
using morefem_data_type = MoReFEMData<InputData, program_type::test>;
} // namespace TestInputDataSolidNS
......
......@@ -48,7 +48,7 @@ namespace // anonymous
struct MockModel
{
using morefem_data_type = MoReFEMData<TestInputDataSolidNS::InputData>;
using morefem_data_type = MoReFEMData<TestInputDataSolidNS::InputData, program_type::test>;
};
......
......@@ -41,7 +41,7 @@ namespace MoReFEM
using InputData = InputData<InputDataTuple>;
//! \copydoc doxygen_hide_morefem_data_type
using morefem_data_type = MoReFEMData<InputData>;
using morefem_data_type = MoReFEMData<InputData, program_type::test>;
} // namespace TestInputDataSolidNS
......
......@@ -53,7 +53,7 @@ namespace // anonymous
struct MockModel
{
using morefem_data_type = MoReFEMData<TestInputDataSolidNS::InputData>;
using morefem_data_type = MoReFEMData<TestInputDataSolidNS::InputData, program_type::test>;
};
......
......@@ -45,7 +45,7 @@ namespace MoReFEM
using InputData = InputData<InputDataTuple>;
//! \copydoc doxygen_hide_morefem_data_type
using morefem_data_type = MoReFEMData<InputData>;
using morefem_data_type = MoReFEMData<InputData, program_type::test>;
} // namespace TestNS::WriteLuaFileNS
......
......@@ -42,7 +42,7 @@ namespace MoReFEM
using InputData = InputData<InputDataTuple>;
//! \copydoc doxygen_hide_morefem_data_type
using morefem_data_type = MoReFEMData<InputData>;
using morefem_data_type = MoReFEMData<InputData, program_type::test>;
} // namespace TestVariableTimeStepNS
......
......@@ -45,7 +45,7 @@ namespace // anonymous
struct MockModel
{
using morefem_data_type = MoReFEMData<TestVariableTimeStepNS::InputData>;
using morefem_data_type = MoReFEMData<TestVariableTimeStepNS::InputData, program_type::test>;
};
......
......@@ -85,7 +85,7 @@ namespace MoReFEM
using InputData = InputData<InputDataTuple>;
//! \copydoc doxygen_hide_morefem_data_type
using morefem_data_type = MoReFEMData<InputData>;
using morefem_data_type = MoReFEMData<InputData, program_type::test>;
} // namespace P1_to_P_HigherOrder_NS
......
......@@ -34,7 +34,7 @@ int main(int argc, char** argv)
try
{
MoReFEMData<InputData> morefem_data(argc, argv);
MoReFEMData<InputData, program_type::test> morefem_data(argc, argv);
const auto& mpi = morefem_data.GetMpi();
......
......@@ -110,7 +110,7 @@ namespace MoReFEM
using InputData = InputData<InputDataTuple>;
//! \copydoc doxygen_hide_morefem_data_type
using morefem_data_type = MoReFEMData<InputData>;
using morefem_data_type = MoReFEMData<InputData, program_type::test>;
} // namespace CoordsInParallelNS
......
......@@ -28,7 +28,7 @@ int main(int argc, char** argv)
try
{
MoReFEMData<InputData> morefem_data(argc, argv);
MoReFEMData<InputData, program_type::test> morefem_data(argc, argv);
const auto& input_data = morefem_data.GetInputData();
const auto& mpi = morefem_data.GetMpi();
......
......@@ -86,7 +86,7 @@ namespace MoReFEM
using InputData = InputData<InputDataTuple>;
//! \copydoc doxygen_hide_morefem_data_type
using morefem_data_type = MoReFEMData<InputData>;
using morefem_data_type = MoReFEMData<InputData, program_type::test>;
} // namespace DomainListInCoordsNS
......
......@@ -77,7 +77,7 @@ namespace MoReFEM
using InputData = InputData<InputDataTuple>;
//! \copydoc doxygen_hide_morefem_data_type
using morefem_data_type = MoReFEMData<InputData>;
using morefem_data_type = MoReFEMData<InputData, program_type::test>;
} // namespace P1_to_P_HigherOrder_NS
......
......@@ -31,7 +31,7 @@ int main(int argc, char** argv)
try
{
MoReFEMData<InputData> morefem_data(argc, argv);
MoReFEMData<InputData, program_type::test> morefem_data(argc, argv);
const auto& input_data = morefem_data.GetInputData();
const auto& mpi = morefem_data.GetMpi();
......
......@@ -71,7 +71,7 @@ namespace MoReFEM
using InputData = InputData<InputDataTuple>;
//! \copydoc doxygen_hide_morefem_data_type
using morefem_data_type = MoReFEMData<InputData>;
using morefem_data_type = MoReFEMData<InputData, program_type::test>;
} // namespace LoadPrepartitionedMeshNS
......
......@@ -34,7 +34,7 @@ namespace MoReFEM::TestNS::LoadPrepartitionedMeshNS
decltype(auto) mpi = parent::GetMpi();
decltype(auto) mesh_manager = Internal::MeshNS::MeshManager::GetInstance(__FILE__, __LINE__);
decltype(auto) mesh = mesh_manager.GetMesh<1>();
decltype(auto) output_dir = parent::GetOutputDirectory<MpiScale::program_wise>();
decltype(auto) output_dir = parent::GetOutputDirectory<MpiScale::processor_wise>();
decltype(auto) input_data = parent::GetMoReFEMData().GetInputData();
......
......@@ -98,7 +98,7 @@ namespace MoReFEM
using InputData = InputData<InputDataTuple>;
//! \copydoc doxygen_hide_morefem_data_type
using morefem_data_type = MoReFEMData<InputData>;
using morefem_data_type = MoReFEMData<InputData, program_type::test>;
} // namespace TestNS::MovemeshNS
......
......@@ -27,7 +27,7 @@ int main(int argc, char** argv)
try
{
MoReFEMData<InputData> morefem_data(argc, argv);
MoReFEMData<InputData, program_type::test> morefem_data(argc, argv);
const auto& input_data = morefem_data.GetInputData();
const auto& mpi = morefem_data.GetMpi();
......
......@@ -109,7 +109,7 @@ namespace MoReFEM
using InputData = InputData<InputDataTuple>;
//! \copydoc doxygen_hide_morefem_data_type
using morefem_data_type = MoReFEMData<InputData>;
using morefem_data_type = MoReFEMData<InputData, program_type::test>;
} // namespace TestNcoordInDomainNS
......
......@@ -29,7 +29,7 @@ int main(int argc, char** argv)
try
{
MoReFEMData<InputData> morefem_data(argc, argv);
MoReFEMData<InputData, program_type::test> morefem_data(argc, argv);
const auto& input_data = morefem_data.GetInputData();
const auto& mpi = morefem_data.GetMpi();
......
......@@ -151,7 +151,7 @@ namespace MoReFEM
using InputData = InputData<InputDataTuple>;
//! \copydoc doxygen_hide_morefem_data_type
using morefem_data_type = MoReFEMData<InputData>;
using morefem_data_type = MoReFEMData<InputData, program_type::test>;
} // namespace OndomaticNS
......
......@@ -29,7 +29,7 @@ int main(int argc, char** argv)
try
{
MoReFEMData<InputData> morefem_data(argc, argv);
MoReFEMData<InputData, program_type::test> morefem_data(argc, argv);
const auto& input_data = morefem_data.GetInputData();
const auto& mpi = morefem_data.GetMpi();
......
......@@ -56,7 +56,7 @@ namespace MoReFEM
using InputData = InputData<InputDataTuple>;
//! \copydoc doxygen_hide_morefem_data_type