#1836 Add region selection threshold fields

This commit is contained in:
Bjørnar Grip Fjær 2017-08-29 16:21:19 +02:00
parent fa943226bc
commit c736e10ad5
4 changed files with 30 additions and 6 deletions

View File

@ -93,6 +93,8 @@ RimFlowCharacteristicsPlot::RimFlowCharacteristicsPlot()
CAF_PDM_InitFieldNoDefault(&m_selectedTracerNames, "SelectedTracerNames", " ", "", "", ""); CAF_PDM_InitFieldNoDefault(&m_selectedTracerNames, "SelectedTracerNames", " ", "", "", "");
m_selectedTracerNames.uiCapability()->setUiEditorTypeName(caf::PdmUiListEditor::uiEditorTypeName()); m_selectedTracerNames.uiCapability()->setUiEditorTypeName(caf::PdmUiListEditor::uiEditorTypeName());
CAF_PDM_InitFieldNoDefault(&m_showRegion, "ShowRegion", "", "", "", ""); CAF_PDM_InitFieldNoDefault(&m_showRegion, "ShowRegion", "", "", "", "");
CAF_PDM_InitField(&m_minCommunication, "MinCommunication", 0.0, "Min Communication", "", "", "");
CAF_PDM_InitField(&m_maxTof, "MaxTof", 146000, "Max Time of Flight [days]", "", "", "");
m_showRegion.xmlCapability()->setIOWritable(false); m_showRegion.xmlCapability()->setIOWritable(false);
m_showRegion.xmlCapability()->setIOReadable(false); m_showRegion.xmlCapability()->setIOReadable(false);
m_showRegion.uiCapability()->setUiEditorTypeName(caf::PdmUiPushButtonEditor::uiEditorTypeName()); m_showRegion.uiCapability()->setUiEditorTypeName(caf::PdmUiPushButtonEditor::uiEditorTypeName());
@ -363,6 +365,16 @@ void RimFlowCharacteristicsPlot::defineUiOrdering(QString uiConfigName, caf::Pdm
{ {
regionGroup->add(&m_cellFilterView); regionGroup->add(&m_cellFilterView);
} }
if (m_cellFilter() == RigFlowDiagResults::CELLS_COMMUNICATION)
{
regionGroup->add(&m_minCommunication);
}
else if (m_cellFilter() == RigFlowDiagResults::CELLS_DRAINED ||
m_cellFilter() == RigFlowDiagResults::CELLS_FLOODED)
{
regionGroup->add(&m_maxTof);
}
} }
{ {
@ -602,7 +614,12 @@ void RimFlowCharacteristicsPlot::loadDataAndUpdate()
} }
else else
{ {
auto flowCharResults = flowResult->flowCharacteristicsResults(timeStepIdx, m_cellFilter(), selectedTracerNames, m_maxPvFraction()); auto flowCharResults = flowResult->flowCharacteristicsResults(timeStepIdx,
m_cellFilter(),
selectedTracerNames,
m_maxPvFraction(),
m_minCommunication(),
m_maxTof());
timeStepToFlowResultMap[timeStepIdx] = flowCharResults; timeStepToFlowResultMap[timeStepIdx] = flowCharResults;
} }
lorenzVals[timeStepIdx] = timeStepToFlowResultMap[timeStepIdx].m_lorenzCoefficient; lorenzVals[timeStepIdx] = timeStepToFlowResultMap[timeStepIdx].m_lorenzCoefficient;

View File

@ -104,6 +104,9 @@ private:
caf::PdmField< std::vector<QString> > m_selectedTracerNames; caf::PdmField< std::vector<QString> > m_selectedTracerNames;
caf::PdmField<bool> m_showRegion; caf::PdmField<bool> m_showRegion;
caf::PdmField<double> m_minCommunication;
caf::PdmField<int> m_maxTof;
std::vector<int> m_currentlyPlottedTimeSteps; std::vector<int> m_currentlyPlottedTimeSteps;
QPointer<RiuFlowCharacteristicsPlot> m_flowCharPlotWidget; QPointer<RiuFlowCharacteristicsPlot> m_flowCharPlotWidget;

