From 491dedaf745c153c273889592ae4783a26cf4f44 Mon Sep 17 00:00:00 2001 From: Kristian Bendiksen Date: Thu, 20 Aug 2020 10:32:38 +0200 Subject: [PATCH] Janitor: Move RigFemPart implementation out of header file. --- .../GeoMech/GeoMechDataModel/RigFemPart.cpp | 112 ++++++++++++++++++ .../GeoMech/GeoMechDataModel/RigFemPart.h | 44 +++---- 2 files changed, 127 insertions(+), 29 deletions(-) diff --git a/ApplicationCode/GeoMech/GeoMechDataModel/RigFemPart.cpp b/ApplicationCode/GeoMech/GeoMechDataModel/RigFemPart.cpp index 80cc02b929..0eba83ab5c 100644 --- a/ApplicationCode/GeoMech/GeoMechDataModel/RigFemPart.cpp +++ b/ApplicationCode/GeoMech/GeoMechDataModel/RigFemPart.cpp @@ -39,6 +39,22 @@ RigFemPart::~RigFemPart() { } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +int RigFemPart::elementPartId() const +{ + return m_elementPartId; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RigFemPart::setElementPartId( int partId ) +{ + m_elementPartId = partId; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -67,6 +83,94 @@ void RigFemPart::appendElement( RigElementType elmType, int id, const int* conne } } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +int RigFemPart::elementCount() const +{ + return static_cast( m_elementId.size() ); +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +int RigFemPart::elmId( size_t elementIdx ) const +{ + return m_elementId[elementIdx]; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RigElementType RigFemPart::elementType( size_t elementIdx ) const +{ + return m_elementTypes[elementIdx]; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +const int* RigFemPart::connectivities( size_t elementIdx ) const +{ + return &m_allElementConnectivities[m_elementConnectivityStartIndices[elementIdx]]; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +size_t RigFemPart::elementNodeResultIdx( int elementIdx, int elmLocalNodeIdx ) const +{ + return m_elementConnectivityStartIndices[elementIdx] + elmLocalNodeIdx; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +int RigFemPart::nodeIdxFromElementNodeResultIdx( size_t elmNodeResultIdx ) const +{ + return m_allElementConnectivities[elmNodeResultIdx]; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +int RigFemPart::elementNeighbor( int elementIndex, int faceIndex ) const +{ + return m_elmNeighbors[elementIndex].indicesToNeighborElms[faceIndex]; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +int RigFemPart::neighborFace( int elementIndex, int faceIndex ) const +{ + return m_elmNeighbors[elementIndex].faceInNeighborElm[faceIndex]; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +const std::vector& RigFemPart::elementIdxToId() const +{ + return m_elementId; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RigFemPartNodes& RigFemPart::nodes() +{ + return m_nodes; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +const RigFemPartNodes& RigFemPart::nodes() const +{ + return m_nodes; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -332,6 +436,14 @@ float RigFemPart::characteristicElementSize() const return m_characteristicElementSize; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +const std::vector& RigFemPart::possibleGridCornerElements() const +{ + return m_possibleGridCornerElements; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/GeoMech/GeoMechDataModel/RigFemPart.h b/ApplicationCode/GeoMech/GeoMechDataModel/RigFemPart.h index 9c65befbd1..fe8b336354 100644 --- a/ApplicationCode/GeoMech/GeoMechDataModel/RigFemPart.h +++ b/ApplicationCode/GeoMech/GeoMechDataModel/RigFemPart.h @@ -49,52 +49,38 @@ public: RigFemPart(); ~RigFemPart() override; - int elementPartId() const { return m_elementPartId; } - void setElementPartId( int partId ) { m_elementPartId = partId; } + int elementPartId() const; + void setElementPartId( int partId ); void preAllocateElementStorage( int elementCount ); void appendElement( RigElementType elmType, int elementId, const int* connectivities ); - int elementCount() const { return static_cast( m_elementId.size() ); } + int elementCount() const; - int elmId( size_t elementIdx ) const { return m_elementId[elementIdx]; } - RigElementType elementType( size_t elementIdx ) const { return m_elementTypes[elementIdx]; } + int elmId( size_t elementIdx ) const; + RigElementType elementType( size_t elementIdx ) const; bool isHexahedron( size_t elementIdx ) const; - const int* connectivities( size_t elementIdx ) const - { - return &m_allElementConnectivities[m_elementConnectivityStartIndices[elementIdx]]; - } + const int* connectivities( size_t elementIdx ) const; - size_t elementNodeResultIdx( int elementIdx, int elmLocalNodeIdx ) const - { - return m_elementConnectivityStartIndices[elementIdx] + elmLocalNodeIdx; - } + size_t elementNodeResultIdx( int elementIdx, int elmLocalNodeIdx ) const; size_t elementNodeResultCount() const; - int nodeIdxFromElementNodeResultIdx( size_t elmNodeResultIdx ) const - { - return m_allElementConnectivities[elmNodeResultIdx]; - } + int nodeIdxFromElementNodeResultIdx( size_t elmNodeResultIdx ) const; + size_t resultValueIdxFromResultPosType( RigFemResultPosEnum resultPosType, int elementIdx, int elmLocalNodeIdx ) const; - RigFemPartNodes& nodes() { return m_nodes; } - const RigFemPartNodes& nodes() const { return m_nodes; } + RigFemPartNodes& nodes(); + const RigFemPartNodes& nodes() const; void assertNodeToElmIndicesIsCalculated(); const std::vector& elementsUsingNode( int nodeIndex ) const; const std::vector& elementLocalIndicesForNode( int nodeIndex ) const; void assertElmNeighborsIsCalculated(); - int elementNeighbor( int elementIndex, int faceIndex ) const - { - return m_elmNeighbors[elementIndex].indicesToNeighborElms[faceIndex]; - } - int neighborFace( int elementIndex, int faceIndex ) const - { - return m_elmNeighbors[elementIndex].faceInNeighborElm[faceIndex]; - } + int elementNeighbor( int elementIndex, int faceIndex ) const; + int neighborFace( int elementIndex, int faceIndex ) const; cvf::BoundingBox boundingBox() const; float characteristicElementSize() const; - const std::vector& possibleGridCornerElements() const { return m_possibleGridCornerElements; } + const std::vector& possibleGridCornerElements() const; void findIntersectingCells( const cvf::BoundingBox& inputBB, std::vector* elementIndices ) const; void findIntersectingCellsWithExistingSearchTree( const cvf::BoundingBox& inputBB, std::vector* elementIndices ) const; @@ -104,7 +90,7 @@ public: cvf::Vec3f faceNormal( int elementIndex, int faceIndex ) const; const RigFemPartGrid* getOrCreateStructGrid() const; - const std::vector& elementIdxToId() const { return m_elementId; } + const std::vector& elementIdxToId() const; private: int m_elementPartId;