added: MultisegmentWellAssemble::assembleTrivialEq

extracted from MultisegmentWellEval::assembleICDPressureEq
This commit is contained in:
Arne Morten Kvarving 2022-11-18 12:09:43 +01:00
parent 05a4ca85a7
commit 32dce644d3
3 changed files with 17 additions and 2 deletions

View File

@ -200,6 +200,16 @@ assemblePressureEq(const int seg,
}
}
template<class FluidSystem, class Indices, class Scalar>
void MultisegmentWellAssemble<FluidSystem,Indices,Scalar>::
assembleTrivialEq(const int seg,
const Scalar value,
Equations& eqns) const
{
eqns.resWell_[seg][SPres] = value;
eqns.duneD_[seg][seg][SPres][WQTotal] = 1.;
}
#define INSTANCE(...) \
template class MultisegmentWellAssemble<BlackOilFluidSystem<double,BlackOilDefaultIndexTraits>,__VA_ARGS__,double>;

View File

@ -98,6 +98,11 @@ public:
bool wfrac = has_wfrac_variable,
bool gfrac = has_gfrac_variable) const;
//! \brief Assembles a trivial equation.
void assembleTrivialEq(const int seg,
const Scalar value,
Equations& eqns) const;
private:
const WellInterfaceIndices<FluidSystem,Indices,Scalar>& well_; //!< Reference to well
};

View File

@ -1404,8 +1404,8 @@ assembleICDPressureEq(const int seg,
if (const auto& segment = this->segmentSet()[seg];
(segment.segmentType() == Segment::SegmentType::VALVE) &&
(segment.valve().status() == Opm::ICDStatus::SHUT) ) { // we use a zero rate equation to handle SHUT valve
linSys_.resWell_[seg][SPres] = this->primary_variables_evaluation_[seg][WQTotal].value();
linSys_.duneD_[seg][seg][SPres][WQTotal] = 1.;
MultisegmentWellAssemble<FluidSystem,Indices,Scalar>(baseif_).
assembleTrivialEq(seg, this->primary_variables_evaluation_[seg][WQTotal].value(), linSys_);
auto& ws = well_state.well(baseif_.indexOfWell());
ws.segments.pressure_drop_friction[seg] = 0.;