mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Add support for calculating LE123 and PE123
This commit is contained in:
parent
b760404876
commit
8c7ff445b6
@ -31,9 +31,17 @@
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RigFemPartResultCalculatorPrincipalStrain::RigFemPartResultCalculatorPrincipalStrain( RigFemPartResultsCollection& collection )
|
||||
RigFemPartResultCalculatorPrincipalStrain::RigFemPartResultCalculatorPrincipalStrain( RigFemPartResultsCollection& collection,
|
||||
const std::string fieldName,
|
||||
const std::string componentPrefix )
|
||||
: RigFemPartResultCalculator( collection )
|
||||
, m_fieldName( fieldName )
|
||||
, m_componentPrefix( componentPrefix )
|
||||
, m_componentNames( 3 )
|
||||
{
|
||||
m_componentNames[0] = componentPrefix + "1";
|
||||
m_componentNames[1] = componentPrefix + "2";
|
||||
m_componentNames[2] = componentPrefix + "3";
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -48,8 +56,12 @@ RigFemPartResultCalculatorPrincipalStrain::~RigFemPartResultCalculatorPrincipalS
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RigFemPartResultCalculatorPrincipalStrain::isMatching( const RigFemResultAddress& resVarAddr ) const
|
||||
{
|
||||
return ( ( resVarAddr.fieldName == "NE" ) && ( resVarAddr.componentName == "E1" || resVarAddr.componentName == "E2" ||
|
||||
resVarAddr.componentName == "E3" ) );
|
||||
if ( resVarAddr.fieldName != m_fieldName ) return false;
|
||||
|
||||
for ( const auto& component : m_componentNames )
|
||||
if ( resVarAddr.componentName == component ) return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -58,30 +70,32 @@ bool RigFemPartResultCalculatorPrincipalStrain::isMatching( const RigFemResultAd
|
||||
RigFemScalarResultFrames* RigFemPartResultCalculatorPrincipalStrain::calculate( int partIndex,
|
||||
const RigFemResultAddress& resAddr )
|
||||
{
|
||||
CVF_ASSERT( resAddr.componentName == "E1" || resAddr.componentName == "E2" || resAddr.componentName == "E3" );
|
||||
CVF_ASSERT( resAddr.componentName == m_componentNames[0] || resAddr.componentName == m_componentNames[1] ||
|
||||
resAddr.componentName == m_componentNames[2] );
|
||||
|
||||
QString progressText = "Calculating " + QString::fromStdString( resAddr.fieldName + ": " + resAddr.componentName );
|
||||
|
||||
caf::ProgressInfo frameCountProgress( static_cast<size_t>( m_resultCollection->frameCount() ) * 7, progressText );
|
||||
|
||||
auto loadFrameLambda = [&]( const QString& component ) {
|
||||
auto task = frameCountProgress.task( "Loading " + component, m_resultCollection->frameCount() );
|
||||
return m_resultCollection->findOrLoadScalarResult( partIndex, resAddr.copyWithComponent( component.toStdString() ) );
|
||||
auto loadFrameLambda = [&]( const std::string& component ) {
|
||||
auto task = frameCountProgress.task( QString::fromStdString( "Loading " + component ),
|
||||
m_resultCollection->frameCount() );
|
||||
return m_resultCollection->findOrLoadScalarResult( partIndex, resAddr.copyWithComponent( component ) );
|
||||
};
|
||||
|
||||
RigFemScalarResultFrames* e11Frames = loadFrameLambda( "E11" );
|
||||
RigFemScalarResultFrames* e22Frames = loadFrameLambda( "E22" );
|
||||
RigFemScalarResultFrames* e33Frames = loadFrameLambda( "E33" );
|
||||
RigFemScalarResultFrames* e12Frames = loadFrameLambda( "E12" );
|
||||
RigFemScalarResultFrames* e13Frames = loadFrameLambda( "E13" );
|
||||
RigFemScalarResultFrames* e23Frames = loadFrameLambda( "E23" );
|
||||
RigFemScalarResultFrames* e11Frames = loadFrameLambda( m_componentPrefix + "11" );
|
||||
RigFemScalarResultFrames* e22Frames = loadFrameLambda( m_componentPrefix + "22" );
|
||||
RigFemScalarResultFrames* e33Frames = loadFrameLambda( m_componentPrefix + "33" );
|
||||
RigFemScalarResultFrames* e12Frames = loadFrameLambda( m_componentPrefix + "12" );
|
||||
RigFemScalarResultFrames* e13Frames = loadFrameLambda( m_componentPrefix + "13" );
|
||||
RigFemScalarResultFrames* e23Frames = loadFrameLambda( m_componentPrefix + "23" );
|
||||
|
||||
RigFemScalarResultFrames* e1Frames =
|
||||
m_resultCollection->createScalarResult( partIndex, resAddr.copyWithComponent( "E1" ) );
|
||||
m_resultCollection->createScalarResult( partIndex, resAddr.copyWithComponent( m_componentNames[0] ) );
|
||||
RigFemScalarResultFrames* e2Frames =
|
||||
m_resultCollection->createScalarResult( partIndex, resAddr.copyWithComponent( "E2" ) );
|
||||
m_resultCollection->createScalarResult( partIndex, resAddr.copyWithComponent( m_componentNames[1] ) );
|
||||
RigFemScalarResultFrames* e3Frames =
|
||||
m_resultCollection->createScalarResult( partIndex, resAddr.copyWithComponent( "E3" ) );
|
||||
m_resultCollection->createScalarResult( partIndex, resAddr.copyWithComponent( m_componentNames[2] ) );
|
||||
|
||||
int frameCount = e11Frames->frameCount();
|
||||
for ( int fIdx = 0; fIdx < frameCount; ++fIdx )
|
||||
|
@ -20,6 +20,9 @@
|
||||
|
||||
#include "RigFemPartResultCalculator.h"
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
class RigFemPartResultsCollection;
|
||||
class RigFemScalarResultFrames;
|
||||
class RigFemResultAddress;
|
||||
@ -30,8 +33,15 @@ class RigFemResultAddress;
|
||||
class RigFemPartResultCalculatorPrincipalStrain : public RigFemPartResultCalculator
|
||||
{
|
||||
public:
|
||||
explicit RigFemPartResultCalculatorPrincipalStrain( RigFemPartResultsCollection& collection );
|
||||
explicit RigFemPartResultCalculatorPrincipalStrain( RigFemPartResultsCollection& collection,
|
||||
const std::string fieldName,
|
||||
const std::string componentPrefix );
|
||||
~RigFemPartResultCalculatorPrincipalStrain() override;
|
||||
bool isMatching( const RigFemResultAddress& resVarAddr ) const override;
|
||||
RigFemScalarResultFrames* calculate( int partIndex, const RigFemResultAddress& resVarAddr ) override;
|
||||
|
||||
private:
|
||||
const std::string m_fieldName;
|
||||
const std::string m_componentPrefix;
|
||||
std::vector<std::string> m_componentNames;
|
||||
};
|
||||
|
@ -178,8 +178,12 @@ RigFemPartResultsCollection::RigFemPartResultsCollection( RifGeoMechReaderInterf
|
||||
std::unique_ptr<RigFemPartResultCalculator>( new RigFemPartResultCalculatorNE( *this ) ) );
|
||||
m_resultCalculators.push_back(
|
||||
std::unique_ptr<RigFemPartResultCalculator>( new RigFemPartResultCalculatorGamma( *this ) ) );
|
||||
m_resultCalculators.push_back(
|
||||
std::unique_ptr<RigFemPartResultCalculator>( new RigFemPartResultCalculatorPrincipalStrain( *this ) ) );
|
||||
m_resultCalculators.push_back( std::unique_ptr<RigFemPartResultCalculator>(
|
||||
new RigFemPartResultCalculatorPrincipalStrain( *this, "NE", "E" ) ) );
|
||||
m_resultCalculators.push_back( std::unique_ptr<RigFemPartResultCalculator>(
|
||||
new RigFemPartResultCalculatorPrincipalStrain( *this, "LE", "LE" ) ) );
|
||||
m_resultCalculators.push_back( std::unique_ptr<RigFemPartResultCalculator>(
|
||||
new RigFemPartResultCalculatorPrincipalStrain( *this, "PE", "PE" ) ) );
|
||||
m_resultCalculators.push_back(
|
||||
std::unique_ptr<RigFemPartResultCalculator>( new RigFemPartResultCalculatorPrincipalStress( *this ) ) );
|
||||
m_resultCalculators.push_back(
|
||||
@ -677,6 +681,20 @@ std::map<std::string, std::vector<std::string>>
|
||||
fieldCompNames["MUD-WEIGHT"].push_back( "MWM" );
|
||||
fieldCompNames["MUD-WEIGHT"].push_back( "UMWL" );
|
||||
fieldCompNames["MUD-WEIGHT"].push_back( "LMWL" );
|
||||
|
||||
if ( fieldCompNames.count( "LE" ) > 0 )
|
||||
{
|
||||
fieldCompNames["LE"].push_back( "LE1" );
|
||||
fieldCompNames["LE"].push_back( "LE2" );
|
||||
fieldCompNames["LE"].push_back( "LE3" );
|
||||
}
|
||||
|
||||
if ( fieldCompNames.count( "PE" ) > 0 )
|
||||
{
|
||||
fieldCompNames["PE"].push_back( "PE1" );
|
||||
fieldCompNames["PE"].push_back( "PE2" );
|
||||
fieldCompNames["PE"].push_back( "PE3" );
|
||||
}
|
||||
}
|
||||
else if ( resPos == RIG_INTEGRATION_POINT )
|
||||
{
|
||||
@ -767,6 +785,20 @@ std::map<std::string, std::vector<std::string>>
|
||||
fieldCompNames["MUD-WEIGHT"].push_back( "MWM" );
|
||||
fieldCompNames["MUD-WEIGHT"].push_back( "UMWL" );
|
||||
fieldCompNames["MUD-WEIGHT"].push_back( "LMWL" );
|
||||
|
||||
if ( fieldCompNames.count( "LE" ) > 0 )
|
||||
{
|
||||
fieldCompNames["LE"].push_back( "LE1" );
|
||||
fieldCompNames["LE"].push_back( "LE2" );
|
||||
fieldCompNames["LE"].push_back( "LE3" );
|
||||
}
|
||||
|
||||
if ( fieldCompNames.count( "PE" ) > 0 )
|
||||
{
|
||||
fieldCompNames["PE"].push_back( "PE1" );
|
||||
fieldCompNames["PE"].push_back( "PE2" );
|
||||
fieldCompNames["PE"].push_back( "PE3" );
|
||||
}
|
||||
}
|
||||
else if ( resPos == RIG_ELEMENT_NODAL_FACE )
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user