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 <functional>
#include <initializer_list> #include <initializer_list>
Opm::ParallelPAvgCalculator:: template<class Scalar>
Opm::ParallelPAvgCalculator<Scalar>::
ParallelPAvgCalculator(const Parallel::Communication& comm, ParallelPAvgCalculator(const Parallel::Communication& comm,
const GridDims& cellIndexMap, const GridDims& cellIndexMap,
const WellConnections& connections) const WellConnections& connections)
: PAvgCalculator { cellIndexMap, connections } : PAvgCalculator<Scalar> { cellIndexMap, connections }
, comm_ { comm } , comm_ { comm }
{} {}
void Opm::ParallelPAvgCalculator::collectGlobalContributions() template<class Scalar>
void Opm::ParallelPAvgCalculator<Scalar>::
collectGlobalContributions()
{ {
auto collect = [this](Accumulator& accumulator) auto collect = [this](Accumulator& accumulator)
{ {
@ -54,3 +57,5 @@ void Opm::ParallelPAvgCalculator::collectGlobalContributions()
collect(this->accumCTF_); collect(this->accumCTF_);
collect(this->accumPV_); 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. /// have a flowing bottom-hole pressure. Mainly useful for reporting.
/// ///
/// Parallel edition. Handles distributed wells. /// Parallel edition. Handles distributed wells.
class ParallelPAvgCalculator : public PAvgCalculator<double> template<class Scalar>
class ParallelPAvgCalculator : public PAvgCalculator<Scalar>
{ {
public: public:
/// Constructor /// Constructor
@ -55,6 +56,8 @@ public:
const WellConnections& connections); const WellConnections& connections);
private: private:
using Accumulator = typename PAvgCalculator<Scalar>::Accumulator;
/// MPI communication object. /// MPI communication object.
std::reference_wrapper<const Parallel::Communication> comm_; std::reference_wrapper<const Parallel::Communication> comm_;

View File

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