diff --git a/ProcessLib/ComponentTransport/ComponentTransportFEM.h b/ProcessLib/ComponentTransport/ComponentTransportFEM.h index 9ac2c5ab878b17af2724bd16e57de9829d3f61cd..ec39c4e8a5472b7871958b163423579744be22b9 100644 --- a/ProcessLib/ComponentTransport/ComponentTransportFEM.h +++ b/ProcessLib/ComponentTransport/ComponentTransportFEM.h @@ -346,13 +346,12 @@ public: I); const double R_times_phi(retardation_factor * porosity); GlobalDimVectorType const mass_density_flow = velocity * density; + auto const N_t_N = (N.transpose() * N).eval(); if (_process_data.non_advective_form) { const double C_int_pt(N.dot(C_nodal_values)); - MCp.noalias() += - N.transpose() * N * (C_int_pt * R_times_phi * drho_dp * w); - MCC.noalias() += - N.transpose() * N * (R_times_phi * C_int_pt * drho_dC * w); + MCp.noalias() += N_t_N * (C_int_pt * R_times_phi * drho_dp * w); + MCC.noalias() += N_t_N * (C_int_pt * R_times_phi * drho_dC * w); KCC.noalias() -= dNdx.transpose() * mass_density_flow * N * w; } else @@ -361,18 +360,17 @@ public: N.transpose() * (mass_density_flow.dot(dNdx * C_nodal_values) * w); } - MCC.noalias() += N.transpose() * N * (R_times_phi * density * w); - KCC.noalias() += - dNdx.transpose() * hydrodynamic_dispersion * dNdx * - (density * w) + - N.transpose() * N * (decay_rate * R_times_phi * density * w); + MCC.noalias() += N_t_N * (R_times_phi * density * w); + KCC.noalias() += dNdx.transpose() * hydrodynamic_dispersion * dNdx * + (density * w) + + N_t_N * (decay_rate * R_times_phi * density * w); - MpC.noalias() += N.transpose() * N * (porosity * drho_dC * w); + MpC.noalias() += N_t_N * (porosity * drho_dC * w); // Calculate Mpp, Kpp, and bp in the first loop over components if (component_id == 0) { - Mpp.noalias() += N.transpose() * N * (porosity * drho_dp * w); + Mpp.noalias() += N_t_N * (porosity * drho_dp * w); Kpp.noalias() += dNdx.transpose() * K_over_mu * dNdx * (density * w); @@ -632,6 +630,7 @@ public: I); double const R_times_phi = retardation_factor * porosity; + auto const N_t_N = (N.transpose() * N).eval(); if (_process_data.non_advective_form) { @@ -641,7 +640,7 @@ public: vars, MaterialLib::Fluid::PropertyVariableType::C); local_M.noalias() += - N.transpose() * N * (R_times_phi * C_int_pt * drho_dC * w); + N_t_N * (R_times_phi * C_int_pt * drho_dC * w); } else { @@ -649,8 +648,7 @@ public: velocity.dot(dNdx * local_C) * (density * w); } - local_M.noalias() += - N.transpose() * N * (R_times_phi * density * w); + local_M.noalias() += N_t_N * (R_times_phi * density * w); // coupling term @@ -665,7 +663,7 @@ public: vars, MaterialLib::Fluid::PropertyVariableType::p); local_K.noalias() += - N.transpose() * N * + N_t_N * ((R_times_phi * drho_dp * (p_int_pt - p0_int_pt) / dt) * w) - dNdx.transpose() * velocity * N * (density * w); @@ -673,7 +671,7 @@ public: local_K.noalias() += dNdx.transpose() * hydrodynamic_dispersion * dNdx * (density * w) + - N.transpose() * N * (decay_rate * R_times_phi * density * w); + N_t_N * (decay_rate * R_times_phi * density * w); } }