Import of AICD valve definition from text file

* Add readKeywordContentFromFile
* Add import of AICD values from Completor and Eclipse
This commit is contained in:
Magne Sjaastad
2023-09-12 19:45:32 +02:00
committed by GitHub
parent 2e94bd8e5e
commit 13b4c19bbb
14 changed files with 462 additions and 87 deletions

View File

@@ -23,6 +23,8 @@
#include "cafPdmUiTreeOrdering.h"
#include "opm/input/eclipse/Parser/ParserKeywords/W.hpp"
CAF_PDM_SOURCE_INIT( RimValveTemplate, "ValveTemplate" );
//--------------------------------------------------------------------------------------------------
@@ -166,6 +168,65 @@ void RimValveTemplate::setUserLabel( const QString& userLabel )
m_userLabel = userLabel;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimValveTemplate::setAicdParameter( AICDParameters parameter, double value )
{
if ( m_aicdParameters() )
{
m_aicdParameters()->setValue( parameter, value );
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimValveTemplate* RimValveTemplate::createAicdTemplate( const RiaOpmParserTools::AicdTemplateValues& aicdParameters, int templateNumber )
{
RimValveTemplate* aicdTemplate = new RimValveTemplate;
aicdTemplate->setType( RiaDefines::WellPathComponentType::AICD );
QString name;
if ( aicdParameters.contains( RiaOpmParserTools::aicdTemplateId() ) )
{
auto id = aicdParameters.at( RiaOpmParserTools::aicdTemplateId() );
name = QString::number( id );
}
else
{
name = QString::number( templateNumber );
}
aicdTemplate->setUserLabel( name );
using namespace Opm::ParserKeywords;
std::map<std::string, AICDParameters> parameterMap = { { WSEGAICD::STRENGTH::itemName, AICD_STRENGTH },
{ WSEGAICD::DENSITY_CALI::itemName, AICD_DENSITY_CALIB_FLUID },
{ WSEGAICD::VISCOSITY_CALI::itemName, AICD_VISCOSITY_CALIB_FLUID },
{ WSEGAICD::FLOW_RATE_EXPONENT::itemName, AICD_VOL_FLOW_EXP },
{ WSEGAICD::VISC_EXPONENT::itemName, AICD_VISOSITY_FUNC_EXP },
{ WSEGAICD::CRITICAL_VALUE::itemName, AICD_CRITICAL_WATER_IN_LIQUID_FRAC },
{ WSEGAICD::MAX_ABS_RATE::itemName, AICD_MAX_FLOW_RATE },
{ WSEGAICD::OIL_FLOW_FRACTION::itemName, AICD_EXP_OIL_FRAC_DENSITY },
{ WSEGAICD::WATER_FLOW_FRACTION::itemName, AICD_EXP_WATER_FRAC_DENSITY },
{ WSEGAICD::GAS_FLOW_FRACTION::itemName, AICD_EXP_GAS_FRAC_DENSITY },
{ WSEGAICD::OIL_VISC_FRACTION::itemName, AICD_EXP_OIL_FRAC_VISCOSITY },
{ WSEGAICD::WATER_VISC_FRACTION::itemName, AICD_EXP_WATER_FRAC_VISCOSITY },
{ WSEGAICD::GAS_VISC_FRACTION::itemName, AICD_EXP_GAS_FRAC_VISCOSITY } };
for ( const auto& parameter : parameterMap )
{
if ( aicdParameters.contains( parameter.first ) )
{
auto incomingValue = aicdParameters.at( parameter.first );
aicdTemplate->setAicdParameter( parameter.second, incomingValue );
}
}
return aicdTemplate;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@@ -19,8 +19,10 @@
#pragma once
#include "RiaDefines.h"
#include "RiaOpmParserTools.h"
#include "RimCheckableNamedObject.h"
#include "RimWellPathAicdParameters.h"
#include "cafPdmChildField.h"
@@ -48,6 +50,10 @@ public:
QString fullLabel() const;
void setUserLabel( const QString& userLabel );
void setAicdParameter( AICDParameters parameter, double value );
static RimValveTemplate* createAicdTemplate( const RiaOpmParserTools::AicdTemplateValues& aicdParameters, int templateNumber );
protected:
QList<caf::PdmOptionItemInfo> calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override;
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;

View File

@@ -114,6 +114,14 @@ bool RimWellPathAicdParameters::isValid() const
return true;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimWellPathAicdParameters::setValue( AICDParameters parameter, double value )
{
m_aicdParameterFields[parameter].setValue( QString::number( value ) );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@@ -53,6 +53,8 @@ public:
~RimWellPathAicdParameters() override;
bool isValid() const;
void setValue( AICDParameters parameter, double value );
bool isOpen() const;
std::array<double, AICD_NUM_PARAMS> doubleValues() const;