mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
Use average density for hydro p-drop
This commit is contained in:
parent
8ee3493aed
commit
0417f101bf
@ -219,14 +219,18 @@ assemblePressureLoss(const int seg,
|
|||||||
template<class FluidSystem, class Indices, class Scalar>
|
template<class FluidSystem, class Indices, class Scalar>
|
||||||
void MultisegmentWellAssemble<FluidSystem,Indices,Scalar>::
|
void MultisegmentWellAssemble<FluidSystem,Indices,Scalar>::
|
||||||
assembleHydroPressureLoss(const int seg,
|
assembleHydroPressureLoss(const int seg,
|
||||||
const int seg_upwind,
|
const int seg_outlet,
|
||||||
const EvalWell& hydro_pressure_drop,
|
const EvalWell& hydro_pressure_drop_seg,
|
||||||
|
const EvalWell& hydro_pressure_drop_outlet,
|
||||||
Equations& eqns1) const
|
Equations& eqns1) const
|
||||||
{
|
{
|
||||||
MultisegmentWellEquationAccess<Scalar,numWellEq,Indices::numEq> eqns(eqns1);
|
MultisegmentWellEquationAccess<Scalar,numWellEq,Indices::numEq> eqns(eqns1);
|
||||||
eqns.residual()[seg][SPres] -= hydro_pressure_drop.value();
|
eqns.residual()[seg][SPres] -= (hydro_pressure_drop_seg.value() + hydro_pressure_drop_outlet.value());
|
||||||
for (int pv_idx = 0; pv_idx < numWellEq; ++pv_idx) {
|
for (int pv_idx = 0; pv_idx < numWellEq; ++pv_idx) {
|
||||||
eqns.D()[seg][seg][SPres][pv_idx] -= hydro_pressure_drop.derivative(pv_idx + Indices::numEq);
|
eqns.D()[seg][seg][SPres][pv_idx] -= hydro_pressure_drop_seg.derivative(pv_idx + Indices::numEq);
|
||||||
|
}
|
||||||
|
for (int pv_idx = 0; pv_idx < numWellEq; ++pv_idx) {
|
||||||
|
eqns.D()[seg][seg_outlet][SPres][pv_idx] -= hydro_pressure_drop_outlet.derivative(pv_idx + Indices::numEq);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,9 +89,10 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
void assembleHydroPressureLoss(const int seg,
|
void assembleHydroPressureLoss(const int seg,
|
||||||
const int seg_upwind,
|
const int seg_outlet,
|
||||||
const EvalWell& hydro_pressure_drop,
|
const EvalWell& hydro_pressure_drop_seg,
|
||||||
Equations& eqs1) const;
|
const EvalWell& hydro_pressure_drop_outlet,
|
||||||
|
Equations& eqns1) const;
|
||||||
|
|
||||||
void assemblePressureEqExtraDerivatives(const int seg,
|
void assemblePressureEqExtraDerivatives(const int seg,
|
||||||
const int seg_upwind,
|
const int seg_upwind,
|
||||||
|
@ -261,10 +261,13 @@ assembleDefaultPressureEq(const int seg,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Do separately since different organization of derivatives
|
// Do separately since different organization of derivatives
|
||||||
const auto hydro_pressure_drop = segments_.getHydroPressureLoss(seg);
|
const int seg_outlet = this->segmentNumberToIndex(this->segmentSet()[seg].outletSegment());
|
||||||
|
const auto hydro_pressure_drop1 = segments_.getHalfHydroPressureLoss(seg, seg);
|
||||||
|
const auto hydro_pressure_drop2 = segments_.getHalfHydroPressureLoss(seg, seg_outlet);
|
||||||
MultisegmentWellAssemble<FluidSystem,Indices,Scalar>(baseif_).
|
MultisegmentWellAssemble<FluidSystem,Indices,Scalar>(baseif_).
|
||||||
assembleHydroPressureLoss(seg, seg_upwind, hydro_pressure_drop, linSys_);
|
assembleHydroPressureLoss(seg, seg_outlet, hydro_pressure_drop1, hydro_pressure_drop2, linSys_);
|
||||||
segments.pressure_drop_hydrostatic[seg] = hydro_pressure_drop.value();
|
|
||||||
|
segments.pressure_drop_hydrostatic[seg] = hydro_pressure_drop1.value() + hydro_pressure_drop2.value();
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename FluidSystem, typename Indices, typename Scalar>
|
template<typename FluidSystem, typename Indices, typename Scalar>
|
||||||
|
@ -321,10 +321,11 @@ updateUpwindingSegments(const PrimaryVariables& primary_variables)
|
|||||||
template<class FluidSystem, class Indices, class Scalar>
|
template<class FluidSystem, class Indices, class Scalar>
|
||||||
typename MultisegmentWellSegments<FluidSystem,Indices,Scalar>::EvalWell
|
typename MultisegmentWellSegments<FluidSystem,Indices,Scalar>::EvalWell
|
||||||
MultisegmentWellSegments<FluidSystem,Indices,Scalar>::
|
MultisegmentWellSegments<FluidSystem,Indices,Scalar>::
|
||||||
getHydroPressureLoss(const int seg) const
|
getHalfHydroPressureLoss(const int seg,
|
||||||
|
const int seg_side) const
|
||||||
{
|
{
|
||||||
//const int seg_upwind = upwinding_segments_[seg];
|
//const int seg_upwind = upwinding_segments_[seg];
|
||||||
return densities_[seg] * well_.gravity() * depth_diffs_[seg];
|
return 0.5*densities_[seg_side] * well_.gravity() * depth_diffs_[seg];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -51,7 +51,8 @@ public:
|
|||||||
//! \brief Update upwinding segments.
|
//! \brief Update upwinding segments.
|
||||||
void updateUpwindingSegments(const PrimaryVariables& primary_variables);
|
void updateUpwindingSegments(const PrimaryVariables& primary_variables);
|
||||||
|
|
||||||
EvalWell getHydroPressureLoss(const int seg) const;
|
EvalWell getHalfHydroPressureLoss(const int seg,
|
||||||
|
const int seg_side) const;
|
||||||
|
|
||||||
//! Pressure difference between segment and perforation.
|
//! Pressure difference between segment and perforation.
|
||||||
Scalar getPressureDiffSegPerf(const int seg,
|
Scalar getPressureDiffSegPerf(const int seg,
|
||||||
|
Loading…
Reference in New Issue
Block a user