From b562885a57e863ecddd9aa7f30bda99a77e3c5fc Mon Sep 17 00:00:00 2001 From: Dmitri Naumov <github@naumov.de> Date: Sat, 14 Dec 2019 14:12:24 +0100 Subject: [PATCH] [PL] Use local_x in the assembly. Replace cpl_xs. Drop coupled_xs in HT::assembleHeatTransportEq. --- .../ComponentTransportFEM.h | 30 ++++++++----------- ProcessLib/HT/StaggeredHTFEM-impl.h | 24 ++++++--------- ProcessLib/HT/StaggeredHTFEM.h | 3 +- 3 files changed, 23 insertions(+), 34 deletions(-) diff --git a/ProcessLib/ComponentTransport/ComponentTransportFEM.h b/ProcessLib/ComponentTransport/ComponentTransportFEM.h index 0c60bb9f159..8f461ad47a1 100644 --- a/ProcessLib/ComponentTransport/ComponentTransportFEM.h +++ b/ProcessLib/ComponentTransport/ComponentTransportFEM.h @@ -404,13 +404,13 @@ public: { if (process_id == hydraulic_process_id) { - assembleHydraulicEquation(t, dt, local_M_data, local_K_data, - local_b_data, coupled_xs); + assembleHydraulicEquation(t, dt, local_x, local_M_data, + local_K_data, local_b_data, coupled_xs); } else { // Go for assembling in an order of transport process id. - assembleComponentTransportEquation(t, dt, local_M_data, + assembleComponentTransportEquation(t, dt, local_x, local_M_data, local_K_data, local_b_data, coupled_xs, process_id); } @@ -418,16 +418,15 @@ public: void assembleHydraulicEquation(double const t, double const dt, + Eigen::VectorXd const& local_x, std::vector<double>& local_M_data, std::vector<double>& local_K_data, std::vector<double>& local_b_data, LocalCoupledSolutions const& coupled_xs) { - auto local_p = Eigen::Map<const NodalVectorType>( - &coupled_xs.local_coupled_xs[pressure_index], pressure_size); - auto local_C = Eigen::Map<const NodalVectorType>( - &coupled_xs.local_coupled_xs[first_concentration_index], - concentration_size); + auto local_p = local_x.template segment<pressure_size>(pressure_index); + auto local_C = local_x.template segment<concentration_size>( + first_concentration_index); auto local_C0 = Eigen::Map<const NodalVectorType>( &coupled_xs.local_coupled_xs0[first_concentration_index], concentration_size); @@ -530,18 +529,15 @@ public: } void assembleComponentTransportEquation( - double const t, double const dt, std::vector<double>& local_M_data, - std::vector<double>& local_K_data, + double const t, double const dt, Eigen::VectorXd const& local_x, + std::vector<double>& local_M_data, std::vector<double>& local_K_data, std::vector<double>& /*local_b_data*/, LocalCoupledSolutions const& coupled_xs, int const transport_process_id) { - auto local_C = Eigen::Map<const NodalVectorType>( - &coupled_xs.local_coupled_xs[first_concentration_index + - (transport_process_id - 1) * - concentration_size], - concentration_size); - auto local_p = Eigen::Map<const NodalVectorType>( - &coupled_xs.local_coupled_xs[pressure_index], pressure_size); + auto local_p = local_x.template segment<pressure_size>(pressure_index); + auto local_C = local_x.template segment<concentration_size>( + first_concentration_index + + (transport_process_id - 1) * concentration_size); auto local_p0 = Eigen::Map<const NodalVectorType>( &coupled_xs.local_coupled_xs0[pressure_index], pressure_size); diff --git a/ProcessLib/HT/StaggeredHTFEM-impl.h b/ProcessLib/HT/StaggeredHTFEM-impl.h index 9e6c8e9f57d..06d557212e3 100644 --- a/ProcessLib/HT/StaggeredHTFEM-impl.h +++ b/ProcessLib/HT/StaggeredHTFEM-impl.h @@ -35,7 +35,7 @@ void StaggeredHTFEM<ShapeFunction, IntegrationMethod, GlobalDim>:: if (process_id == _heat_transport_process_id) { assembleHeatTransportEquation(t, local_x, local_M_data, local_K_data, - local_b_data, coupled_xs); + local_b_data); return; } @@ -53,14 +53,12 @@ void StaggeredHTFEM<ShapeFunction, IntegrationMethod, GlobalDim>:: std::vector<double>& local_b_data, LocalCoupledSolutions const& coupled_xs) { - auto const local_p = Eigen::Map< - typename ShapeMatricesType::template VectorType<pressure_size> const>( - &coupled_xs.local_coupled_xs[pressure_index], pressure_size); + auto const local_p = + local_x.template segment<pressure_size>(pressure_index); auto const local_T1 = - Eigen::Map<typename ShapeMatricesType::template VectorType< - temperature_size> const>( - &coupled_xs.local_coupled_xs[temperature_index], temperature_size); + local_x.template segment<temperature_size>(temperature_index); + auto const local_T0 = Eigen::Map<typename ShapeMatricesType::template VectorType< temperature_size> const>( @@ -188,17 +186,13 @@ void StaggeredHTFEM<ShapeFunction, IntegrationMethod, GlobalDim>:: Eigen::VectorXd const& local_x, std::vector<double>& local_M_data, std::vector<double>& local_K_data, - std::vector<double>& /*local_b_data*/, - LocalCoupledSolutions const& coupled_xs) + std::vector<double>& /*local_b_data*/) { - auto const local_p = Eigen::Map< - typename ShapeMatricesType::template VectorType<pressure_size> const>( - &coupled_xs.local_coupled_xs[pressure_index], pressure_size); + auto const local_p = + local_x.template segment<pressure_size>(pressure_index); auto const local_T1 = - Eigen::Map<typename ShapeMatricesType::template VectorType< - temperature_size> const>( - &coupled_xs.local_coupled_xs[temperature_index], temperature_size); + local_x.template segment<temperature_size>(temperature_index); auto local_M = MathLib::createZeroedMatrix<LocalMatrixType>( local_M_data, temperature_size, temperature_size); diff --git a/ProcessLib/HT/StaggeredHTFEM.h b/ProcessLib/HT/StaggeredHTFEM.h index eb78700a2ab..7253962fd48 100644 --- a/ProcessLib/HT/StaggeredHTFEM.h +++ b/ProcessLib/HT/StaggeredHTFEM.h @@ -95,8 +95,7 @@ private: Eigen::VectorXd const& local_x, std::vector<double>& local_M_data, std::vector<double>& local_K_data, - std::vector<double>& local_b_data, - LocalCoupledSolutions const& coupled_xs); + std::vector<double>& local_b_data); const int _heat_transport_process_id; const int _hydraulic_process_id; }; -- GitLab