2017-05-16 02:43:41 -05:00
/////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2017- Statoil ASA
2018-08-20 08:15:48 -05:00
//
2017-05-16 02:43:41 -05:00
// ResInsight is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
2018-08-20 08:15:48 -05:00
//
2017-05-16 02:43:41 -05:00
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.
2018-08-20 08:15:48 -05:00
//
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
2017-05-16 02:43:41 -05:00
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
2017-05-30 07:37:51 -05:00
# include "RicExportCompletionDataSettingsUi.h"
2018-10-29 04:00:27 -05:00
# include "RicExportFractureCompletionsImpl.h"
2021-01-21 07:30:15 -06:00
# include "RiaEclipseUnitTools.h"
2018-10-29 04:00:27 -05:00
# include "RimProject.h"
2020-02-28 04:56:07 -06:00
# include "RimTools.h"
2018-10-29 04:00:27 -05:00
# include "RimWellPath.h"
# include "RimWellPathCompletions.h"
2017-05-16 02:43:41 -05:00
2018-08-20 08:15:48 -05:00
// clang-format off
2017-06-14 08:30:50 -05:00
namespace caf
{
template < >
void RicExportCompletionDataSettingsUi : : ExportSplitType : : setUp ( )
{
addItem ( RicExportCompletionDataSettingsUi : : UNIFIED_FILE , " UNIFIED_FILE " , " Unified File " ) ;
addItem ( RicExportCompletionDataSettingsUi : : SPLIT_ON_WELL , " SPLIT_ON_WELL " , " Split on Well " ) ;
addItem ( RicExportCompletionDataSettingsUi : : SPLIT_ON_WELL_AND_COMPLETION_TYPE , " SPLIT_ON_WELL_AND_COMPLETION_TYPE " , " Split on Well and Completion Type " ) ;
2018-04-30 01:15:55 -05:00
setDefault ( RicExportCompletionDataSettingsUi : : SPLIT_ON_WELL_AND_COMPLETION_TYPE ) ;
2017-06-14 08:30:50 -05:00
}
2017-06-15 04:37:00 -05:00
2017-06-21 03:58:02 -05:00
template < >
void RicExportCompletionDataSettingsUi : : CompdatExportType : : setUp ( )
{
2017-06-21 08:54:18 -05:00
addItem ( RicExportCompletionDataSettingsUi : : TRANSMISSIBILITIES , " TRANSMISSIBILITIES " , " Calculated Transmissibilities " ) ;
2017-06-23 08:45:22 -05:00
addItem ( RicExportCompletionDataSettingsUi : : WPIMULT_AND_DEFAULT_CONNECTION_FACTORS , " WPIMULT_AND_DEFAULT_CONNECTION_FACTORS " , " Default Connection Factors and WPIMULT (Fractures Not Supported) " ) ;
2017-06-21 03:58:02 -05:00
setDefault ( RicExportCompletionDataSettingsUi : : TRANSMISSIBILITIES ) ;
}
2018-04-13 05:13:27 -05:00
template < >
void RicExportCompletionDataSettingsUi : : CombinationModeType : : setUp ( )
{
addItem ( RicExportCompletionDataSettingsUi : : INDIVIDUALLY , " INDIVIDUALLY " , " Individually " ) ;
addItem ( RicExportCompletionDataSettingsUi : : COMBINED , " COMBINED " , " Combined " ) ;
setDefault ( RicExportCompletionDataSettingsUi : : INDIVIDUALLY ) ;
}
2018-09-14 07:00:27 -05:00
template < >
2018-11-13 09:47:53 -06:00
void RicExportCompletionDataSettingsUi : : TransScalingWBHPSource : : setUp ( )
2018-09-14 07:00:27 -05:00
{
2018-11-13 09:47:53 -06:00
addItem ( RicExportFractureCompletionsImpl : : WBHP_FROM_SUMMARY , " WBHP_SUMMARY " , " WBHP From Summary Case " ) ;
addItem ( RicExportFractureCompletionsImpl : : WBHP_FROM_USER_DEF , " WBHP_USER_DEFINED " , " Fixed User Defined WBHP " ) ;
2018-09-25 03:12:45 -05:00
2018-11-13 09:47:53 -06:00
setDefault ( RicExportFractureCompletionsImpl : : WBHP_FROM_SUMMARY ) ;
2018-11-12 08:00:13 -06:00
}
2017-06-14 08:30:50 -05:00
}
2018-08-20 08:15:48 -05:00
// clang-format on
2017-06-14 08:30:50 -05:00
2019-09-06 03:40:57 -05:00
CAF_PDM_SOURCE_INIT ( RicExportCompletionDataSettingsUi , " RicExportCompletionDataSettingsUi " ) ;
2017-05-16 02:43:41 -05:00
//--------------------------------------------------------------------------------------------------
2018-08-20 08:15:48 -05:00
///
2017-05-16 02:43:41 -05:00
//--------------------------------------------------------------------------------------------------
2017-05-30 07:37:51 -05:00
RicExportCompletionDataSettingsUi : : RicExportCompletionDataSettingsUi ( )
2017-05-16 02:43:41 -05:00
{
2019-09-06 03:40:57 -05:00
CAF_PDM_InitObject ( " RimExportCompletionDataSettings " , " " , " " , " " ) ;
2017-05-16 02:43:41 -05:00
2019-09-06 03:40:57 -05:00
CAF_PDM_InitFieldNoDefault ( & fileSplit , " FileSplit " , " File Split " , " " , " " , " " ) ;
2017-12-22 07:42:56 -06:00
2019-09-06 03:40:57 -05:00
CAF_PDM_InitFieldNoDefault ( & compdatExport , " compdatExport " , " Export " , " " , " " , " " ) ;
2017-06-14 08:30:50 -05:00
2019-09-06 03:40:57 -05:00
CAF_PDM_InitField ( & timeStep , " TimeStepIndex " , 0 , " Time Step " , " " , " " , " " ) ;
2018-03-14 03:35:48 -05:00
2021-04-13 00:22:56 -05:00
CAF_PDM_InitField ( & includeMsw , " IncludeMSW " , true , " Multi Segment Well Model " , " " , " " , " " ) ;
2018-09-06 02:53:35 -05:00
2019-09-06 03:40:57 -05:00
CAF_PDM_InitField ( & useLateralNTG , " UseLateralNTG " , false , " Use NTG Horizontally " , " " , " " , " " ) ;
2017-05-30 08:42:05 -05:00
2019-09-06 03:40:57 -05:00
CAF_PDM_InitField ( & includePerforations , " IncludePerforations " , true , " Perforations " , " " , " " , " " ) ;
CAF_PDM_InitField ( & includeFishbones , " IncludeFishbones " , true , " Fishbones " , " " , " " , " " ) ;
CAF_PDM_InitField ( & includeFractures , " IncludeFractures " , true , " Fractures " , " " , " " , " " ) ;
2017-05-29 06:13:25 -05:00
2019-09-06 03:40:57 -05:00
CAF_PDM_InitField ( & performTransScaling , " TransScalingType " , false , " Perform Transmissibility Scaling " , " " , " " , " " ) ;
CAF_PDM_InitField ( & transScalingTimeStep , " TransScalingTimeStep " , 0 , " Current Time Step " , " " , " " , " " ) ;
CAF_PDM_InitFieldNoDefault ( & transScalingWBHPSource , " TransScalingWBHPSource " , " WBHP Selection " , " " , " " , " " ) ;
CAF_PDM_InitField ( & transScalingWBHP , " TransScalingWBHP " , 200.0 , " WBHP Before Production Start " , " " , " " , " " ) ;
2018-09-14 07:00:27 -05:00
2019-09-06 03:40:57 -05:00
CAF_PDM_InitField ( & excludeMainBoreForFishbones ,
" ExcludeMainBoreForFishbones " ,
false ,
" Exclude Main Bore Transmissibility " ,
" " ,
" Main bore perforation intervals are defined by start/end MD of each active fishbone sub "
" definition " ,
" " ) ;
2018-08-20 08:15:48 -05:00
2019-09-06 03:40:57 -05:00
CAF_PDM_InitFieldNoDefault ( & m_reportCompletionTypesSeparately ,
" ReportCompletionTypesSeparately " ,
" Export Completion Types " ,
" " ,
" " ,
" " ) ;
2018-04-13 05:13:27 -05:00
2021-05-03 06:21:36 -05:00
CAF_PDM_InitField ( & m_exportDataSourceAsComment , " ExportDataSourceAsComment " , true , " Comments " , " " , " " , " " ) ;
2021-04-13 00:22:56 -05:00
CAF_PDM_InitField ( & m_exportWelspec , " ExportWelspec " , true , " WELSPEC keyword " , " " , " " , " " ) ;
CAF_PDM_InitField ( & m_completionWelspecAfterMainBore ,
" CompletionWelspecAfterMainBore " ,
2021-05-03 06:21:36 -05:00
true ,
2021-04-13 00:22:56 -05:00
" WELSEGS per Completion Type " ,
2021-03-02 02:25:53 -06:00
" " ,
" " ,
" " ) ;
2021-04-30 06:51:15 -05:00
CAF_PDM_InitField ( & m_useCustomFileName , " UseCustomFileName " , false , " Use Custom Filename " , " " , " " , " " ) ;
CAF_PDM_InitField ( & m_customFileName , " CustomFileName " , { } , " Custom Filename " , " " , " " , " " ) ;
2017-09-07 13:43:01 -05:00
m_displayForSimWell = true ;
2018-08-20 08:15:48 -05:00
m_fracturesEnabled = true ;
2018-04-09 04:23:14 -05:00
m_perforationsEnabled = true ;
2018-08-20 08:15:48 -05:00
m_fishbonesEnabled = true ;
2017-05-30 08:42:05 -05:00
}
2019-04-24 06:31:11 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicExportCompletionDataSettingsUi : : enableIncludeMsw ( )
{
includeMsw = true ;
}
2017-06-12 05:03:42 -05:00
//--------------------------------------------------------------------------------------------------
2018-08-20 08:15:48 -05:00
///
2017-06-12 05:03:42 -05:00
//--------------------------------------------------------------------------------------------------
void RicExportCompletionDataSettingsUi : : showForSimWells ( )
{
m_displayForSimWell = true ;
}
//--------------------------------------------------------------------------------------------------
2018-08-20 08:15:48 -05:00
///
2017-06-12 05:03:42 -05:00
//--------------------------------------------------------------------------------------------------
void RicExportCompletionDataSettingsUi : : showForWellPath ( )
{
m_displayForSimWell = false ;
}
2018-04-09 04:23:14 -05:00
//--------------------------------------------------------------------------------------------------
2018-08-20 08:15:48 -05:00
///
2018-04-09 04:23:14 -05:00
//--------------------------------------------------------------------------------------------------
2019-09-06 03:40:57 -05:00
void RicExportCompletionDataSettingsUi : : setCombinationMode ( CombinationMode combinationMode )
2018-04-13 05:13:27 -05:00
{
m_reportCompletionTypesSeparately = combinationMode ;
}
2021-03-02 02:25:53 -06:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicExportCompletionDataSettingsUi : : setExportDataSourceAsComment ( bool enable )
{
m_exportDataSourceAsComment = enable ;
}
2018-04-13 05:13:27 -05:00
//--------------------------------------------------------------------------------------------------
2018-08-20 08:15:48 -05:00
///
2018-04-13 05:13:27 -05:00
//--------------------------------------------------------------------------------------------------
2019-09-06 03:40:57 -05:00
void RicExportCompletionDataSettingsUi : : showFractureInUi ( bool enable )
2018-04-09 04:23:14 -05:00
{
m_fracturesEnabled = enable ;
}
//--------------------------------------------------------------------------------------------------
2018-08-20 08:15:48 -05:00
///
2018-04-09 04:23:14 -05:00
//--------------------------------------------------------------------------------------------------
2019-09-06 03:40:57 -05:00
void RicExportCompletionDataSettingsUi : : showPerforationsInUi ( bool enable )
2018-04-09 04:23:14 -05:00
{
m_perforationsEnabled = enable ;
}
//--------------------------------------------------------------------------------------------------
2018-08-20 08:15:48 -05:00
///
2018-04-09 04:23:14 -05:00
//--------------------------------------------------------------------------------------------------
2019-09-06 03:40:57 -05:00
void RicExportCompletionDataSettingsUi : : showFishbonesInUi ( bool enable )
2018-04-09 04:23:14 -05:00
{
m_fishbonesEnabled = enable ;
}
2018-04-13 05:13:27 -05:00
//--------------------------------------------------------------------------------------------------
2018-08-20 08:15:48 -05:00
///
2018-04-13 05:13:27 -05:00
//--------------------------------------------------------------------------------------------------
bool RicExportCompletionDataSettingsUi : : reportCompletionsTypesIndividually ( ) const
{
return m_reportCompletionTypesSeparately ( ) = = INDIVIDUALLY ;
}
2021-03-02 02:25:53 -06:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RicExportCompletionDataSettingsUi : : exportDataSourceAsComment ( ) const
{
return m_exportDataSourceAsComment ;
}
2021-05-02 06:51:00 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicExportCompletionDataSettingsUi : : setExportWelspec ( bool enable )
{
m_exportWelspec = enable ;
}
2021-03-02 02:25:53 -06:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RicExportCompletionDataSettingsUi : : exportWelspec ( ) const
{
return m_exportWelspec ;
}
2021-05-02 06:51:00 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicExportCompletionDataSettingsUi : : setExportCompletionWelspecAfterMainBore ( bool enable )
{
m_completionWelspecAfterMainBore = enable ;
}
2021-04-13 00:22:56 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RicExportCompletionDataSettingsUi : : exportCompletionWelspecAfterMainBore ( ) const
{
return m_completionWelspecAfterMainBore ( ) ;
}
2021-05-02 06:51:00 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicExportCompletionDataSettingsUi : : setCustomFileName ( const QString & fileName )
{
m_useCustomFileName = ! fileName . isEmpty ( ) ;
m_customFileName = fileName ;
}
2021-04-30 06:51:15 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RicExportCompletionDataSettingsUi : : customFileName ( ) const
{
if ( m_useCustomFileName ) return m_customFileName ( ) ;
return { } ;
}
2017-08-14 15:30:22 -05:00
//--------------------------------------------------------------------------------------------------
2018-08-20 08:15:48 -05:00
///
2017-08-14 15:30:22 -05:00
//--------------------------------------------------------------------------------------------------
2019-09-06 03:40:57 -05:00
void RicExportCompletionDataSettingsUi : : fieldChangedByUi ( const caf : : PdmFieldHandle * changedField ,
const QVariant & oldValue ,
const QVariant & newValue )
2017-08-14 15:30:22 -05:00
{
2019-09-06 03:40:57 -05:00
if ( changedField = = & compdatExport )
2017-08-14 15:30:22 -05:00
{
2019-09-06 03:40:57 -05:00
if ( compdatExport = = WPIMULT_AND_DEFAULT_CONNECTION_FACTORS )
2017-08-14 15:30:22 -05:00
{
includeFractures = false ;
}
2019-09-06 03:40:57 -05:00
else if ( compdatExport = = TRANSMISSIBILITIES | | includeMsw )
2017-08-14 15:30:22 -05:00
{
includeFractures = true ;
}
}
}
2017-05-30 08:42:05 -05:00
//--------------------------------------------------------------------------------------------------
2018-08-20 08:15:48 -05:00
///
2017-05-30 08:42:05 -05:00
//--------------------------------------------------------------------------------------------------
2018-08-20 08:15:48 -05:00
QList < caf : : PdmOptionItemInfo >
2019-09-06 03:40:57 -05:00
RicExportCompletionDataSettingsUi : : calculateValueOptions ( const caf : : PdmFieldHandle * fieldNeedingOptions ,
bool * useOptionsOnly )
2017-05-30 08:42:05 -05:00
{
QList < caf : : PdmOptionItemInfo > options ;
2019-09-06 03:40:57 -05:00
if ( fieldNeedingOptions = = & timeStep )
2017-05-30 08:42:05 -05:00
{
2020-02-28 04:56:07 -06:00
RimTools : : timeStepsForCase ( caseToApply , & options ) ;
2017-05-30 08:42:05 -05:00
}
2019-09-06 03:40:57 -05:00
else if ( fieldNeedingOptions = = & transScalingTimeStep )
2018-10-29 04:00:27 -05:00
{
2019-09-06 03:40:57 -05:00
std : : map < int , std : : vector < std : : pair < QString , QString > > > wellProductionStartStrings =
generateWellProductionStartStrings ( ) ;
2018-10-29 04:00:27 -05:00
QStringList timeStepNames ;
2019-09-06 03:40:57 -05:00
if ( caseToApply )
2018-10-29 04:00:27 -05:00
{
timeStepNames = caseToApply - > timeStepStrings ( ) ;
}
2019-09-06 03:40:57 -05:00
for ( int i = 0 ; i < timeStepNames . size ( ) ; i + + )
2018-10-29 04:00:27 -05:00
{
QString timeStepString = timeStepNames [ i ] ;
2019-09-06 03:40:57 -05:00
auto it = wellProductionStartStrings . find ( i ) ;
if ( it ! = wellProductionStartStrings . end ( ) )
2018-10-29 04:00:27 -05:00
{
2019-09-06 03:40:57 -05:00
int numberOfWells = static_cast < int > ( it - > second . size ( ) ) ;
2018-10-29 05:44:14 -05:00
QStringList wellList ;
QStringList wellPressureList ;
2019-09-06 03:40:57 -05:00
const int maxStringLength = 70 ;
QString startStringFormat ( " [Start: %1] " ) ;
2018-10-29 05:44:14 -05:00
2019-09-06 03:40:57 -05:00
for ( int w = 0 ; w < numberOfWells ; + + w )
2018-10-29 05:44:14 -05:00
{
2019-09-06 03:40:57 -05:00
QString wellString = it - > second [ w ] . first ;
QStringList candidateWellList = wellList ;
candidateWellList < < wellString ;
2018-10-29 05:44:14 -05:00
2019-09-06 03:40:57 -05:00
if ( startStringFormat . arg ( candidateWellList . join ( " , " ) ) . length ( ) < maxStringLength )
2018-10-29 05:44:14 -05:00
{
2018-10-29 06:38:34 -05:00
wellList = candidateWellList ;
2018-10-29 05:44:14 -05:00
}
2019-11-04 08:08:09 -06:00
QString wellStringWithPressure =
QString ( " %1 (%2) " ) . arg ( it - > second [ w ] . first ) . arg ( it - > second [ w ] . second ) ;
2019-09-06 03:40:57 -05:00
QStringList candidateWellPressureList = wellPressureList ;
candidateWellPressureList < < wellStringWithPressure ;
if ( startStringFormat . arg ( candidateWellPressureList . join ( " , " ) ) . length ( ) < maxStringLength )
2018-10-29 05:44:14 -05:00
{
2018-10-29 06:38:34 -05:00
wellPressureList = candidateWellPressureList ;
2018-10-29 05:44:14 -05:00
}
}
2019-09-06 03:40:57 -05:00
if ( wellList . size ( ) < numberOfWells )
2018-10-29 05:44:14 -05:00
{
2019-09-06 03:40:57 -05:00
wellList + = QString ( " + %1 more " ) . arg ( numberOfWells - wellList . size ( ) ) ;
timeStepString + = startStringFormat . arg ( wellList . join ( " , " ) ) ;
2018-10-29 05:44:14 -05:00
}
2019-09-06 03:40:57 -05:00
else if ( wellPressureList . size ( ) < numberOfWells )
2018-10-29 05:44:14 -05:00
{
2019-09-06 03:40:57 -05:00
timeStepString + = startStringFormat . arg ( wellList . join ( " , " ) ) ;
2018-10-29 05:44:14 -05:00
}
else
{
2019-09-06 03:40:57 -05:00
timeStepString + = startStringFormat . arg ( wellPressureList . join ( " , " ) ) ;
2018-10-29 05:44:14 -05:00
}
2018-10-29 04:00:27 -05:00
}
2019-09-06 03:40:57 -05:00
options . push_back ( caf : : PdmOptionItemInfo ( timeStepString , i ) ) ;
2018-10-29 04:00:27 -05:00
}
}
2017-05-30 08:42:05 -05:00
else
{
2019-09-06 03:40:57 -05:00
options = RicCaseAndFileExportSettingsUi : : calculateValueOptions ( fieldNeedingOptions , useOptionsOnly ) ;
2017-05-30 08:42:05 -05:00
}
return options ;
2017-05-16 02:43:41 -05:00
}
2017-06-12 05:03:42 -05:00
//--------------------------------------------------------------------------------------------------
2018-08-20 08:15:48 -05:00
///
2017-06-12 05:03:42 -05:00
//--------------------------------------------------------------------------------------------------
2019-09-06 03:40:57 -05:00
void RicExportCompletionDataSettingsUi : : defineUiOrdering ( QString uiConfigName , caf : : PdmUiOrdering & uiOrdering )
2017-06-12 05:03:42 -05:00
{
2018-04-09 04:23:14 -05:00
{
2019-09-06 03:40:57 -05:00
caf : : PdmUiGroup * group = uiOrdering . addNewGroup ( " Export Settings " ) ;
group - > add ( & compdatExport ) ;
group - > add ( & caseToApply ) ;
group - > add ( & useLateralNTG ) ;
2021-03-02 02:25:53 -06:00
group - > add ( & m_exportDataSourceAsComment ) ;
group - > add ( & m_exportWelspec ) ;
2021-04-13 00:22:56 -05:00
group - > add ( & includeMsw ) ;
group - > add ( & m_completionWelspecAfterMainBore ) ;
2018-09-24 03:35:16 -05:00
}
{
2019-09-06 03:40:57 -05:00
caf : : PdmUiGroup * group = uiOrdering . addNewGroup ( " File Settings " ) ;
group - > add ( & fileSplit ) ;
group - > add ( & m_reportCompletionTypesSeparately ) ;
group - > add ( & folder ) ;
2021-04-30 06:51:15 -05:00
if ( fileSplit ( ) = = UNIFIED_FILE )
{
group - > add ( & m_useCustomFileName ) ;
group - > add ( & m_customFileName ) ;
m_customFileName . uiCapability ( ) - > setUiReadOnly ( ! m_useCustomFileName ) ;
}
2018-04-09 04:23:14 -05:00
}
2017-06-12 05:03:42 -05:00
{
2019-09-06 03:40:57 -05:00
caf : : PdmUiGroup * group = uiOrdering . addNewGroup ( " Completions Export Selection " ) ;
if ( ! m_displayForSimWell )
2017-06-23 08:45:22 -05:00
{
2019-09-06 03:40:57 -05:00
if ( m_perforationsEnabled )
2018-04-09 04:23:14 -05:00
{
2019-09-06 03:40:57 -05:00
group - > add ( & includePerforations ) ;
group - > add ( & timeStep ) ;
if ( ! includePerforations )
timeStep . uiCapability ( ) - > setUiReadOnly ( true ) ;
2018-04-09 04:23:14 -05:00
else
2019-09-06 03:40:57 -05:00
timeStep . uiCapability ( ) - > setUiReadOnly ( false ) ;
2018-04-09 04:23:14 -05:00
}
2017-06-23 08:45:22 -05:00
}
2018-04-09 04:23:14 -05:00
2019-09-06 03:40:57 -05:00
if ( m_fracturesEnabled )
2017-06-23 08:45:22 -05:00
{
2019-09-06 03:40:57 -05:00
group - > add ( & includeFractures ) ;
2018-09-17 03:51:08 -05:00
2019-09-06 03:40:57 -05:00
caf : : PdmUiGroup * pddGroup = group - > addNewGroup ( " Pressure Differential Depletion Scaling " ) ;
pddGroup - > setUiReadOnly ( ! includeFractures ( ) ) ;
2018-11-13 09:47:53 -06:00
2019-09-06 03:40:57 -05:00
pddGroup - > add ( & performTransScaling ) ;
pddGroup - > add ( & transScalingTimeStep ) ;
pddGroup - > add ( & transScalingWBHPSource ) ;
pddGroup - > add ( & transScalingWBHP ) ;
2018-11-13 09:47:53 -06:00
2019-09-06 03:40:57 -05:00
if ( ! includeFractures ( ) )
2018-11-13 09:47:53 -06:00
{
performTransScaling = false ;
2019-09-06 03:40:57 -05:00
performTransScaling . uiCapability ( ) - > setUiReadOnly ( true ) ;
2018-11-13 09:47:53 -06:00
}
else
2018-09-19 08:19:41 -05:00
{
2019-09-06 03:40:57 -05:00
performTransScaling . uiCapability ( ) - > setUiReadOnly ( false ) ;
2018-11-13 09:47:53 -06:00
}
2018-09-19 08:19:41 -05:00
2019-09-06 03:40:57 -05:00
if ( ! performTransScaling ( ) )
2018-11-13 09:47:53 -06:00
{
2019-09-06 03:40:57 -05:00
transScalingTimeStep . uiCapability ( ) - > setUiReadOnly ( true ) ;
transScalingWBHPSource . uiCapability ( ) - > setUiReadOnly ( true ) ;
transScalingWBHP . uiCapability ( ) - > setUiReadOnly ( true ) ;
2018-11-13 09:47:53 -06:00
}
else
2019-09-06 03:40:57 -05:00
{
transScalingTimeStep . uiCapability ( ) - > setUiReadOnly ( false ) ;
transScalingWBHPSource . uiCapability ( ) - > setUiReadOnly ( false ) ;
transScalingWBHP . uiCapability ( ) - > setUiReadOnly ( false ) ;
if ( transScalingWBHPSource = = RicExportFractureCompletionsImpl : : WBHP_FROM_SUMMARY )
2018-11-12 08:00:13 -06:00
{
2019-09-06 03:40:57 -05:00
transScalingWBHP . uiCapability ( ) - > setUiName ( " WBHP Before Production Start " ) ;
2018-11-12 08:00:13 -06:00
}
else
{
2019-09-06 03:40:57 -05:00
transScalingWBHP . uiCapability ( ) - > setUiName ( " User Defined WBHP " ) ;
2018-11-12 08:00:13 -06:00
}
2018-09-19 08:19:41 -05:00
}
2018-09-17 03:51:08 -05:00
2018-09-05 02:47:37 -05:00
// Set visibility
2019-09-06 03:40:57 -05:00
includeFractures . uiCapability ( ) - > setUiHidden ( compdatExport = = WPIMULT_AND_DEFAULT_CONNECTION_FACTORS & &
! includeMsw ) ;
2017-06-23 08:45:22 -05:00
}
2018-04-13 05:13:27 -05:00
2019-09-06 03:40:57 -05:00
if ( ! m_displayForSimWell )
2018-04-13 05:13:27 -05:00
{
2019-09-06 03:40:57 -05:00
if ( m_fishbonesEnabled )
2018-04-13 05:13:27 -05:00
{
2019-09-06 03:40:57 -05:00
group - > add ( & includeFishbones ) ;
group - > add ( & excludeMainBoreForFishbones ) ;
2018-09-05 02:47:37 -05:00
// Set visibility
2019-09-06 03:40:57 -05:00
if ( ! includeFishbones )
excludeMainBoreForFishbones . uiCapability ( ) - > setUiReadOnly ( true ) ;
2018-04-13 05:13:27 -05:00
else
2019-09-06 03:40:57 -05:00
excludeMainBoreForFishbones . uiCapability ( ) - > setUiReadOnly ( false ) ;
2018-04-13 05:13:27 -05:00
}
}
2017-06-21 09:38:57 -05:00
}
2017-08-14 15:30:22 -05:00
2017-06-12 05:03:42 -05:00
uiOrdering . skipRemainingFields ( ) ;
}
2018-10-29 04:00:27 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2019-09-06 03:40:57 -05:00
std : : map < int , std : : vector < std : : pair < QString , QString > > >
RicExportCompletionDataSettingsUi : : generateWellProductionStartStrings ( )
2018-10-29 04:00:27 -05:00
{
2018-10-29 05:44:14 -05:00
std : : map < int , std : : vector < std : : pair < QString , QString > > > wellProductionStartStrings ;
2018-10-29 04:00:27 -05:00
const RimProject * project = nullptr ;
2019-09-06 03:40:57 -05:00
if ( caseToApply )
2018-10-29 04:00:27 -05:00
{
2019-09-06 03:40:57 -05:00
caseToApply - > firstAncestorOrThisOfTypeAsserted ( project ) ;
for ( const RimWellPath * wellPath : project - > allWellPaths ( ) )
2018-10-29 04:00:27 -05:00
{
int initialWellProductionTimeStep = - 1 ;
2019-09-06 03:40:57 -05:00
double initialWellPressure = 0.0 ;
double currentWellPressure = 0.0 ;
RicExportFractureCompletionsImpl : :
getWellPressuresAndInitialProductionTimeStepFromSummaryData ( caseToApply ,
2021-02-26 07:27:59 -06:00
wellPath - > completionSettings ( ) - > wellNameForExport ( ) ,
2019-09-06 03:40:57 -05:00
0 ,
& initialWellProductionTimeStep ,
& initialWellPressure ,
& currentWellPressure ) ;
if ( initialWellProductionTimeStep > = 0 )
2018-10-29 04:00:27 -05:00
{
2019-09-06 03:40:57 -05:00
QString pressureUnits = RiaEclipseUnitTools : : unitStringPressure ( wellPath - > unitSystem ( ) ) ;
wellProductionStartStrings [ initialWellProductionTimeStep ] . push_back (
std : : make_pair ( wellPath - > name ( ) ,
QString ( " %1 %2 " ) . arg ( initialWellPressure , 4 , ' f ' , 1 ) . arg ( pressureUnits ) ) ) ;
2018-10-29 04:00:27 -05:00
}
}
}
return wellProductionStartStrings ;
}