mirror of
https://github.com/OPM/ResInsight.git
synced 2026-11-01 16:43:03 -06:00
#12950 Simulation Input: add boundary condition choice.
This commit is contained in:
1 parent
b1646d9a1f
commit
b7a4983009
3 files changed
+55
-13
No files matched your search
@@ -320,17 +320,21 @@ std::expected<void, QString> RicExportEclipseSectorModelFeature::exportSimulatio
|
||||
if ( !bordnumVisibility.isNull() )
|
||||
{
|
||||
RigEclipseResultTools::generateBorderResult( &eclipseCase, bordnumVisibility, RiaResultNames::bordnum() );
|
||||
if ( exportSettings.m_boundaryCondition() == RicExportEclipseSectorModelUi::BoundaryCondition::BCCON_BCPROP )
|
||||
{
|
||||
// Generate BCCON result to assign values 1-6 based on which face of the box the border cells are on
|
||||
RigEclipseResultTools::generateBcconResult( &eclipseCase, exportSettings.min(), exportSettings.max() );
|
||||
}
|
||||
else if ( exportSettings.m_boundaryCondition() == RicExportEclipseSectorModelUi::BoundaryCondition::OPERNUM_OPERATER )
|
||||
{
|
||||
// Generate OPERNUM result based on BORDNUM (border cells get max existing OPERNUM + 1)
|
||||
RigEclipseResultTools::generateOperNumResult( &eclipseCase );
|
||||
|
||||
// Generate BCCON result to assign values 1-6 based on which face of the box the border cells are on
|
||||
RigEclipseResultTools::generateBcconResult( &eclipseCase, exportSettings.min(), exportSettings.max() );
|
||||
|
||||
// Generate OPERNUM result based on BORDNUM (border cells get max existing OPERNUM + 1)
|
||||
RigEclipseResultTools::generateOperNumResult( &eclipseCase );
|
||||
}
|
||||
|
||||
if ( auto result = addOperNumRegionAndOperater( &eclipseCase, exportSettings, deckFile ); !result )
|
||||
{
|
||||
return result;
|
||||
if ( auto result = addOperNumRegionAndOperater( &eclipseCase, exportSettings, deckFile ); !result )
|
||||
{
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( auto result = replaceKeywordValuesInDeckFile( &eclipseCase, exportSettings, deckFile ); !result )
|
||||
@@ -1237,7 +1241,7 @@ std::expected<void, QString> RicExportEclipseSectorModelFeature::addOperNumRegio
|
||||
// Create OPERATER keyword to multiply pore volume in border region
|
||||
// OPERATER format: TARGET_ARRAY REGION_NUMBER OPERATION ARRAY_PARAMETER PARAM1 PARAM2 REGION_NAME
|
||||
// Example: OPERATER / PORV 1 MULTX PORV 1.0e6 1* 1* /
|
||||
float porvMultiplier = 1.0e6f; // TODO: Make this user-configurable
|
||||
float porvMultiplier = static_cast<float>( exportSettings.m_porvMultiplier() );
|
||||
Opm::DeckKeyword operaterKw = RimKeywordFactory::operaterKeyword( "PORV", operNumRegion, "MULTX", "PORV", porvMultiplier );
|
||||
|
||||
// Add OPERATER keyword to EDIT section
|
||||
|
||||
@@ -77,6 +77,15 @@ void RicExportEclipseSectorModelUi::GridBoxSelectionEnum::setUp()
|
||||
setDefault( RicExportEclipseSectorModelUi::VISIBLE_CELLS_BOX );
|
||||
}
|
||||
|
||||
template <>
|
||||
void RicExportEclipseSectorModelUi::BoundaryConditionEnum::setUp()
|
||||
{
|
||||
addItem( RicExportEclipseSectorModelUi::OPERNUM_OPERATER, "OPERNUM_OPERATER", "OPERNUM + OPERATER" );
|
||||
addItem( RicExportEclipseSectorModelUi::BCCON_BCPROP, "BCCON_BCPROP", "BCCON + BCPROP" );
|
||||
|
||||
setDefault( RicExportEclipseSectorModelUi::OPERNUM_OPERATER );
|
||||
}
|
||||
|
||||
} // namespace caf
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -141,6 +150,10 @@ RicExportEclipseSectorModelUi::RicExportEclipseSectorModelUi()
|
||||
|
||||
CAF_PDM_InitField( &m_exportSimulationInput, "ExportSimulationInput", false, "Export Simulation Input" );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_boundaryCondition, "BoundaryCondition", "Boundary Condition Type" );
|
||||
|
||||
CAF_PDM_InitField( &m_porvMultiplier, "PorvMultiplier", 1.0e6, "PORV Multiplier" );
|
||||
|
||||
m_exportGridFilename = defaultGridFileName();
|
||||
m_exportParametersFilename = defaultResultsFileName();
|
||||
m_exportFaultsFilename = defaultFaultsFileName();
|
||||
@@ -440,8 +453,18 @@ void RicExportEclipseSectorModelUi::defineUiOrdering( QString uiConfigName, caf:
|
||||
}
|
||||
else if ( uiConfigName == m_tabNames[2] )
|
||||
{
|
||||
m_bcpropKeywords.uiCapability()->setUiEditorTypeName( caf::PdmUiTableViewEditor::uiEditorTypeName() );
|
||||
uiOrdering.add( &m_bcpropKeywords );
|
||||
caf::PdmUiGroup* bcGroup = uiOrdering.addNewGroup( "Boundary Conditions" );
|
||||
bcGroup->add( &m_boundaryCondition );
|
||||
|
||||
if ( m_boundaryCondition() == OPERNUM_OPERATER )
|
||||
{
|
||||
bcGroup->add( &m_porvMultiplier );
|
||||
}
|
||||
else if ( m_boundaryCondition() == BCCON_BCPROP )
|
||||
{
|
||||
m_bcpropKeywords.uiCapability()->setUiEditorTypeName( caf::PdmUiTableViewEditor::uiEditorTypeName() );
|
||||
bcGroup->add( &m_bcpropKeywords );
|
||||
}
|
||||
}
|
||||
uiOrdering.skipRemainingFields( true );
|
||||
}
|
||||
@@ -471,6 +494,10 @@ void RicExportEclipseSectorModelUi::fieldChangedByUi( const caf::PdmFieldHandle*
|
||||
applyBoundaryDefaults();
|
||||
updateConnectedEditors();
|
||||
}
|
||||
else if ( changedField == &m_boundaryCondition )
|
||||
{
|
||||
updateConnectedEditors();
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -62,6 +62,13 @@ class RicExportEclipseSectorModelUi : public caf::PdmObject
|
||||
};
|
||||
using GridBoxSelectionEnum = caf::AppEnum<GridBoxSelection>;
|
||||
|
||||
enum BoundaryCondition
|
||||
{
|
||||
OPERNUM_OPERATER,
|
||||
BCCON_BCPROP
|
||||
};
|
||||
using BoundaryConditionEnum = caf::AppEnum<BoundaryCondition>;
|
||||
|
||||
public:
|
||||
RicExportEclipseSectorModelUi();
|
||||
~RicExportEclipseSectorModelUi() override;
|
||||
@@ -105,6 +112,10 @@ public:
|
||||
|
||||
caf::PdmField<bool> m_exportSimulationInput;
|
||||
|
||||
caf::PdmField<BoundaryConditionEnum> m_boundaryCondition;
|
||||
|
||||
caf::PdmField<double> m_porvMultiplier;
|
||||
|
||||
caf::PdmField<int> m_visibleWellsPadding;
|
||||
|
||||
caf::PdmField<int> refinementCountI;
|
||||
|
||||
Reference in new issue
Block a user