From 4cc7647e7f042013b32123adf3d8ca5454b80e0f Mon Sep 17 00:00:00 2001 From: Thomas Fischer <thomas.fischer@ufz.de> Date: Thu, 12 Oct 2017 08:46:00 +0200 Subject: [PATCH] [PL/RichardsComponentTransport] Vars for matrix access. Use variables for indices and size for accessing local matrices. --- .../RichardsComponentTransportFEM.h | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/ProcessLib/RichardsComponentTransport/RichardsComponentTransportFEM.h b/ProcessLib/RichardsComponentTransport/RichardsComponentTransportFEM.h index 74d7526b3e3..2a491d078b6 100644 --- a/ProcessLib/RichardsComponentTransport/RichardsComponentTransportFEM.h +++ b/ProcessLib/RichardsComponentTransport/RichardsComponentTransportFEM.h @@ -157,9 +157,8 @@ public: SpatialPosition pos; pos.setElementID(_element_id); - auto const num_nodes = ShapeFunction::NPOINTS; - auto p_nodal_values = - Eigen::Map<const NodalVectorType>(&local_x[num_nodes], num_nodes); + auto p_nodal_values = Eigen::Map<const NodalVectorType>( + &local_x[pressure_index], pressure_size); auto const& b = _process_data.specific_body_force; @@ -168,13 +167,17 @@ public: GlobalDimMatrixType const& I( GlobalDimMatrixType::Identity(GlobalDim, GlobalDim)); - auto KCC = local_K.template block<num_nodes, num_nodes>(0, 0); - auto MCC = local_M.template block<num_nodes, num_nodes>(0, 0); - auto Kpp = - local_K.template block<num_nodes, num_nodes>(num_nodes, num_nodes); - auto Mpp = - local_M.template block<num_nodes, num_nodes>(num_nodes, num_nodes); - auto Bp = local_b.template block<num_nodes, 1>(num_nodes, 0); + auto KCC = + local_K.template block<concentration_size, concentration_size>( + concentration_index, concentration_index); + auto MCC = + local_M.template block<concentration_size, concentration_size>( + concentration_index, concentration_index); + auto Kpp = local_K.template block<pressure_size, pressure_size>( + pressure_index, pressure_index); + auto Mpp = local_M.template block<pressure_size, pressure_size>( + pressure_index, pressure_index); + auto Bp = local_b.template block<pressure_size, 1>(pressure_index, 0); for (std::size_t ip(0); ip < n_integration_points; ++ip) { @@ -437,6 +440,11 @@ private: Eigen::aligned_allocator<IntegrationPointData< NodalRowVectorType, GlobalDimNodalMatrixType, NodalMatrixType>>> _ip_data; + + static const int concentration_index = 0; + static const int concentration_size = ShapeFunction::NPOINTS; + static const int pressure_index = ShapeFunction::NPOINTS; + static const int pressure_size = ShapeFunction::NPOINTS; }; } // namespace RichardsComponentTransport -- GitLab