ParallelPAvgCalculator: template Scalar type

This commit is contained in:
Arne Morten Kvarving 2024-02-20 20:27:55 +01:00
parent b68a854909
commit 66a08b9c1a
3 changed files with 13 additions and 5 deletions

View File

@ -32,15 +32,18 @@
#include <functional>
#include <initializer_list>
Opm::ParallelPAvgCalculator::
template<class Scalar>
Opm::ParallelPAvgCalculator<Scalar>::
ParallelPAvgCalculator(const Parallel::Communication& comm,
const GridDims& cellIndexMap,
const WellConnections& connections)
: PAvgCalculator { cellIndexMap, connections }
: PAvgCalculator<Scalar> { cellIndexMap, connections }
, comm_ { comm }
{}
void Opm::ParallelPAvgCalculator::collectGlobalContributions()
template<class Scalar>
void Opm::ParallelPAvgCalculator<Scalar>::
collectGlobalContributions()
{
auto collect = [this](Accumulator& accumulator)
{
@ -54,3 +57,5 @@ void Opm::ParallelPAvgCalculator::collectGlobalContributions()
collect(this->accumCTF_);
collect(this->accumPV_);
}
template class Opm::ParallelPAvgCalculator<double>;

View File

@ -38,7 +38,8 @@ namespace Opm {
/// have a flowing bottom-hole pressure. Mainly useful for reporting.
///
/// Parallel edition. Handles distributed wells.
class ParallelPAvgCalculator : public PAvgCalculator<double>
template<class Scalar>
class ParallelPAvgCalculator : public PAvgCalculator<Scalar>
{
public:
/// Constructor
@ -55,6 +56,8 @@ public:
const WellConnections& connections);
private:
using Accumulator = typename PAvgCalculator<Scalar>::Accumulator;
/// MPI communication object.
std::reference_wrapper<const Parallel::Communication> comm_;

View File

@ -179,7 +179,7 @@ createCalculator(const Well& well,
assert (this->wellConnSrc_.size() == this->localConnSet_.size());
const auto ix = this->calculators_
.setCalculator(well.seqIndex(), std::make_unique<ParallelPAvgCalculator>
.setCalculator(well.seqIndex(), std::make_unique<ParallelPAvgCalculator<double>>
(parallelWellInfo.communication(),
this->cellIndexMap_, well.getConnections()));