diff --git a/opm/simulators/wells/MultisegmentWellEval.hpp b/opm/simulators/wells/MultisegmentWellEval.hpp index 4aaed26c8..445e80de0 100644 --- a/opm/simulators/wells/MultisegmentWellEval.hpp +++ b/opm/simulators/wells/MultisegmentWellEval.hpp @@ -57,7 +57,7 @@ protected: static constexpr int WQTotal = PrimaryVariables::WQTotal; using Equations = MultisegmentWellEquations; - using MSWSegments = MultisegmentWellSegments; + using MSWSegments = MultisegmentWellSegments; using BVector = typename Equations::BVector; using BVectorWell = typename Equations::BVectorWell; diff --git a/opm/simulators/wells/MultisegmentWellSegments.cpp b/opm/simulators/wells/MultisegmentWellSegments.cpp index 3276697d4..f423ca6bc 100644 --- a/opm/simulators/wells/MultisegmentWellSegments.cpp +++ b/opm/simulators/wells/MultisegmentWellSegments.cpp @@ -58,8 +58,8 @@ namespace Opm { -template -MultisegmentWellSegments:: +template +MultisegmentWellSegments:: MultisegmentWellSegments(const int numSegments, WellInterfaceGeneric& well) : perforations_(numSegments) @@ -129,8 +129,8 @@ MultisegmentWellSegments(const int numSegments, } } -template -void MultisegmentWellSegments:: +template +void MultisegmentWellSegments:: computeFluidProperties(const EvalWell& temperature, const EvalWell& saltConcentration, const PrimaryVariables& primary_variables, @@ -306,8 +306,8 @@ computeFluidProperties(const EvalWell& temperature, } } -template -void MultisegmentWellSegments:: +template +void MultisegmentWellSegments:: updateUpwindingSegments(const PrimaryVariables& primary_variables) { for (std::size_t seg = 0; seg < perforations_.size(); ++seg) { @@ -331,26 +331,27 @@ updateUpwindingSegments(const PrimaryVariables& primary_variables) } } -template -typename MultisegmentWellSegments::EvalWell -MultisegmentWellSegments:: +template +typename MultisegmentWellSegments::EvalWell +MultisegmentWellSegments:: getHydroPressureLoss(const int seg, const int seg_density) const { return densities_[seg_density] * well_.gravity() * depth_diffs_[seg]; } -template -Scalar MultisegmentWellSegments:: +template +typename MultisegmentWellSegments::Scalar +MultisegmentWellSegments:: getPressureDiffSegPerf(const int seg, const int perf) const { return well_.gravity() * densities_[seg].value() * perforation_depth_diffs_[perf]; } -template -typename MultisegmentWellSegments::EvalWell -MultisegmentWellSegments:: +template +typename MultisegmentWellSegments::EvalWell +MultisegmentWellSegments:: getSurfaceVolume(const EvalWell& temperature, const EvalWell& saltConcentration, const PrimaryVariables& primary_variables, @@ -495,9 +496,9 @@ getSurfaceVolume(const EvalWell& temperature, return volume / vol_ratio; } -template -typename MultisegmentWellSegments::EvalWell -MultisegmentWellSegments:: +template +typename MultisegmentWellSegments::EvalWell +MultisegmentWellSegments:: getFrictionPressureLoss(const int seg, const bool extra_reverse_flow_derivatives /*false*/) const { @@ -547,9 +548,9 @@ getFrictionPressureLoss(const int seg, return sign * mswellhelpers::frictionPressureLoss(length, diameter, area, roughness, density, mass_rate, visc); } -template -typename MultisegmentWellSegments::EvalWell -MultisegmentWellSegments:: +template +typename MultisegmentWellSegments::EvalWell +MultisegmentWellSegments:: pressureDropSpiralICD(const int seg, const bool extra_reverse_flow_derivatives /*false*/) const { @@ -651,9 +652,9 @@ pressureDropSpiralICD(const int seg, return sign * temp_value1 * temp_value2 * strength * reservoir_rate_icd * reservoir_rate_icd; } -template -typename MultisegmentWellSegments::EvalWell -MultisegmentWellSegments:: +template +typename MultisegmentWellSegments::EvalWell +MultisegmentWellSegments:: pressureDropAutoICD(const int seg, const UnitSystem& unit_system, const bool extra_reverse_flow_derivatives /*false*/) const @@ -765,9 +766,9 @@ pressureDropAutoICD(const int seg, return result; } -template -typename MultisegmentWellSegments::EvalWell -MultisegmentWellSegments:: +template +typename MultisegmentWellSegments::EvalWell +MultisegmentWellSegments:: pressureDropValve(const int seg, const SummaryState& summary_state, const bool extra_reverse_flow_derivatives /*false*/) const @@ -826,9 +827,9 @@ pressureDropValve(const int seg, return sign * (friction_pressure_loss + constriction_pressure_loss); } -template -typename MultisegmentWellSegments::EvalWell -MultisegmentWellSegments:: +template +typename MultisegmentWellSegments::EvalWell +MultisegmentWellSegments:: accelerationPressureLossContribution(const int seg, const double area, const bool extra_reverse_flow_derivatives /*false*/) const @@ -860,9 +861,9 @@ accelerationPressureLossContribution(const int seg, return sign*mswellhelpers::velocityHead(area, mass_rate, density); } -template +template void -MultisegmentWellSegments:: +MultisegmentWellSegments:: copyPhaseDensities(const PhaseUsage& pu, SegmentState& segSol) const { auto* rho = segSol.phase_density.data(); @@ -895,9 +896,9 @@ copyPhaseDensities(const PhaseUsage& pu, SegmentState& segSol) const } } -template +template void -MultisegmentWellSegments:: +MultisegmentWellSegments:: copyPhaseDensities(const unsigned phaseIdx, const std::size_t stride, double* dens) const @@ -911,9 +912,9 @@ copyPhaseDensities(const unsigned phaseIdx, } } -template +template double -MultisegmentWellSegments:: +MultisegmentWellSegments:: mixtureDensity(const int seg) const { auto mixDens = 0.0; @@ -940,9 +941,9 @@ mixtureDensity(const int seg) const return mixDens; } -template +template double -MultisegmentWellSegments:: +MultisegmentWellSegments:: mixtureDensityWithExponents(const int seg) const { if (const auto& segment = this->well_.wellEcl().getSegments()[seg]; @@ -956,9 +957,9 @@ mixtureDensityWithExponents(const int seg) const return this->mixtureDensity(seg); } -template +template double -MultisegmentWellSegments:: +MultisegmentWellSegments:: mixtureDensityWithExponents(const AutoICD& aicd, const int seg) const { auto mixDens = 0.0; @@ -988,7 +989,7 @@ mixtureDensityWithExponents(const AutoICD& aicd, const int seg) const } #define INSTANCE(...) \ -template class MultisegmentWellSegments,__VA_ARGS__,double>; +template class MultisegmentWellSegments,__VA_ARGS__>; // One phase INSTANCE(BlackOilOnePhaseIndices<0u,0u,0u,0u,false,false,0u,1u,0u>) @@ -1007,6 +1008,7 @@ INSTANCE(BlackOilTwoPhaseIndices<0u,0u,0u,0u,false,true,0u,0u,0u>) INSTANCE(BlackOilTwoPhaseIndices<0u,0u,0u,1u,false,false,0u,0u,0u>) INSTANCE(BlackOilTwoPhaseIndices<0u,0u,0u,1u,false,true,0u,0u,0u>) INSTANCE(BlackOilTwoPhaseIndices<1u,0u,0u,0u,false,false,0u,0u,0u>) + // Blackoil INSTANCE(BlackOilIndices<0u,0u,0u,0u,false,false,0u,0u>) INSTANCE(BlackOilIndices<0u,0u,0u,0u,true,false,0u,0u>) diff --git a/opm/simulators/wells/MultisegmentWellSegments.hpp b/opm/simulators/wells/MultisegmentWellSegments.hpp index 631ae8a35..43ecc49f8 100644 --- a/opm/simulators/wells/MultisegmentWellSegments.hpp +++ b/opm/simulators/wells/MultisegmentWellSegments.hpp @@ -40,10 +40,11 @@ namespace Opm { namespace Opm { -template +template class MultisegmentWellSegments { using PrimaryVariables = MultisegmentWellPrimaryVariables; + using Scalar = typename FluidSystem::Scalar; using EvalWell = typename PrimaryVariables::EvalWell; public: