Loading src/TNL/Matrices/MatrixSetter.h +19 −23 Original line number Diff line number Diff line Loading @@ -21,24 +21,20 @@ class MatrixSetterTraversalUserData public: typedef typename CompressedRowsLengthsVector::DeviceType DeviceType; typedef SharedPointer< DifferentialOperator, DeviceType > DifferentialOperatorPointer; typedef SharedPointer< BoundaryConditions, DeviceType > BoundaryConditionsPointer; typedef SharedPointer< CompressedRowsLengthsVector, DeviceType > CompressedRowsLengthsVectorPointer; const DifferentialOperator* differentialOperator; const DifferentialOperatorPointer differentialOperatorPointer; const BoundaryConditions* boundaryConditions; const BoundaryConditionsPointer boundaryConditionsPointer; CompressedRowsLengthsVector* rowLengths; CompressedRowsLengthsVectorPointer rowLengthsPointer; MatrixSetterTraversalUserData( const DifferentialOperatorPointer& differentialOperatorPointer, const BoundaryConditionsPointer& boundaryConditionsPointer, CompressedRowsLengthsVectorPointer& rowLengthsPointer ) : differentialOperatorPointer( differentialOperatorPointer ), boundaryConditionsPointer( boundaryConditionsPointer ), rowLengthsPointer( rowLengthsPointer ) {}; MatrixSetterTraversalUserData( const DifferentialOperator* differentialOperator, const BoundaryConditions* boundaryConditions, CompressedRowsLengthsVector* rowLengths ) : differentialOperator( differentialOperator ), boundaryConditions( boundaryConditions ), rowLengths( rowLengths ) {} }; Loading @@ -62,8 +58,8 @@ class MatrixSetter template< typename EntityType > void getCompressedRowsLengths( const MeshPointer& meshPointer, DifferentialOperatorPointer& differentialOperatorPointer, BoundaryConditionsPointer& boundaryConditionsPointer, const DifferentialOperatorPointer& differentialOperatorPointer, const BoundaryConditionsPointer& boundaryConditionsPointer, CompressedRowsLengthsVectorPointer& rowLengthsPointer ) const; class TraversalBoundaryEntitiesProcessor Loading @@ -76,8 +72,8 @@ class MatrixSetter TraversalUserData& userData, const EntityType& entity ) { userData.rowLengthsPointer.template modifyData< DeviceType >()[ entity.getIndex() ] = userData.boundaryConditionsPointer.template getData< DeviceType >().getLinearSystemRowLength( mesh, entity.getIndex(), entity ); ( *userData.rowLengths )[ entity.getIndex() ] = userData.boundaryConditions->getLinearSystemRowLength( mesh, entity.getIndex(), entity ); } }; Loading @@ -92,8 +88,8 @@ class MatrixSetter TraversalUserData& userData, const EntityType& entity ) { userData.rowLengthsPointer.template modifyData< DeviceType >()[ entity.getIndex() ] = userData.differentialOperatorPointer.template getData< DeviceType >().getLinearSystemRowLength( mesh, entity.getIndex(), entity ); ( *userData.rowLengths )[ entity.getIndex() ] = userData.differentialOperator->getLinearSystemRowLength( mesh, entity.getIndex(), entity ); } }; Loading src/TNL/Matrices/MatrixSetter_impl.h +5 −3 Original line number Diff line number Diff line Loading @@ -23,12 +23,14 @@ template< typename Mesh, void MatrixSetter< Mesh, DifferentialOperator, BoundaryConditions, CompressedRowsLengthsVector >:: getCompressedRowsLengths( const MeshPointer& meshPointer, DifferentialOperatorPointer& differentialOperatorPointer, BoundaryConditionsPointer& boundaryConditionsPointer, const DifferentialOperatorPointer& differentialOperatorPointer, const BoundaryConditionsPointer& boundaryConditionsPointer, CompressedRowsLengthsVectorPointer& rowLengthsPointer ) const { { TraversalUserData userData( differentialOperatorPointer, boundaryConditionsPointer, rowLengthsPointer ); TraversalUserData userData( &differentialOperatorPointer.template getData< DeviceType >(), &boundaryConditionsPointer.template getData< DeviceType >(), &rowLengthsPointer.template modifyData< DeviceType >() ); Meshes::Traverser< MeshType, EntityType > meshTraversal; meshTraversal.template processBoundaryEntities< TraversalUserData, TraversalBoundaryEntitiesProcessor > Loading Loading
src/TNL/Matrices/MatrixSetter.h +19 −23 Original line number Diff line number Diff line Loading @@ -21,24 +21,20 @@ class MatrixSetterTraversalUserData public: typedef typename CompressedRowsLengthsVector::DeviceType DeviceType; typedef SharedPointer< DifferentialOperator, DeviceType > DifferentialOperatorPointer; typedef SharedPointer< BoundaryConditions, DeviceType > BoundaryConditionsPointer; typedef SharedPointer< CompressedRowsLengthsVector, DeviceType > CompressedRowsLengthsVectorPointer; const DifferentialOperator* differentialOperator; const DifferentialOperatorPointer differentialOperatorPointer; const BoundaryConditions* boundaryConditions; const BoundaryConditionsPointer boundaryConditionsPointer; CompressedRowsLengthsVector* rowLengths; CompressedRowsLengthsVectorPointer rowLengthsPointer; MatrixSetterTraversalUserData( const DifferentialOperatorPointer& differentialOperatorPointer, const BoundaryConditionsPointer& boundaryConditionsPointer, CompressedRowsLengthsVectorPointer& rowLengthsPointer ) : differentialOperatorPointer( differentialOperatorPointer ), boundaryConditionsPointer( boundaryConditionsPointer ), rowLengthsPointer( rowLengthsPointer ) {}; MatrixSetterTraversalUserData( const DifferentialOperator* differentialOperator, const BoundaryConditions* boundaryConditions, CompressedRowsLengthsVector* rowLengths ) : differentialOperator( differentialOperator ), boundaryConditions( boundaryConditions ), rowLengths( rowLengths ) {} }; Loading @@ -62,8 +58,8 @@ class MatrixSetter template< typename EntityType > void getCompressedRowsLengths( const MeshPointer& meshPointer, DifferentialOperatorPointer& differentialOperatorPointer, BoundaryConditionsPointer& boundaryConditionsPointer, const DifferentialOperatorPointer& differentialOperatorPointer, const BoundaryConditionsPointer& boundaryConditionsPointer, CompressedRowsLengthsVectorPointer& rowLengthsPointer ) const; class TraversalBoundaryEntitiesProcessor Loading @@ -76,8 +72,8 @@ class MatrixSetter TraversalUserData& userData, const EntityType& entity ) { userData.rowLengthsPointer.template modifyData< DeviceType >()[ entity.getIndex() ] = userData.boundaryConditionsPointer.template getData< DeviceType >().getLinearSystemRowLength( mesh, entity.getIndex(), entity ); ( *userData.rowLengths )[ entity.getIndex() ] = userData.boundaryConditions->getLinearSystemRowLength( mesh, entity.getIndex(), entity ); } }; Loading @@ -92,8 +88,8 @@ class MatrixSetter TraversalUserData& userData, const EntityType& entity ) { userData.rowLengthsPointer.template modifyData< DeviceType >()[ entity.getIndex() ] = userData.differentialOperatorPointer.template getData< DeviceType >().getLinearSystemRowLength( mesh, entity.getIndex(), entity ); ( *userData.rowLengths )[ entity.getIndex() ] = userData.differentialOperator->getLinearSystemRowLength( mesh, entity.getIndex(), entity ); } }; Loading
src/TNL/Matrices/MatrixSetter_impl.h +5 −3 Original line number Diff line number Diff line Loading @@ -23,12 +23,14 @@ template< typename Mesh, void MatrixSetter< Mesh, DifferentialOperator, BoundaryConditions, CompressedRowsLengthsVector >:: getCompressedRowsLengths( const MeshPointer& meshPointer, DifferentialOperatorPointer& differentialOperatorPointer, BoundaryConditionsPointer& boundaryConditionsPointer, const DifferentialOperatorPointer& differentialOperatorPointer, const BoundaryConditionsPointer& boundaryConditionsPointer, CompressedRowsLengthsVectorPointer& rowLengthsPointer ) const { { TraversalUserData userData( differentialOperatorPointer, boundaryConditionsPointer, rowLengthsPointer ); TraversalUserData userData( &differentialOperatorPointer.template getData< DeviceType >(), &boundaryConditionsPointer.template getData< DeviceType >(), &rowLengthsPointer.template modifyData< DeviceType >() ); Meshes::Traverser< MeshType, EntityType > meshTraversal; meshTraversal.template processBoundaryEntities< TraversalUserData, TraversalBoundaryEntitiesProcessor > Loading