Merge pull request #4399 from akva2/fix_damaris

fix Damaris setup in Main
This commit is contained in:
Bård Skaflestad 2023-01-18 17:54:13 +01:00 committed by GitHub
commit 73968d9c6d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 9 deletions

View File

@ -218,14 +218,18 @@ void Main::setupVanguard()
}
#if HAVE_DAMARIS
void Main::setupDamaris(const std::string& outputDir)
void Main::setupDamaris(const std::string& outputDir,
const bool enableDamarisOutputCollective)
{
if (!outputDir.empty()) {
ensureOutputDirExists(outputDir);
}
// By default EnableDamarisOutputCollective is true so all simulation results will
// be written into one single file for each iteration using Parallel HDF5.
// It set to false, FilePerCore mode is used in Damaris, then simulation results in each
// node are aggregated by dedicated Damaris cores and stored to separate files per Damaris core.
// Irrespective of mode, output is written asynchronously at the end of each timestep.
const bool enableDamarisOutputCollective = EWOMS_GET_PARAM(PreTypeTag, bool, EnableDamarisOutputCollective);
// Using the ModifyModel class to set the XML file for Damaris.
DamarisOutput::initializeDamaris(EclGenericVanguard::comm(), EclGenericVanguard::comm().rank(), outputDir, enableDamarisOutputCollective);
int is_client;
@ -235,8 +239,10 @@ void Main::setupDamaris(const std::string& outputDir)
if (isSimulationRank_ && err == DAMARIS_OK) {
damaris_client_comm_get(&new_comm);
EclGenericVanguard::setCommunication(std::make_unique<Parallel::Communication>(new_comm));
} else {
return false;
}
if (err != DAMARIS_OK) {
OPM_THROW(std::runtime_error, "Failed to configure Damaris: " + std::to_string(err));
}
}
#endif

View File

@ -320,10 +320,8 @@ private:
#if HAVE_DAMARIS
enableDamarisOutput_ = EWOMS_GET_PARAM(PreTypeTag, bool, EnableDamarisOutput);
if (enableDamarisOutput_) {
if (!outputDir.empty()) {
ensureOutputDirExists(outputDir);
}
this->setupDamaris(outputDir);
this->setupDamaris(outputDir,
EWOMS_GET_PARAM(PreTypeTag, bool, EnableDamarisOutputCollective));
}
#endif // HAVE_DAMARIS
@ -616,7 +614,8 @@ private:
void setupVanguard();
#if HAVE_DAMARIS
void setupDamaris(const std::string& outputDir);
void setupDamaris(const std::string& outputDir,
const bool enableDamarisOutputCollective);
#endif
int argc_{0};