View File

@ -695,7 +695,9 @@ std::vector<int> RigFlowDiagResults::calculatedTimeSteps(RigFlowDiagResultAddres
RigFlowDiagSolverInterface::FlowCharacteristicsResultFrame RigFlowDiagResults::flowCharacteristicsResults(int frameIndex, RigFlowDiagSolverInterface::FlowCharacteristicsResultFrame RigFlowDiagResults::flowCharacteristicsResults(int frameIndex,
CellFilter cellSelection, CellFilter cellSelection,
const std::vector<QString>& tracerNames, const std::vector<QString>& tracerNames,
double max_pv_fraction) double max_pv_fraction,
double minCommunication,
int maxTof)
{ {
std::set<std::string> injectorNames; std::set<std::string> injectorNames;
std::set<std::string> producerNames; std::set<std::string> producerNames;
@ -734,7 +736,7 @@ RigFlowDiagSolverInterface::FlowCharacteristicsResultFrame RigFlowDiagResults::f
for (size_t i = 0; i < communicationResult->size(); ++i) for (size_t i = 0; i < communicationResult->size(); ++i)
{ {
if (communicationResult->at(i) != HUGE_VAL && communicationResult->at(i) >= 0) if (communicationResult->at(i) != HUGE_VAL && communicationResult->at(i) >= minCommunication)
{ {
selectedCellIndices.push_back(i); selectedCellIndices.push_back(i);
if (allInjectorResults != nullptr) injectorResults.push_back(allInjectorResults->at(i)); if (allInjectorResults != nullptr) injectorResults.push_back(allInjectorResults->at(i));
@ -748,7 +750,7 @@ RigFlowDiagSolverInterface::FlowCharacteristicsResultFrame RigFlowDiagResults::f
{ {
for (size_t i = 0; i < allInjectorResults->size(); ++i) for (size_t i = 0; i < allInjectorResults->size(); ++i)
{ {
if (allInjectorResults->at(i) != HUGE_VAL) if (allInjectorResults->at(i) != HUGE_VAL && allInjectorResults->at(i) <= maxTof)
{ {
selectedCellIndices.push_back(i); selectedCellIndices.push_back(i);
injectorResults.push_back(allInjectorResults->at(i)); injectorResults.push_back(allInjectorResults->at(i));
@ -770,7 +772,7 @@ RigFlowDiagSolverInterface::FlowCharacteristicsResultFrame RigFlowDiagResults::f
{ {
for (size_t i = 0; i < allProducerResults->size(); ++i) for (size_t i = 0; i < allProducerResults->size(); ++i)
{ {
if (allProducerResults->at(i) != HUGE_VAL) if (allProducerResults->at(i) != HUGE_VAL && allProducerResults->at(i) <= maxTof)
{ {
selectedCellIndices.push_back(i); selectedCellIndices.push_back(i);
producerResults.push_back(allProducerResults->at(i)); producerResults.push_back(allProducerResults->at(i));

View File

@ -84,7 +84,9 @@ public:
RigFlowDiagSolverInterface::FlowCharacteristicsResultFrame flowCharacteristicsResults(int frameIndex, RigFlowDiagSolverInterface::FlowCharacteristicsResultFrame flowCharacteristicsResults(int frameIndex,
CellFilter cellSelection, CellFilter cellSelection,
const std::vector<QString>& tracerNames, const std::vector<QString>& tracerNames,
double max_pv_fraction); double max_pv_fraction,
double minCommunication,
int maxTof);
RigFlowDiagSolverInterface::FlowCharacteristicsResultFrame flowCharacteristicsResults(int frameIndex, RigFlowDiagSolverInterface::FlowCharacteristicsResultFrame flowCharacteristicsResults(int frameIndex,
const std::vector<char>& visibleActiveCells, const std::vector<char>& visibleActiveCells,