1#ifndef MATRIX_MANAGER_H
2#define MATRIX_MANAGER_H
21 std::vector<std::pair<int, int>> m_non_zero_elements;
68 if (m_non_zero_elements.empty())
74 for (
const auto&
pos : m_non_zero_elements)
76 lhs_matrix->registerElement(0.0,
pos.first,
pos.second);
79 lhs_matrix->buildAtRuntime(
dim,
dim);
82 T delta_t{m_sim->m_simulation_config.getDoubleParameters(
"time_delta")};
83 const std::valarray<T>&
temperature{m_sim->m_field_map.at(
"Temperature")};
89 for (
const auto& [
row,
col] : m_non_zero_elements)
103 lhs_matrix->overwriteMatrixValues(
119 lhs_matrix->zeroMatrix();
Error class to throw when a module chain has circular or missing dependencies. Inherits from std::exc...
Definition ChainManager.h:28
Class that manages the assembly of the global linear system of equations to be passed to the solver.
Definition MatrixManager.h:19
std::valarray< T > rhs_vector
Definition MatrixManager.h:29
MatrixManager(int size, SimulationClassBase< T > *sim, std::shared_ptr< MatrixFactory< T > > matrix_factory)
Constructor for MatrixManager.
Definition MatrixManager.h:43
void assembleGlobalLse(std::shared_ptr< GenericMatrix< T > > capacitance_matrix, std::shared_ptr< GenericMatrix< T > > stiffness_matrix, std::valarray< T > &forcing_vector)
Function which assembles the global linear system of equations from the global FEM matrices.
Definition MatrixManager.h:64
std::shared_ptr< GenericMatrix< T > > lhs_matrix
Definition MatrixManager.h:28