Support filtering on element sets (#10570)

* Add support for filtering on element sets in geomech cases
This commit is contained in:
jonjenssen
2023-09-04 15:48:08 +02:00
committed by GitHub
parent f4255ba16e
commit e5fa4ae8c4
23 changed files with 597 additions and 72 deletions

View File

@@ -146,7 +146,7 @@ bool RigFemPart::fillElementCoordinates( size_t elementIdx, std::array<cvf::Vec3
// Fill coordinates for each node
const auto& partNodes = nodes();
for ( int i = 0; i < nodeIndices.size(); ++i )
for ( int i = 0; i < (int)nodeIndices.size(); ++i )
{
coordinates[i].set( partNodes.coordinates[nodeIndices[i]] );
}
@@ -638,3 +638,45 @@ bool RigFemPart::enabled() const
{
return m_enabled;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RigFemPart::addElementSet( std::string name, const std::vector<size_t>& elementIds )
{
m_elementSetNames.push_back( name );
std::map<size_t, size_t> idToIndex;
for ( size_t i = 0; i < m_elementId.size(); i++ )
{
idToIndex[m_elementId[i]] = i;
}
std::vector<size_t> elementIndexes;
elementIndexes.resize( elementIds.size() );
for ( size_t i = 0; i < elementIds.size(); i++ )
{
elementIndexes[i] = idToIndex[elementIds[i] + 1];
}
m_elementIndexSets.push_back( elementIndexes );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<std::string> RigFemPart::elementSetNames() const
{
return m_elementSetNames;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<size_t> RigFemPart::elementSet( int setIndex ) const
{
if ( ( setIndex < 0 ) || ( setIndex >= (int)m_elementIndexSets.size() ) ) return {};
return m_elementIndexSets[setIndex];
}

View File

@@ -102,6 +102,10 @@ public:
void setEnabled( bool enable );
bool enabled() const;
void addElementSet( std::string name, const std::vector<size_t>& elementIds );
std::vector<std::string> elementSetNames() const;
std::vector<size_t> elementSet( int setIndex ) const;
private:
int m_elementPartId;
std::string m_name;
@@ -112,6 +116,9 @@ private:
std::vector<size_t> m_elementConnectivityStartIndices;
std::vector<int> m_allElementConnectivities;
std::vector<std::string> m_elementSetNames;
std::vector<std::vector<size_t>> m_elementIndexSets;
RigFemPartNodes m_nodes;
mutable cvf::ref<RigFemPartGrid> m_structGrid;