not using Evaluation for saltConcentration for getFirstPerforationFluidStateInfo

its derivative should not be used anyway.
This commit is contained in:
Kai Bao committed 2026-05-04 15:32:02 +02:00
1 parent 42990edc31
commit a2e584a0ed
3 files changed
+9 -20

No files matched your search

+1 -1
View File
@@ -71,7 +71,7 @@ namespace Opm {
using typename MSWEval::BVectorWell;
using MSWEval::SPres;
using typename Base::PressureMatrix;
using FSInfo = std::tuple<Scalar,typename std::decay<decltype(std::declval<decltype(std::declval<const Simulator&>().model().intensiveQuantities(0, 0).fluidState())>().saltConcentration())>::type>;
using FSInfo = std::tuple<Scalar, Scalar>;
MultisegmentWell(const Well& well,
const ParallelWellInfo<Scalar>& pw_info,
@@ -1154,7 +1154,7 @@ namespace Opm
auto info = this->getFirstPerforationFluidStateInfo(simulator);
temperature.setValue(std::get<0>(info));
saltConcentration = this->extendEval(std::get<1>(info));
saltConcentration.setValue(std::get<1>(info));
this->segments_.computeFluidProperties(temperature,
saltConcentration,
@@ -2107,7 +2107,7 @@ namespace Opm
auto info = this->getFirstPerforationFluidStateInfo(simulator);
temperature.setValue(std::get<0>(info));
saltConcentration = this->extendEval(std::get<1>(info));
saltConcentration.setValue(std::get<1>(info));
return this->segments_.getSurfaceVolume(temperature,
saltConcentration,
@@ -2371,8 +2371,7 @@ namespace Opm
getFirstPerforationFluidStateInfo(const Simulator& simulator) const
{
Scalar fsTemperature = 0.0;
using SaltConcType = typename std::decay<decltype(std::declval<decltype(simulator.model().intensiveQuantities(0, 0).fluidState())>().saltConcentration())>::type;
SaltConcType fsSaltConcentration{};
Scalar fsSaltConcentration = 0.0;
// If this process does not contain active perforations, this->well_cells_ is empty.
if (this->well_cells_.size() > 0) {
@@ -2382,8 +2381,8 @@ namespace Opm
const auto& intQuants = simulator.model().intensiveQuantities(cell_idx, /*timeIdx=*/0);
const auto& fs = intQuants.fluidState();
fsTemperature = fs.temperature(FluidSystem::oilPhaseIdx).value();
fsSaltConcentration = fs.saltConcentration();
fsTemperature = getValue(fs.temperature(FluidSystem::oilPhaseIdx));
fsSaltConcentration = getValue(fs.saltConcentration());
}
auto info = std::make_tuple(fsTemperature, fsSaltConcentration);
+3 -13
View File
@@ -817,13 +817,6 @@ checkAllConnectionsFound()
template<class Scalar> using dIter = typename std::vector<Scalar>::iterator;
template<class Scalar> using cdIter = typename std::vector<Scalar>::const_iterator;
#define INSTANTIATE_BROADCAST_FIRST_PERF_DENSEAD_EVALUATION(T, DIM) \
template std::tuple<T, Opm::DenseAd::Evaluation<T, DIM, 0u>> \
Opm::ParallelWellInfo<T>::broadcastFirstPerforationValue \
<std::tuple<T, Opm::DenseAd::Evaluation<T, DIM, 0u>>> \
(std::tuple<T, Opm::DenseAd::Evaluation<T, DIM, 0u>> const&) \
const;
#define INSTANTIATE_TYPE(T) \
template class CheckDistributedWellConnections<T>; \
template class CommunicateAboveBelow<T>; \
@@ -837,12 +830,9 @@ template<class Scalar> using cdIter = typename std::vector<Scalar>::const_iterat
broadcastFirstPerforationValue<int>(const int&) const; \
template T ParallelWellInfo<T>:: \
broadcastFirstPerforationValue<T>(const T&) const; \
INSTANTIATE_BROADCAST_FIRST_PERF_DENSEAD_EVALUATION(T, 1) \
INSTANTIATE_BROADCAST_FIRST_PERF_DENSEAD_EVALUATION(T, 2) \
INSTANTIATE_BROADCAST_FIRST_PERF_DENSEAD_EVALUATION(T, 3) \
INSTANTIATE_BROADCAST_FIRST_PERF_DENSEAD_EVALUATION(T, 4) \
INSTANTIATE_BROADCAST_FIRST_PERF_DENSEAD_EVALUATION(T, 5) \
INSTANTIATE_BROADCAST_FIRST_PERF_DENSEAD_EVALUATION(T, 6) \
template std::tuple<T, T> \
ParallelWellInfo<T>::broadcastFirstPerforationValue<std::tuple<T, T>> \
(std::tuple<T, T> const&) const; \
template void CommunicateAboveBelow<T>:: \
partialSumPerfValues<dIter<T>>(dIter<T>, dIter<T>) const; \
template bool operator<(const ParallelWellInfo<T>&, \