2016-12-16 14:38:27 +01:00
/////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2016- Statoil ASA
//
// 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.
//
// 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.
//
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
2017-02-07 11:08:56 +01:00
#include "RimFractureTemplateCollection.h"
2016-12-16 14:38:27 +01:00
2017-08-04 14:35:16 +02:00
#include "RimEllipseFractureTemplate.h"
2017-02-07 09:09:00 +01:00
#include "RimFractureTemplate.h"
2017-02-17 09:29:46 +01:00
#include "RimStimPlanFractureTemplate.h"
2016-12-16 14:38:27 +01:00
2017-02-17 09:29:46 +01:00
#include "cafPdmObject.h"
2016-12-16 14:38:27 +01:00
2017-02-07 11:08:56 +01:00
CAF_PDM_SOURCE_INIT ( RimFractureTemplateCollection , "FractureDefinitionCollection" );
2016-12-16 14:38:27 +01:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2017-02-07 11:08:56 +01:00
RimFractureTemplateCollection :: RimFractureTemplateCollection ( void )
2016-12-16 14:38:27 +01:00
{
2017-06-05 09:13:30 +02:00
CAF_PDM_InitObject ( "Fracture Templates" , ":/FractureTemplates16x16.png" , "" , "" );
2016-12-16 14:38:27 +01:00
2017-06-14 07:25:34 +02:00
CAF_PDM_InitField ( & defaultUnitsForFracTemplates , "defaultUnitForFracTemplates" , caf :: AppEnum < RiaEclipseUnitTools :: UnitSystem > ( RiaEclipseUnitTools :: UNITS_METRIC ), "Default unit system for fracture templates" , "" , "" , "" );
2016-12-20 15:28:37 +01:00
CAF_PDM_InitFieldNoDefault ( & fractureDefinitions , "FractureDefinitions" , "" , "" , "" , "" );
2016-12-19 11:23:02 +01:00
fractureDefinitions . uiCapability () -> setUiHidden ( true );
2016-12-16 14:38:27 +01:00
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2017-02-07 11:08:56 +01:00
RimFractureTemplateCollection ::~ RimFractureTemplateCollection ()
2016-12-16 14:38:27 +01:00
{
fractureDefinitions . deleteAllChildObjects ();
2017-01-02 10:12:43 +01:00
}
2016-12-16 14:38:27 +01:00
2017-02-20 09:31:24 +01:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std :: vector < std :: pair < QString , QString > > RimFractureTemplateCollection :: stimPlanResultNamesAndUnits () const
{
std :: set < std :: pair < QString , QString > > nameSet ;
for ( const RimFractureTemplate * f : fractureDefinitions ())
{
auto stimPlanFracture = dynamic_cast < const RimStimPlanFractureTemplate *> ( f );
if ( stimPlanFracture )
{
2017-06-13 11:38:22 +02:00
std :: vector < std :: pair < QString , QString > > namesAndUnits = stimPlanFracture -> resultNamesWithUnit ();
2017-02-20 09:31:24 +01:00
for ( auto nameAndUnit : namesAndUnits )
{
nameSet . insert ( nameAndUnit );
}
}
}
std :: vector < std :: pair < QString , QString >> names ( nameSet . begin (), nameSet . end ());
return names ;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std :: vector < QString > RimFractureTemplateCollection :: stimPlanResultNames () const
{
std :: vector < QString > names ;
for ( auto nameAndUnit : stimPlanResultNamesAndUnits ())
{
names . push_back ( nameAndUnit . first );
}
return names ;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2017-06-30 16:16:27 +02:00
void RimFractureTemplateCollection :: computeMinMax ( const QString & resultName , const QString & unit , double * minValue , double * maxValue , double * posClosestToZero , double * negClosestToZero ) const
2017-02-20 09:31:24 +01:00
{
for ( const RimFractureTemplate * f : fractureDefinitions ())
{
auto stimPlanFracture = dynamic_cast < const RimStimPlanFractureTemplate *> ( f );
if ( stimPlanFracture )
{
2017-06-30 16:16:27 +02:00
stimPlanFracture -> computeMinMax ( resultName , unit , minValue , maxValue , posClosestToZero , negClosestToZero );
2017-02-20 09:31:24 +01:00
}
}
}
2017-01-02 10:12:43 +01:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2017-02-07 11:08:56 +01:00
void RimFractureTemplateCollection :: deleteFractureDefinitions ()
2017-01-02 10:12:43 +01:00
{
fractureDefinitions . deleteAllChildObjects ();
2016-12-16 14:38:27 +01:00
}
2017-02-17 09:29:46 +01:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimFractureTemplateCollection :: loadAndUpdateData ()
{
for ( RimFractureTemplate * f : fractureDefinitions ())
{
RimStimPlanFractureTemplate * stimPlanFracture = dynamic_cast < RimStimPlanFractureTemplate *> ( f );
if ( stimPlanFracture )
{
stimPlanFracture -> loadDataAndUpdate ();
}
}
}
2017-08-03 13:21:19 +02:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimFractureTemplateCollection :: updateFilePathsFromProjectPath ( const QString & newProjectPath , const QString & oldProjectPath )
{
for ( RimFractureTemplate * f : fractureDefinitions ())
{
RimStimPlanFractureTemplate * stimPlanFracture = dynamic_cast < RimStimPlanFractureTemplate *> ( f );
if ( stimPlanFracture )
{
stimPlanFracture -> updateFilePathsFromProjectPath ( newProjectPath , oldProjectPath );
}
2017-08-04 14:35:16 +02:00
RimEllipseFractureTemplate * ellipseFracture = dynamic_cast < RimEllipseFractureTemplate *> ( f );
if ( ellipseFracture )
{
ellipseFracture -> loadDataAndUpdate ();
}
2017-08-03 13:21:19 +02:00
}
}