diff --git a/src/framework/domain/metadomain.cpp b/src/framework/domain/metadomain.cpp index ed4373df2..57b2ece17 100644 --- a/src/framework/domain/metadomain.cpp +++ b/src/framework/domain/metadomain.cpp @@ -369,6 +369,8 @@ namespace ntt { template void Metadomain::metricCompatibilityCheck() const { + const auto epsilon = std::numeric_limits::epsilon() * + static_cast(100.0); const auto dx_min = g_mesh.metric.dxMin(); auto dx_min_from_domains = std::numeric_limits::infinity(); for (unsigned int idx { 0 }; idx < g_ndomains; ++idx) { @@ -377,7 +379,7 @@ namespace ntt { dx_min_from_domains = std::min(dx_min_from_domains, current_dx_min); } raise::ErrorIf( - not cmp::AlmostEqual(dx_min, dx_min_from_domains), + not cmp::AlmostEqual(dx_min / dx_min_from_domains, ONE, epsilon), "dx_min is not the same across all domains: " + std::to_string(dx_min) + " " + std::to_string(dx_min_from_domains), HERE); diff --git a/src/framework/domain/output.cpp b/src/framework/domain/output.cpp index 6961d2826..3dc95c18a 100644 --- a/src/framework/domain/output.cpp +++ b/src/framework/domain/output.cpp @@ -125,6 +125,11 @@ namespace ntt { } } } + for (const auto& sp : specs) { + raise::ErrorIf((sp > prtl_species.size()) or (sp == 0), + "Invalid species index " + std::to_string(sp), + HERE); + } auto scatter_buff = Kokkos::Experimental::create_scatter_view(buffer); // some parameters diff --git a/src/framework/tests/comm_mpi.cpp b/src/framework/tests/comm_mpi.cpp index 2f65defd6..157a9692b 100644 --- a/src/framework/tests/comm_mpi.cpp +++ b/src/framework/tests/comm_mpi.cpp @@ -58,4 +58,4 @@ auto main(int argc, char* argv[]) -> int { Kokkos::finalize(); return 0; -} \ No newline at end of file +} diff --git a/src/output/tests/writer-mpi.cpp b/src/output/tests/writer-mpi.cpp index 6ab16305f..f6d3ee88a 100644 --- a/src/output/tests/writer-mpi.cpp +++ b/src/output/tests/writer-mpi.cpp @@ -60,7 +60,7 @@ auto main(int argc, char* argv[]) -> int { { // write auto writer = out::Writer(); - writer.init(&adios, "hdf5", "test"); + writer.init(&adios, "hdf5", "test", false); writer.defineMeshLayout({ static_cast(mpi_size) * nx1 }, { static_cast(mpi_rank) * nx1 }, { nx1 }, @@ -74,13 +74,13 @@ auto main(int argc, char* argv[]) -> int { field_names.push_back(writer.fieldWriters()[0].name(i)); addresses.push_back(i); } - writer.beginWriting(0, 0.0); + writer.beginWriting(WriteMode::Fields, 0, 0.0); writer.writeField(field_names, field, addresses); - writer.endWriting(); + writer.endWriting(WriteMode::Fields); - writer.beginWriting(1, 0.1); + writer.beginWriting(WriteMode::Fields, 1, 0.1); writer.writeField(field_names, field, addresses); - writer.endWriting(); + writer.endWriting(WriteMode::Fields); adios.ExitComputationBlock(); }