move assignment of sol tracer concentration into TracerContainer

This commit is contained in:
Arne Morten Kvarving 2025-02-14 09:14:56 +01:00
parent 00fe560720
commit dcc4aa30dd
3 changed files with 22 additions and 11 deletions

View File

@ -649,17 +649,10 @@ public:
[globalDofIdx, &tracerModel](const unsigned tracerIdx)
{ return tracerModel.freeTracerConcentration(tracerIdx,
globalDofIdx); });
if (! this->tracerC_.solConcentrations_.empty()) {
for (int tracerIdx = 0; tracerIdx < tracerModel.numTracers(); ++tracerIdx) {
if (this->tracerC_.solConcentrations_[tracerIdx].empty()) {
continue;
}
this->tracerC_.solConcentrations_[tracerIdx][globalDofIdx] =
tracerModel.solTracerConcentration(tracerIdx, globalDofIdx);
}
}
this->tracerC_.assignSolConcentrations(globalDofIdx,
[globalDofIdx, &tracerModel](const unsigned tracerIdx)
{ return tracerModel.solTracerConcentration(tracerIdx,
globalDofIdx); });
// output residual
for ( int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx )

View File

@ -76,6 +76,21 @@ assignFreeConcentrations(const unsigned globalDofIdx,
});
}
template<class FluidSystem>
void TracerContainer<FluidSystem>::
assignSolConcentrations(const unsigned globalDofIdx,
const AssignFunction& concentration)
{
std::for_each(solConcentrations_.begin(), solConcentrations_.end(),
[globalDofIdx, idx = 0, &concentration](auto& tracer) mutable
{
if (!tracer.empty()) {
tracer[globalDofIdx] = concentration(idx);
}
++idx;
});
}
template<class FluidSystem>
void TracerContainer<FluidSystem>::
outputRestart(data::Solution& sol)

View File

@ -52,6 +52,9 @@ public:
void assignFreeConcentrations(const unsigned globalDofIdx,
const AssignFunction& concentration);
void assignSolConcentrations(const unsigned globalDofIdx,
const AssignFunction& concentration);
void outputRestart(data::Solution& sol);
const EclipseState& eclState_;