2015-06-04 12:35:22 +02:00
|
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
//
|
|
|
|
|
// Copyright (C) 2015- Statoil ASA
|
|
|
|
|
// Copyright (C) 2015- Ceetron Solutions AS
|
2019-09-06 10:40:57 +02:00
|
|
|
//
|
2015-06-04 12:35:22 +02: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.
|
2019-09-06 10:40:57 +02:00
|
|
|
//
|
2015-06-04 12:35:22 +02: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.
|
2019-09-06 10:40:57 +02:00
|
|
|
//
|
|
|
|
|
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
2015-06-04 12:35:22 +02:00
|
|
|
// for more details.
|
|
|
|
|
//
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include "RigFemResultAddress.h"
|
|
|
|
|
|
2020-08-03 14:06:59 +02:00
|
|
|
#include "RimMudWeightWindowParameters.h"
|
|
|
|
|
|
2018-02-08 16:43:12 +01:00
|
|
|
#include "cafTensor3.h"
|
|
|
|
|
|
2015-06-04 12:35:22 +02:00
|
|
|
#include "cvfCollection.h"
|
|
|
|
|
#include "cvfObject.h"
|
2018-01-10 10:43:33 +01:00
|
|
|
|
|
|
|
|
#include <QString>
|
|
|
|
|
|
2015-06-04 12:35:22 +02:00
|
|
|
#include <map>
|
Split fem part results collection 5785 (#5871)
* #5785 Extract RigFemClosestResultIndexCalculator class to separate file.
* #5785 Move method implementation of RigFemClosestResutIndexCalculator to cpp file.
Also improve const correctness.
* #5785 Extract method for calculating normal SE, ie. SE:11/22/33.
* #5785 Extract method for calculating shear SE, ie. SE:12/13/23.
* #5785 Create a list of result calculators.
* #5785 Extract method for calculating timelapse, normalized, and gamma results.
* #5785 Extract method for calculating normal ST, ie. ST:11/22/33.
* #5785 Extract method for calculating shear ST, ie. ST:12/13/23.
* #5785 Extract method for calculating surface angles and aligned stress.
* #5785 Extract method for calculating principal strain and stress.
* #5785 Extract method for calculating FOS, SFI and DSM for SE.
* #5785 Extract method for calculating NE.EV, NE.ED, ST.Q and ST.STM.
* #5785 Extract method for calculating compaction.
* #5785 Extract method for calculating stress gradients.
* #5785 Extract method for calculating SE.SEM.
* #5785 Extract method for calculating NE.
* #5785 Extract method for calculating formation indices.
* #5785 Extract method for calculating nodal graidents, bar conversions, and EnIpPorBar.
* #5785 Use std::unique_ptr to calculators.
* Use std::vector<unique_ptr>
Co-authored-by: Magne Sjaastad <magne.sjaastad@ceetronsolutions.com>
2020-05-09 08:57:07 +02:00
|
|
|
#include <memory>
|
2020-01-30 16:02:36 +01:00
|
|
|
#include <string>
|
2015-06-04 12:35:22 +02:00
|
|
|
#include <vector>
|
|
|
|
|
|
|
|
|
|
class RifGeoMechReaderInterface;
|
2018-01-10 10:43:33 +01:00
|
|
|
class RifElementPropertyReader;
|
2015-06-04 12:35:22 +02:00
|
|
|
class RigFemScalarResultFrames;
|
|
|
|
|
class RigFemPartResultsCollection;
|
|
|
|
|
class RigFemPartResults;
|
2015-06-04 16:10:02 +02:00
|
|
|
class RigStatisticsDataCache;
|
2015-06-15 12:15:00 +02:00
|
|
|
class RigFemPartCollection;
|
2016-09-06 10:27:30 +02:00
|
|
|
class RigFormationNames;
|
Split fem part results collection 5785 (#5871)
* #5785 Extract RigFemClosestResultIndexCalculator class to separate file.
* #5785 Move method implementation of RigFemClosestResutIndexCalculator to cpp file.
Also improve const correctness.
* #5785 Extract method for calculating normal SE, ie. SE:11/22/33.
* #5785 Extract method for calculating shear SE, ie. SE:12/13/23.
* #5785 Create a list of result calculators.
* #5785 Extract method for calculating timelapse, normalized, and gamma results.
* #5785 Extract method for calculating normal ST, ie. ST:11/22/33.
* #5785 Extract method for calculating shear ST, ie. ST:12/13/23.
* #5785 Extract method for calculating surface angles and aligned stress.
* #5785 Extract method for calculating principal strain and stress.
* #5785 Extract method for calculating FOS, SFI and DSM for SE.
* #5785 Extract method for calculating NE.EV, NE.ED, ST.Q and ST.STM.
* #5785 Extract method for calculating compaction.
* #5785 Extract method for calculating stress gradients.
* #5785 Extract method for calculating SE.SEM.
* #5785 Extract method for calculating NE.
* #5785 Extract method for calculating formation indices.
* #5785 Extract method for calculating nodal graidents, bar conversions, and EnIpPorBar.
* #5785 Use std::unique_ptr to calculators.
* Use std::vector<unique_ptr>
Co-authored-by: Magne Sjaastad <magne.sjaastad@ceetronsolutions.com>
2020-05-09 08:57:07 +02:00
|
|
|
class RigFemPartResultCalculator;
|
2018-01-10 10:43:33 +01:00
|
|
|
|
2016-10-31 08:44:40 +01:00
|
|
|
namespace caf
|
|
|
|
|
{
|
2019-09-06 10:40:57 +02:00
|
|
|
class ProgressInfo;
|
2016-10-31 08:44:40 +01:00
|
|
|
}
|
2015-06-04 12:35:22 +02:00
|
|
|
|
2019-09-06 10:40:57 +02:00
|
|
|
class RigFemPartResultsCollection : public cvf::Object
|
2015-06-04 12:35:22 +02:00
|
|
|
{
|
|
|
|
|
public:
|
2018-02-15 10:58:13 +01:00
|
|
|
static const std::string FIELD_NAME_COMPACTION;
|
|
|
|
|
|
2019-09-06 10:40:57 +02:00
|
|
|
RigFemPartResultsCollection( RifGeoMechReaderInterface* readerInterface,
|
|
|
|
|
RifElementPropertyReader* elementPropertyReader,
|
|
|
|
|
const RigFemPartCollection* femPartCollection );
|
2019-01-10 22:12:11 +01:00
|
|
|
~RigFemPartResultsCollection() override;
|
2015-06-04 12:35:22 +02:00
|
|
|
|
2020-01-03 11:59:17 +01:00
|
|
|
void setActiveFormationNames( RigFormationNames* activeFormationNames );
|
|
|
|
|
std::vector<QString> formationNames() const;
|
2019-09-06 10:40:57 +02:00
|
|
|
|
|
|
|
|
void addElementPropertyFiles( const std::vector<QString>& filenames );
|
|
|
|
|
std::vector<RigFemResultAddress> removeElementPropertyFiles( const std::vector<QString>& filenames );
|
2020-04-06 23:18:11 +02:00
|
|
|
std::map<std::string, QString> addressesInElementPropertyFiles( const std::vector<QString>& filenames );
|
2019-09-06 10:40:57 +02:00
|
|
|
|
|
|
|
|
void setCalculationParameters( double cohesion, double frictionAngleRad );
|
2020-02-12 11:13:38 +01:00
|
|
|
double parameterCohesion() const { return m_cohesion; }
|
|
|
|
|
double parameterFrictionAngleRad() const { return m_frictionAngleRad; }
|
2019-09-06 10:40:57 +02:00
|
|
|
|
Split fem part results collection 5785 (#5871)
* #5785 Extract RigFemClosestResultIndexCalculator class to separate file.
* #5785 Move method implementation of RigFemClosestResutIndexCalculator to cpp file.
Also improve const correctness.
* #5785 Extract method for calculating normal SE, ie. SE:11/22/33.
* #5785 Extract method for calculating shear SE, ie. SE:12/13/23.
* #5785 Create a list of result calculators.
* #5785 Extract method for calculating timelapse, normalized, and gamma results.
* #5785 Extract method for calculating normal ST, ie. ST:11/22/33.
* #5785 Extract method for calculating shear ST, ie. ST:12/13/23.
* #5785 Extract method for calculating surface angles and aligned stress.
* #5785 Extract method for calculating principal strain and stress.
* #5785 Extract method for calculating FOS, SFI and DSM for SE.
* #5785 Extract method for calculating NE.EV, NE.ED, ST.Q and ST.STM.
* #5785 Extract method for calculating compaction.
* #5785 Extract method for calculating stress gradients.
* #5785 Extract method for calculating SE.SEM.
* #5785 Extract method for calculating NE.
* #5785 Extract method for calculating formation indices.
* #5785 Extract method for calculating nodal graidents, bar conversions, and EnIpPorBar.
* #5785 Use std::unique_ptr to calculators.
* Use std::vector<unique_ptr>
Co-authored-by: Magne Sjaastad <magne.sjaastad@ceetronsolutions.com>
2020-05-09 08:57:07 +02:00
|
|
|
void setBiotCoefficientParameters( double fixedFactor, const QString& biotResultAddress );
|
|
|
|
|
double biotFixedFactor() const { return m_biotFixedFactor; }
|
|
|
|
|
QString biotResultAddress() const { return m_biotResultAddress; }
|
2020-03-30 14:40:32 +02:00
|
|
|
|
2020-06-22 23:20:03 +02:00
|
|
|
void setPermeabilityParameters( double fixedInitalPermeability,
|
|
|
|
|
const QString& initialPermeabilityAddress,
|
|
|
|
|
double permeabilityExponent );
|
|
|
|
|
double initialPermeabilityFixed() const;
|
|
|
|
|
QString initialPermeabilityAddress() const;
|
|
|
|
|
double permeabilityExponent() const;
|
|
|
|
|
|
2020-08-03 14:06:59 +02:00
|
|
|
void setCalculationParameters( RimMudWeightWindowParameters::ParameterType parameterType,
|
|
|
|
|
const QString& address,
|
|
|
|
|
double value );
|
|
|
|
|
double getCalculationParameterValue( RimMudWeightWindowParameters::ParameterType ) const;
|
|
|
|
|
QString getCalculationParameterAddress( RimMudWeightWindowParameters::ParameterType ) const;
|
|
|
|
|
|
2020-08-10 19:30:41 +02:00
|
|
|
void setMudWeightWindowParameters( double airGap,
|
|
|
|
|
RimMudWeightWindowParameters::UpperLimitType upperLimit,
|
|
|
|
|
RimMudWeightWindowParameters::LowerLimitType lowerLimit,
|
|
|
|
|
int referenceLayer,
|
|
|
|
|
RimMudWeightWindowParameters::FractureGradientCalculationType fgCalculationType,
|
|
|
|
|
double shMultiplier,
|
|
|
|
|
RimMudWeightWindowParameters::NonReservoirPorePressureType nonReservoirPorePressureType,
|
2020-08-11 11:14:58 +02:00
|
|
|
double hydroStaticMultiplierPPNonRes,
|
|
|
|
|
const QString& nonReservoirPorePressureAddress );
|
2020-08-10 19:30:41 +02:00
|
|
|
|
2020-08-10 14:21:46 +02:00
|
|
|
double airGapMudWeightWindow() const;
|
|
|
|
|
double shMultiplierMudWeightWindow() const;
|
|
|
|
|
|
2020-08-10 19:30:41 +02:00
|
|
|
double hydrostaticMultiplierPPNonRes() const;
|
|
|
|
|
RimMudWeightWindowParameters::NonReservoirPorePressureType nonReservoirPorePressureTypeMudWeightWindow() const;
|
2020-08-11 11:14:58 +02:00
|
|
|
const QString& nonReservoirPorePressureAddressMudWeightWindow() const;
|
2020-08-10 19:30:41 +02:00
|
|
|
|
2020-08-03 14:06:59 +02:00
|
|
|
RimMudWeightWindowParameters::UpperLimitType upperLimitParameterMudWeightWindow() const;
|
|
|
|
|
RimMudWeightWindowParameters::LowerLimitType lowerLimitParameterMudWeightWindow() const;
|
|
|
|
|
size_t referenceLayerMudWeightWindow() const;
|
|
|
|
|
|
2020-08-10 14:21:46 +02:00
|
|
|
RimMudWeightWindowParameters::FractureGradientCalculationType fractureGradientCalculationTypeMudWeightWindow() const;
|
|
|
|
|
|
2020-08-21 16:10:20 +02:00
|
|
|
double waterDensityShearSlipIndicator() const;
|
|
|
|
|
void setWaterDensityShearSlipIndicator( double waterDensity );
|
|
|
|
|
|
2019-09-06 10:40:57 +02:00
|
|
|
std::map<std::string, std::vector<std::string>> scalarFieldAndComponentNames( RigFemResultPosEnum resPos );
|
|
|
|
|
std::vector<std::string> filteredStepNames() const;
|
|
|
|
|
bool assertResultsLoaded( const RigFemResultAddress& resVarAddr );
|
2021-01-31 18:24:34 +01:00
|
|
|
|
|
|
|
|
void deleteResult( const RigFemResultAddress& resVarAddr );
|
|
|
|
|
void deleteResultForAllTimeSteps( const std::vector<RigFemResultAddress>& addresses );
|
2019-09-06 10:40:57 +02:00
|
|
|
void deleteResultFrame( const RigFemResultAddress& resVarAddr, int partIndex, int frameIndex );
|
2021-01-31 18:24:34 +01:00
|
|
|
|
2019-09-06 10:40:57 +02:00
|
|
|
std::vector<RigFemResultAddress> loadedResults() const;
|
|
|
|
|
|
|
|
|
|
const std::vector<float>& resultValues( const RigFemResultAddress& resVarAddr, int partIndex, int frameIndex );
|
|
|
|
|
std::vector<caf::Ten3f> tensors( const RigFemResultAddress& resVarAddr, int partIndex, int frameIndex );
|
|
|
|
|
|
Split fem part results collection 5785 (#5871)
* #5785 Extract RigFemClosestResultIndexCalculator class to separate file.
* #5785 Move method implementation of RigFemClosestResutIndexCalculator to cpp file.
Also improve const correctness.
* #5785 Extract method for calculating normal SE, ie. SE:11/22/33.
* #5785 Extract method for calculating shear SE, ie. SE:12/13/23.
* #5785 Create a list of result calculators.
* #5785 Extract method for calculating timelapse, normalized, and gamma results.
* #5785 Extract method for calculating normal ST, ie. ST:11/22/33.
* #5785 Extract method for calculating shear ST, ie. ST:12/13/23.
* #5785 Extract method for calculating surface angles and aligned stress.
* #5785 Extract method for calculating principal strain and stress.
* #5785 Extract method for calculating FOS, SFI and DSM for SE.
* #5785 Extract method for calculating NE.EV, NE.ED, ST.Q and ST.STM.
* #5785 Extract method for calculating compaction.
* #5785 Extract method for calculating stress gradients.
* #5785 Extract method for calculating SE.SEM.
* #5785 Extract method for calculating NE.
* #5785 Extract method for calculating formation indices.
* #5785 Extract method for calculating nodal graidents, bar conversions, and EnIpPorBar.
* #5785 Use std::unique_ptr to calculators.
* Use std::vector<unique_ptr>
Co-authored-by: Magne Sjaastad <magne.sjaastad@ceetronsolutions.com>
2020-05-09 08:57:07 +02:00
|
|
|
const RigFemPartCollection* parts() const;
|
|
|
|
|
int partCount() const;
|
|
|
|
|
int frameCount();
|
2019-09-06 10:40:57 +02:00
|
|
|
|
|
|
|
|
void minMaxScalarValues( const RigFemResultAddress& resVarAddr, int frameIndex, double* localMin, double* localMax );
|
|
|
|
|
void minMaxScalarValues( const RigFemResultAddress& resVarAddr, double* globalMin, double* globalMax );
|
|
|
|
|
void posNegClosestToZero( const RigFemResultAddress& resVarAddr,
|
|
|
|
|
int frameIndex,
|
|
|
|
|
double* localPosClosestToZero,
|
|
|
|
|
double* localNegClosestToZero );
|
|
|
|
|
void posNegClosestToZero( const RigFemResultAddress& resVarAddr,
|
|
|
|
|
double* globalPosClosestToZero,
|
|
|
|
|
double* globalNegClosestToZero );
|
|
|
|
|
void meanScalarValue( const RigFemResultAddress& resVarAddr, double* meanValue );
|
|
|
|
|
void meanScalarValue( const RigFemResultAddress& resVarAddr, int frameIndex, double* meanValue );
|
|
|
|
|
void p10p90ScalarValues( const RigFemResultAddress& resVarAddr, double* p10, double* p90 );
|
|
|
|
|
void p10p90ScalarValues( const RigFemResultAddress& resVarAddr, int frameIndex, double* p10, double* p90 );
|
|
|
|
|
void sumScalarValue( const RigFemResultAddress& resVarAddr, double* sum );
|
|
|
|
|
void sumScalarValue( const RigFemResultAddress& resVarAddr, int frameIndex, double* sum );
|
|
|
|
|
const std::vector<size_t>& scalarValuesHistogram( const RigFemResultAddress& resVarAddr );
|
|
|
|
|
const std::vector<size_t>& scalarValuesHistogram( const RigFemResultAddress& resVarAddr, int frameIndex );
|
|
|
|
|
|
|
|
|
|
void minMaxScalarValuesOverAllTensorComponents( const RigFemResultAddress& resVarAddr,
|
|
|
|
|
int frameIndex,
|
|
|
|
|
double* localMin,
|
|
|
|
|
double* localMax );
|
|
|
|
|
void minMaxScalarValuesOverAllTensorComponents( const RigFemResultAddress& resVarAddr,
|
|
|
|
|
double* globalMin,
|
|
|
|
|
double* globalMax );
|
|
|
|
|
void posNegClosestToZeroOverAllTensorComponents( const RigFemResultAddress& resVarAddr,
|
|
|
|
|
int frameIndex,
|
|
|
|
|
double* localPosClosestToZero,
|
|
|
|
|
double* localNegClosestToZero );
|
|
|
|
|
void posNegClosestToZeroOverAllTensorComponents( const RigFemResultAddress& resVarAddr,
|
|
|
|
|
double* globalPosClosestToZero,
|
|
|
|
|
double* globalNegClosestToZero );
|
|
|
|
|
|
2020-06-18 09:28:04 +02:00
|
|
|
static bool isResultInSet( const RigFemResultAddress& result, const std::set<RigFemResultAddress>& results );
|
|
|
|
|
|
2019-09-06 10:40:57 +02:00
|
|
|
static std::vector<RigFemResultAddress> tensorComponentAddresses( const RigFemResultAddress& resVarAddr );
|
|
|
|
|
static std::vector<RigFemResultAddress> tensorPrincipalComponentAdresses( const RigFemResultAddress& resVarAddr );
|
2020-02-11 10:11:15 +01:00
|
|
|
static std::set<RigFemResultAddress> normalizedResults();
|
|
|
|
|
static bool isNormalizableResult( const RigFemResultAddress& result );
|
|
|
|
|
|
Split fem part results collection 5785 (#5871)
* #5785 Extract RigFemClosestResultIndexCalculator class to separate file.
* #5785 Move method implementation of RigFemClosestResutIndexCalculator to cpp file.
Also improve const correctness.
* #5785 Extract method for calculating normal SE, ie. SE:11/22/33.
* #5785 Extract method for calculating shear SE, ie. SE:12/13/23.
* #5785 Create a list of result calculators.
* #5785 Extract method for calculating timelapse, normalized, and gamma results.
* #5785 Extract method for calculating normal ST, ie. ST:11/22/33.
* #5785 Extract method for calculating shear ST, ie. ST:12/13/23.
* #5785 Extract method for calculating surface angles and aligned stress.
* #5785 Extract method for calculating principal strain and stress.
* #5785 Extract method for calculating FOS, SFI and DSM for SE.
* #5785 Extract method for calculating NE.EV, NE.ED, ST.Q and ST.STM.
* #5785 Extract method for calculating compaction.
* #5785 Extract method for calculating stress gradients.
* #5785 Extract method for calculating SE.SEM.
* #5785 Extract method for calculating NE.
* #5785 Extract method for calculating formation indices.
* #5785 Extract method for calculating nodal graidents, bar conversions, and EnIpPorBar.
* #5785 Use std::unique_ptr to calculators.
* Use std::vector<unique_ptr>
Co-authored-by: Magne Sjaastad <magne.sjaastad@ceetronsolutions.com>
2020-05-09 08:57:07 +02:00
|
|
|
void setNormalizationAirGap( double normalizationAirGap );
|
|
|
|
|
double normalizationAirGap() const;
|
2018-06-18 14:17:13 +02:00
|
|
|
|
2020-06-18 09:28:04 +02:00
|
|
|
void setReferenceTimeStep( int referenceTimeStep );
|
|
|
|
|
int referenceTimeStep() const;
|
|
|
|
|
|
|
|
|
|
static std::set<RigFemResultAddress> referenceCaseDependentResults();
|
|
|
|
|
static bool isReferenceCaseDependentResult( const RigFemResultAddress& result );
|
|
|
|
|
|
2020-06-22 23:20:03 +02:00
|
|
|
static std::set<RigFemResultAddress> initialPermeabilityDependentResults();
|
2020-08-03 14:06:59 +02:00
|
|
|
static std::set<RigFemResultAddress> mudWeightWindowResults();
|
2020-06-22 23:20:03 +02:00
|
|
|
|
2019-09-06 10:40:57 +02:00
|
|
|
RigFemScalarResultFrames* findOrLoadScalarResult( int partIndex, const RigFemResultAddress& resVarAddr );
|
Split fem part results collection 5785 (#5871)
* #5785 Extract RigFemClosestResultIndexCalculator class to separate file.
* #5785 Move method implementation of RigFemClosestResutIndexCalculator to cpp file.
Also improve const correctness.
* #5785 Extract method for calculating normal SE, ie. SE:11/22/33.
* #5785 Extract method for calculating shear SE, ie. SE:12/13/23.
* #5785 Create a list of result calculators.
* #5785 Extract method for calculating timelapse, normalized, and gamma results.
* #5785 Extract method for calculating normal ST, ie. ST:11/22/33.
* #5785 Extract method for calculating shear ST, ie. ST:12/13/23.
* #5785 Extract method for calculating surface angles and aligned stress.
* #5785 Extract method for calculating principal strain and stress.
* #5785 Extract method for calculating FOS, SFI and DSM for SE.
* #5785 Extract method for calculating NE.EV, NE.ED, ST.Q and ST.STM.
* #5785 Extract method for calculating compaction.
* #5785 Extract method for calculating stress gradients.
* #5785 Extract method for calculating SE.SEM.
* #5785 Extract method for calculating NE.
* #5785 Extract method for calculating formation indices.
* #5785 Extract method for calculating nodal graidents, bar conversions, and EnIpPorBar.
* #5785 Use std::unique_ptr to calculators.
* Use std::vector<unique_ptr>
Co-authored-by: Magne Sjaastad <magne.sjaastad@ceetronsolutions.com>
2020-05-09 08:57:07 +02:00
|
|
|
RigFemScalarResultFrames* createScalarResult( int partIndex, const RigFemResultAddress& resVarAddr );
|
2020-07-08 15:45:50 +02:00
|
|
|
void deleteAllScalarResults();
|
2019-09-06 10:40:57 +02:00
|
|
|
|
Split fem part results collection 5785 (#5871)
* #5785 Extract RigFemClosestResultIndexCalculator class to separate file.
* #5785 Move method implementation of RigFemClosestResutIndexCalculator to cpp file.
Also improve const correctness.
* #5785 Extract method for calculating normal SE, ie. SE:11/22/33.
* #5785 Extract method for calculating shear SE, ie. SE:12/13/23.
* #5785 Create a list of result calculators.
* #5785 Extract method for calculating timelapse, normalized, and gamma results.
* #5785 Extract method for calculating normal ST, ie. ST:11/22/33.
* #5785 Extract method for calculating shear ST, ie. ST:12/13/23.
* #5785 Extract method for calculating surface angles and aligned stress.
* #5785 Extract method for calculating principal strain and stress.
* #5785 Extract method for calculating FOS, SFI and DSM for SE.
* #5785 Extract method for calculating NE.EV, NE.ED, ST.Q and ST.STM.
* #5785 Extract method for calculating compaction.
* #5785 Extract method for calculating stress gradients.
* #5785 Extract method for calculating SE.SEM.
* #5785 Extract method for calculating NE.
* #5785 Extract method for calculating formation indices.
* #5785 Extract method for calculating nodal graidents, bar conversions, and EnIpPorBar.
* #5785 Use std::unique_ptr to calculators.
* Use std::vector<unique_ptr>
Co-authored-by: Magne Sjaastad <magne.sjaastad@ceetronsolutions.com>
2020-05-09 08:57:07 +02:00
|
|
|
bool isValidBiotData( const std::vector<float>& biotData, size_t elementCount ) const;
|
|
|
|
|
static std::vector<std::string> getStressComponentNames( bool includeShear = true );
|
|
|
|
|
static std::vector<std::string> getStressGradientComponentNames( bool includeShear = true );
|
2020-05-12 11:51:55 +02:00
|
|
|
static std::vector<std::string> getStressAnisotropyComponentNames();
|
Split fem part results collection 5785 (#5871)
* #5785 Extract RigFemClosestResultIndexCalculator class to separate file.
* #5785 Move method implementation of RigFemClosestResutIndexCalculator to cpp file.
Also improve const correctness.
* #5785 Extract method for calculating normal SE, ie. SE:11/22/33.
* #5785 Extract method for calculating shear SE, ie. SE:12/13/23.
* #5785 Create a list of result calculators.
* #5785 Extract method for calculating timelapse, normalized, and gamma results.
* #5785 Extract method for calculating normal ST, ie. ST:11/22/33.
* #5785 Extract method for calculating shear ST, ie. ST:12/13/23.
* #5785 Extract method for calculating surface angles and aligned stress.
* #5785 Extract method for calculating principal strain and stress.
* #5785 Extract method for calculating FOS, SFI and DSM for SE.
* #5785 Extract method for calculating NE.EV, NE.ED, ST.Q and ST.STM.
* #5785 Extract method for calculating compaction.
* #5785 Extract method for calculating stress gradients.
* #5785 Extract method for calculating SE.SEM.
* #5785 Extract method for calculating NE.
* #5785 Extract method for calculating formation indices.
* #5785 Extract method for calculating nodal graidents, bar conversions, and EnIpPorBar.
* #5785 Use std::unique_ptr to calculators.
* Use std::vector<unique_ptr>
Co-authored-by: Magne Sjaastad <magne.sjaastad@ceetronsolutions.com>
2020-05-09 08:57:07 +02:00
|
|
|
const RigFormationNames* activeFormationNames() const;
|
2019-09-06 10:40:57 +02:00
|
|
|
|
Split fem part results collection 5785 (#5871)
* #5785 Extract RigFemClosestResultIndexCalculator class to separate file.
* #5785 Move method implementation of RigFemClosestResutIndexCalculator to cpp file.
Also improve const correctness.
* #5785 Extract method for calculating normal SE, ie. SE:11/22/33.
* #5785 Extract method for calculating shear SE, ie. SE:12/13/23.
* #5785 Create a list of result calculators.
* #5785 Extract method for calculating timelapse, normalized, and gamma results.
* #5785 Extract method for calculating normal ST, ie. ST:11/22/33.
* #5785 Extract method for calculating shear ST, ie. ST:12/13/23.
* #5785 Extract method for calculating surface angles and aligned stress.
* #5785 Extract method for calculating principal strain and stress.
* #5785 Extract method for calculating FOS, SFI and DSM for SE.
* #5785 Extract method for calculating NE.EV, NE.ED, ST.Q and ST.STM.
* #5785 Extract method for calculating compaction.
* #5785 Extract method for calculating stress gradients.
* #5785 Extract method for calculating SE.SEM.
* #5785 Extract method for calculating NE.
* #5785 Extract method for calculating formation indices.
* #5785 Extract method for calculating nodal graidents, bar conversions, and EnIpPorBar.
* #5785 Use std::unique_ptr to calculators.
* Use std::vector<unique_ptr>
Co-authored-by: Magne Sjaastad <magne.sjaastad@ceetronsolutions.com>
2020-05-09 08:57:07 +02:00
|
|
|
private:
|
|
|
|
|
RigFemScalarResultFrames* calculateDerivedResult( int partIndex, const RigFemResultAddress& resVarAddr );
|
2020-03-30 14:40:32 +02:00
|
|
|
|
2018-02-20 13:38:45 +01:00
|
|
|
private:
|
2019-09-06 10:40:57 +02:00
|
|
|
cvf::Collection<RigFemPartResults> m_femPartResults;
|
|
|
|
|
cvf::ref<RifGeoMechReaderInterface> m_readerInterface;
|
|
|
|
|
cvf::ref<RifElementPropertyReader> m_elementPropertyReader;
|
|
|
|
|
cvf::cref<RigFemPartCollection> m_femParts;
|
2020-01-03 11:59:17 +01:00
|
|
|
cvf::cref<RigFormationNames> m_activeFormationNamesData;
|
2019-09-06 10:40:57 +02:00
|
|
|
|
|
|
|
|
double m_cohesion;
|
|
|
|
|
double m_frictionAngleRad;
|
2020-02-11 10:11:15 +01:00
|
|
|
double m_normalizationAirGap;
|
2019-09-06 10:40:57 +02:00
|
|
|
|
2020-03-30 14:40:32 +02:00
|
|
|
double m_biotFixedFactor;
|
|
|
|
|
QString m_biotResultAddress;
|
|
|
|
|
|
2020-06-22 23:20:03 +02:00
|
|
|
double m_initialPermeabilityFixed;
|
|
|
|
|
QString m_initialPermeabilityResultAddress;
|
|
|
|
|
double m_permeabilityExponent;
|
|
|
|
|
|
2020-06-18 09:28:04 +02:00
|
|
|
int m_referenceTimeStep;
|
|
|
|
|
|
2020-08-10 14:21:46 +02:00
|
|
|
double m_airGapMudWeightWindow;
|
|
|
|
|
double m_shMultiplierMudWeightWindow;
|
|
|
|
|
int m_referenceLayerMudWeightWindow;
|
|
|
|
|
RimMudWeightWindowParameters::UpperLimitType m_upperLimitParameterMudWeightWindow;
|
|
|
|
|
RimMudWeightWindowParameters::LowerLimitType m_lowerLimitParameterMudWeightWindow;
|
|
|
|
|
RimMudWeightWindowParameters::FractureGradientCalculationType m_fractureGradientCalculationTypeMudWeightWindow;
|
2020-08-03 14:06:59 +02:00
|
|
|
|
2020-08-10 19:30:41 +02:00
|
|
|
RimMudWeightWindowParameters::NonReservoirPorePressureType m_nonReservoirPorePressureTypeMudWeightWindow;
|
|
|
|
|
double m_hydrostaticMultiplierPPNonResMudWeightWindow;
|
2020-08-11 11:14:58 +02:00
|
|
|
QString m_nonReservoirPorePressureAddressMudWeightWindow;
|
2020-08-10 19:30:41 +02:00
|
|
|
|
2020-08-03 14:06:59 +02:00
|
|
|
std::map<RimMudWeightWindowParameters::ParameterType, QString> parameterAddresses;
|
|
|
|
|
std::map<RimMudWeightWindowParameters::ParameterType, double> parameterValues;
|
|
|
|
|
|
2020-08-21 16:10:20 +02:00
|
|
|
double m_waterDensityShearSlipIndicator;
|
|
|
|
|
|
Split fem part results collection 5785 (#5871)
* #5785 Extract RigFemClosestResultIndexCalculator class to separate file.
* #5785 Move method implementation of RigFemClosestResutIndexCalculator to cpp file.
Also improve const correctness.
* #5785 Extract method for calculating normal SE, ie. SE:11/22/33.
* #5785 Extract method for calculating shear SE, ie. SE:12/13/23.
* #5785 Create a list of result calculators.
* #5785 Extract method for calculating timelapse, normalized, and gamma results.
* #5785 Extract method for calculating normal ST, ie. ST:11/22/33.
* #5785 Extract method for calculating shear ST, ie. ST:12/13/23.
* #5785 Extract method for calculating surface angles and aligned stress.
* #5785 Extract method for calculating principal strain and stress.
* #5785 Extract method for calculating FOS, SFI and DSM for SE.
* #5785 Extract method for calculating NE.EV, NE.ED, ST.Q and ST.STM.
* #5785 Extract method for calculating compaction.
* #5785 Extract method for calculating stress gradients.
* #5785 Extract method for calculating SE.SEM.
* #5785 Extract method for calculating NE.
* #5785 Extract method for calculating formation indices.
* #5785 Extract method for calculating nodal graidents, bar conversions, and EnIpPorBar.
* #5785 Use std::unique_ptr to calculators.
* Use std::vector<unique_ptr>
Co-authored-by: Magne Sjaastad <magne.sjaastad@ceetronsolutions.com>
2020-05-09 08:57:07 +02:00
|
|
|
std::vector<std::unique_ptr<RigFemPartResultCalculator>> m_resultCalculators;
|
|
|
|
|
|
2019-09-06 10:40:57 +02:00
|
|
|
RigStatisticsDataCache* statistics( const RigFemResultAddress& resVarAddr );
|
|
|
|
|
std::vector<RigFemResultAddress> getResAddrToComponentsToRead( const RigFemResultAddress& resVarAddr );
|
|
|
|
|
std::map<RigFemResultAddress, cvf::ref<RigStatisticsDataCache>> m_resultStatistics;
|
2016-10-25 13:42:40 +02:00
|
|
|
};
|