mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
Makes hysteresis and somax optional in restart file
This commit is contained in:
parent
1fd36e9451
commit
4d286cf0b3
@ -123,6 +123,7 @@ data::Solution simToSolution( const SimulationDataContainer& reservoir,
|
|||||||
|
|
||||||
|
|
||||||
void solutionToSim( const data::Solution& sol,
|
void solutionToSim( const data::Solution& sol,
|
||||||
|
const std::map<std::string,std::vector<double> >& extra,
|
||||||
PhaseUsage phases,
|
PhaseUsage phases,
|
||||||
SimulationDataContainer& state ) {
|
SimulationDataContainer& state ) {
|
||||||
|
|
||||||
@ -174,29 +175,29 @@ void solutionToSim( const data::Solution& sol,
|
|||||||
state.getCellData("SSOL") = sol.data("SSOL");
|
state.getCellData("SSOL") = sol.data("SSOL");
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( sol.has( "SOMAX" ) ) {
|
if ( extra.find("SOMAX") != extra.end() ) {
|
||||||
state.registerCellData("SOMAX", 1);
|
state.registerCellData("SOMAX", 1);
|
||||||
state.getCellData("SOMAX") = sol.data("SOMAX");
|
state.getCellData("SOMAX") = extra.find("SOMAX")->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( sol.has( "PCSWM_OW" ) ) {
|
if ( extra.find("PCSWM_OW") != extra.end() ) {
|
||||||
state.registerCellData("PCSWMDC_OW", 1);
|
state.registerCellData("PCSWMDC_OW", 1);
|
||||||
state.getCellData("PCSWMDC_OW") = sol.data("PCSWM_OW");
|
state.getCellData("PCSWMDC_OW") = extra.find("PCSWM_OW")->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( sol.has( "KRNSW_OW" ) ) {
|
if ( extra.find("KRNSW_OW") != extra.end() ) {
|
||||||
state.registerCellData("KRNSWMDC_OW", 1);
|
state.registerCellData("KRNSWMDC_OW", 1);
|
||||||
state.getCellData("KRNSWMDC_OW") = sol.data("KRNSW_OW");
|
state.getCellData("KRNSWMDC_OW") = extra.find("KRNSW_OW")->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( sol.has( "PCSWM_GO" ) ) {
|
if ( extra.find("PCSWM_GO") != extra.end() ) {
|
||||||
state.registerCellData("PCSWMDC_GO", 1);
|
state.registerCellData("PCSWMDC_GO", 1);
|
||||||
state.getCellData("PCSWMDC_GO") = sol.data("PCSWM_GO");
|
state.getCellData("PCSWMDC_GO") = extra.find("PCSWM_GO")->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( sol.has( "KRNSW_GO" ) ) {
|
if ( extra.find("KRNSW_GO") != extra.end() ) {
|
||||||
state.registerCellData("KRNSWMDC_GO", 1);
|
state.registerCellData("KRNSWMDC_GO", 1);
|
||||||
state.getCellData("KRNSWMDC_GO") = sol.data("KRNSW_GO");
|
state.getCellData("KRNSWMDC_GO") = extra.find("KRNSW_GO")->second;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,7 +59,9 @@ namespace Opm {
|
|||||||
|
|
||||||
/// Copies the following fields from sol into state (all conditionally):
|
/// Copies the following fields from sol into state (all conditionally):
|
||||||
/// PRESSURE, TEMP, SWAT, SGAS, RS, RV, SSOL
|
/// PRESSURE, TEMP, SWAT, SGAS, RS, RV, SSOL
|
||||||
|
/// Also handles extra data such as hysteresis parameters, SOMAX, etc.
|
||||||
void solutionToSim( const data::Solution& sol,
|
void solutionToSim( const data::Solution& sol,
|
||||||
|
const std::map<std::string,std::vector<double> >& extra,
|
||||||
PhaseUsage phases,
|
PhaseUsage phases,
|
||||||
SimulationDataContainer& state );
|
SimulationDataContainer& state );
|
||||||
|
|
||||||
|
@ -665,7 +665,8 @@ namespace Opm
|
|||||||
if( isIORank() )
|
if( isIORank() )
|
||||||
{
|
{
|
||||||
// Update values in the globalReservoirState
|
// Update values in the globalReservoirState
|
||||||
solutionToSim(*globalCellData_, phaseUsage_, *globalReservoirState_);
|
const std::map<std::string, std::vector<double> > no_extra_data;
|
||||||
|
solutionToSim(*globalCellData_, no_extra_data, phaseUsage_, *globalReservoirState_);
|
||||||
}
|
}
|
||||||
return isIORank();
|
return isIORank();
|
||||||
}
|
}
|
||||||
|
@ -424,13 +424,15 @@ namespace Opm
|
|||||||
{"SGAS" , UnitSystem::measure::identity},
|
{"SGAS" , UnitSystem::measure::identity},
|
||||||
{"TEMP" , UnitSystem::measure::temperature},
|
{"TEMP" , UnitSystem::measure::temperature},
|
||||||
{"RS" , UnitSystem::measure::gas_oil_ratio},
|
{"RS" , UnitSystem::measure::gas_oil_ratio},
|
||||||
{"RV" , UnitSystem::measure::oil_gas_ratio},
|
{"RV" , UnitSystem::measure::oil_gas_ratio}};
|
||||||
{"SOMAX", UnitSystem::measure::identity},
|
std::map<std::string, bool> extra_keys {
|
||||||
{"PCSWM_OW", UnitSystem::measure::identity},
|
{"OPMEXTRA" , false},
|
||||||
{"KRNSW_OW", UnitSystem::measure::identity},
|
{"SOMAX", false},
|
||||||
{"PCSWM_GO", UnitSystem::measure::identity},
|
{"PCSWM_OW", false},
|
||||||
{"KRNSW_GO", UnitSystem::measure::identity}};
|
{"KRNSW_OW", false},
|
||||||
std::map<std::string, bool> extra_keys {{"OPMEXTRA" , false}};
|
{"PCSWM_GO", false},
|
||||||
|
{"KRNSW_GO", false}
|
||||||
|
};
|
||||||
|
|
||||||
if (restart_double_si_) {
|
if (restart_double_si_) {
|
||||||
// Avoid any unit conversions, treat restart input as SI units.
|
// Avoid any unit conversions, treat restart input as SI units.
|
||||||
@ -462,7 +464,7 @@ namespace Opm
|
|||||||
wellstate.resize(wells, simulatorstate, phaseUsage ); //Resize for restart step
|
wellstate.resize(wells, simulatorstate, phaseUsage ); //Resize for restart step
|
||||||
auto restart_values = eclIO_->loadRestart(solution_keys, extra_keys);
|
auto restart_values = eclIO_->loadRestart(solution_keys, extra_keys);
|
||||||
|
|
||||||
solutionToSim( restart_values.solution, phaseUsage, simulatorstate );
|
solutionToSim( restart_values.solution, restart_values.extra, phaseUsage, simulatorstate );
|
||||||
wellsToState( restart_values.wells, phaseUsage, wellstate );
|
wellsToState( restart_values.wells, phaseUsage, wellstate );
|
||||||
|
|
||||||
const auto opmextra_iter = restart_values.extra.find("OPMEXTRA");
|
const auto opmextra_iter = restart_values.extra.find("OPMEXTRA");
|
||||||
|
Loading…
Reference in New Issue
Block a user