Conversation
…aint class hierachy , 3) Remove all old constraint handling methods/variables, 4) it compiles ...
…lephase still needs testing
…t compositionalMultiphaseFlow/soreideWhitson/1D_100cells/1D_benchmark.xml
… to fixed and inputFiles regenerated
…d convert compositionalMultiphaseFlow/soreideWhitson/1D_100cells/1D_benchmark.xml" This reverts commit fa61ab1.
|
@tjb-ltk Is it ready for review? |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## develop #3862 +/- ##
===========================================
- Coverage 58.87% 58.64% -0.23%
===========================================
Files 1353 1371 +18
Lines 112953 113762 +809
===========================================
+ Hits 66504 66719 +215
- Misses 46449 47043 +594 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
|
||
| <CompositionalTwoPhaseFluidPhillipsBrine | ||
| name="FLUID" | ||
| phaseNames="{ oil, gas }" |
There was a problem hiding this comment.
| phaseNames="{ oil, gas }" | |
| phaseNames="{ water, gas }" |
Unrelated to this PR but this was the intent for these cases.
| enableCrossflow="0" | ||
| logLevel="0" | ||
| control="totalVolRate"> | ||
| <InjectionPhaseVolumeRateConstraint |
There was a problem hiding this comment.
I'm confused here. I expected the actual rate constraint i.e. a value. What's the use of a constraint with no value?
There was a problem hiding this comment.
The control specification here is to identify which constraint should the simulator start with first. This is for backwards compatibility and a useful option, 1) when the user knows for example that the well is far from being in decline and says I know this well can produce at a fixed rate, or just option to try if the well is having problems with initial guess.
| fieldName="globalCompFraction" | ||
| component="1" | ||
| scale="0.999999"/> | ||
| <!-- SPHINX_BC_END --> |
There was a problem hiding this comment.
Make sure this is not used in the doc build.
There was a problem hiding this comment.
not sure what you mean .. not something the PR introduced
| static constexpr char const * constraintScheduleTableNameString() { return "constraintScheduleTableName"; } | ||
|
|
||
| /// String key for the well constraint value | ||
| static constexpr char const * constraintValueString() { return "constraintValue"; } |
There was a problem hiding this comment.
| static constexpr char const * constraintValueString() { return "constraintValue"; } | |
| static constexpr char const * constraintValueString() { return "value"; } |
Just value?
| setRTTypeName( rtTypes::CustomTypes::groupNameRef ). | ||
| setInputFlag( InputFlags::OPTIONAL ). | ||
| setDescription( "Name of the well constraint schedule table when the constraint value is a time dependent function. \n" ); | ||
|
|
There was a problem hiding this comment.
No wrapper for m_constraintValue?
| * @class BHPConstraint | ||
| * @brief This class describes a minimum pressure constraint used to control a injection well. | ||
| */ | ||
| class BHPConstraint : public WellConstraintBase |
There was a problem hiding this comment.
| class BHPConstraint : public WellConstraintBase | |
| enum class BHPType : integer | |
| { | |
| MINIMUM, | |
| MAXIMUM | |
| }; | |
| template <BHPType TYPE> | |
| class BHPConstraint : public WellConstraintBase; | |
| { | |
| }; | |
| using MinimumBHPConstraint = BHPConstraint<MINIMUM>; | |
| using MaximumBHPConstraint = BHPConstraint<MAXIMUM>; |
Instead of duplicating 2 types that are almost the same.
There was a problem hiding this comment.
good point... will change
| if( m_currentControl == WellControls::Control::MASSRATE ) | ||
| { | ||
| normalizer = m_dt * LvArray::math::abs( m_targetMassRate/ m_totalDens_n[iwelem][0] ); | ||
| normalizer = m_dt * LvArray::math::abs( m_constraintValue/ m_totalDens_n[iwelem][0] ); |
There was a problem hiding this comment.
I've encountered some divide by zero cases here. We need some protection.
There was a problem hiding this comment.
the constraint value is fixed in well manager branch that superceeds this pr
|
|
||
| WellControls const & wellControls = getWellControls( subRegion ); | ||
|
|
||
| if( wellControls.isWellOpen( ) ) |
There was a problem hiding this comment.
I had this on a separate PR.
feat: Formalize definition of well constraints to
ToDo
Subsequent PR's based on this PR