diff --git a/ProcessLib/HT/HTFEM.h b/ProcessLib/HT/HTFEM.h index 6475ea65d75bbd55ede2e40f5a85f9178558076b..86903ca1f9f3f625ff92dc4bffe490c12cab0315 100644 --- a/ProcessLib/HT/HTFEM.h +++ b/ProcessLib/HT/HTFEM.h @@ -354,6 +354,12 @@ protected: return cache; } + +protected: + static const int pressure_index = ShapeFunction::NPOINTS; + static const int pressure_size = ShapeFunction::NPOINTS; + static const int temperature_index = 0; + static const int temperature_size = ShapeFunction::NPOINTS; }; } // namespace HT diff --git a/ProcessLib/HT/MonolithicHTFEM.h b/ProcessLib/HT/MonolithicHTFEM.h index 8190246959845acfb777ee3bbc6a12dd63e5ee98..e86f9dc7da88bba5266a4ba4bd6034d2fbeafbc9 100644 --- a/ProcessLib/HT/MonolithicHTFEM.h +++ b/ProcessLib/HT/MonolithicHTFEM.h @@ -81,21 +81,21 @@ public: auto local_b = MathLib::createZeroedVector<LocalVectorType>( local_b_data, local_matrix_size); - auto const num_nodes = ShapeFunction::NPOINTS; - - auto Ktt = local_K.template block<num_nodes, num_nodes>(0, 0); - auto Mtt = 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 KTT = local_K.template block<temperature_size, temperature_size>( + temperature_index, temperature_index); + auto MTT = local_M.template block<temperature_size, temperature_size>( + temperature_index, temperature_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); ParameterLib::SpatialPosition pos; pos.setElementID(this->_element.getID()); - 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& process_data = this->_material_properties; auto const& medium = @@ -178,13 +178,13 @@ public: this->getThermalConductivityDispersivity( vars, porosity, fluid_density, specific_heat_capacity_fluid, velocity, I); - Ktt.noalias() += + KTT.noalias() += (dNdx.transpose() * thermal_conductivity_dispersivity * dNdx + N.transpose() * velocity.transpose() * dNdx * fluid_density * specific_heat_capacity_fluid) * w; Kpp.noalias() += w * dNdx.transpose() * K_over_mu * dNdx; - Mtt.noalias() += + MTT.noalias() += w * this->getHeatEnergyCoefficient(vars, porosity, fluid_density, specific_heat_capacity_fluid) * @@ -218,6 +218,12 @@ public: return this->getIntPtDarcyVelocityLocal(t, local_p, local_x, cache); } + +private: + using HTFEM<ShapeFunction, IntegrationMethod, GlobalDim>::pressure_index; + using HTFEM<ShapeFunction, IntegrationMethod, GlobalDim>::pressure_size; + using HTFEM<ShapeFunction, IntegrationMethod, GlobalDim>::temperature_index; + using HTFEM<ShapeFunction, IntegrationMethod, GlobalDim>::temperature_size; }; } // namespace HT