Skip to content
Snippets Groups Projects
Commit 76f5e5c9 authored by Dennis Gläser's avatar Dennis Gläser
Browse files

[outputmodule] update data in parallel

parent 07e7e812
No related branches found
No related tags found
1 merge request!3768Feature/generic output module
......@@ -17,6 +17,7 @@
#if DUMUX_HAVE_GRIDFORMAT
#include <ranges>
#include <execution>
#include <type_traits>
#include <gridformat/gridformat.hpp>
......@@ -442,19 +443,22 @@ public:
void updateFieldData(const GridVariables& gridVars, const SolutionVector& x)
{
resizeFieldData_(gridVars.gridGeometry().numDofs());
for (const auto& element : elements(gridVars.gridGeometry().gridView()))
{
auto fvGeometry = localView(gridVars.gridGeometry()).bindElement(element);
auto elemVolVars = localView(gridVars.curGridVolVars()).bindElement(element, fvGeometry, x);
for (const auto& scv : scvs(fvGeometry))
{
const auto& volVars = elemVolVars[scv];
for (auto& s : scalarFieldStorage_) { s.data.at(scv.dofIndex()) = s.getter(volVars); }
for (auto& s : vectorFieldStorage_) { s.data.at(scv.dofIndex()) = s.getter(volVars); }
for (auto& s : tensorFieldStorage_) { s.data.at(scv.dofIndex()) = s.getter(volVars); }
}
}
const auto range = GridFormat::cells(gridVars.gridGeometry().gridView());
std::for_each(
std::execution::par_unseq,
std::ranges::begin(range),
std::ranges::end(range),
[&] (const auto& element) {
auto fvGeometry = localView(gridVars.gridGeometry()).bindElement(element);
auto elemVolVars = localView(gridVars.curGridVolVars()).bindElement(element, fvGeometry, x);
for (const auto& scv : scvs(fvGeometry))
{
const auto& volVars = elemVolVars[scv];
for (auto& s : scalarFieldStorage_) { s.data.at(scv.dofIndex()) = s.getter(volVars); }
for (auto& s : vectorFieldStorage_) { s.data.at(scv.dofIndex()) = s.getter(volVars); }
for (auto& s : tensorFieldStorage_) { s.data.at(scv.dofIndex()) = s.getter(volVars); }
}
});
}
void clearFieldData()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment