parsing WINJFCNC

This commit is contained in:
Kai Bao
2022-12-12 16:12:14 +01:00
parent 5e1b398550
commit 3bc451ad94
4 changed files with 22 additions and 0 deletions

View File

@@ -747,6 +747,7 @@ namespace Opm
void handleWWPAVE (HandlerContext&);
void handleWPIMULT (HandlerContext&);
void handleWINJDAM (HandlerContext&);
void handleWINJFCNC (HandlerContext&);
void handleWINJMULT (HandlerContext&);
void handleWPMITAB (HandlerContext&);
void handleWPOLYMER (HandlerContext&);

View File

@@ -483,6 +483,8 @@ public:
bool handleWPIMULT(const DeckRecord& record);
bool handleWINJDAM(const DeckRecord& record, const KeywordLocation& location);
bool handleWINJMULT(const DeckRecord& record, const KeywordLocation& location);
// TODO: makes it a handleWINJFCNC?
void setFilterConc(const double conc);
bool applyGlobalWPIMULT(double scale_factor);
void filterConnections(const ActiveGridCells& grid);
@@ -551,6 +553,7 @@ public:
serializer(well_temperature);
serializer(inj_mult_mode);
serializer(well_inj_mult);
serializer(m_filter_concentration);
}
private:
@@ -599,6 +602,7 @@ private:
double well_temperature;
InjMultMode inj_mult_mode = InjMultMode::NONE;
std::optional<InjMult> well_inj_mult;
double m_filter_concentration = 0.;
};
std::ostream& operator<<( std::ostream&, const Well::WellInjectionProperties& );

View File

@@ -2013,6 +2013,19 @@ Well{0} entered with 'FIELD' parent group:
}
}
void Schedule::handleWINJFCNC(Schedule::HandlerContext& handlerContext) {
for (const auto& record : handlerContext.keyword) {
const std::string& wellNamePattern = record.getItem("WELL").getTrimmedString(0);
const auto well_names = this->wellNames(wellNamePattern, handlerContext);
// TODO: will check whether we should put all the filter cake related to a separate property
for (const auto& well_name: well_names) {
auto well = this->snapshots.back().wells(well_name);
well.setFilterConc(record.getItem("VOL_CONCENTRATION").get<UDAValue>(0).getSI());
this->snapshots.back().wells.update(std::move(well));
}
}
}
void Schedule::handleWSALT(HandlerContext& handlerContext) {
for (const auto& record : handlerContext.keyword) {
const std::string& wellNamePattern = record.getItem("WELL").getTrimmedString(0);
@@ -2565,6 +2578,7 @@ Well{0} entered with 'FIELD' parent group:
{ "WWPAVE" , &Schedule::handleWWPAVE },
{ "WPIMULT" , &Schedule::handleWPIMULT },
{ "WINJDAM" , &Schedule::handleWINJDAM },
{ "WINJFCNC", &Schedule::handleWINJFCNC },
{ "WPMITAB" , &Schedule::handleWPMITAB },
{ "WPOLYMER", &Schedule::handleWPOLYMER },
{ "WRFT" , &Schedule::handleWRFT },

View File

@@ -1742,3 +1742,6 @@ bool Opm::Well::aciveWellInjMult() const {
}
void Opm::Well::setFilterConc(const double conc) {
this->m_filter_concentration = conc;
}