28 IT n{-1}, block{-1}, rows{-1};
39 auto init_storage(
const IT n) {
41 loc.block = std::max(IT{1},
static_cast<IT
>(std::sqrt(ctx.
row_block(loc.n) * ctx.
col_block(loc.n))));
42 loc.rows = ctx.
rows(loc.n, loc.block);
43 loc.desc_a = ctx.
desc_l(loc.n, loc.n, loc.block, loc.rows);
45 loc.a.resize(loc.rows * ctx.
cols(loc.n, loc.block));
46 loc.ipiv.resize(loc.rows + loc.block);
49 using base_t::to_full;
58 , ctx(rows, cols, ODER) {}
70 auto operator()(
const IT i,
const IT j)
const {
71 if(i < 0 || i >= n || j < 0 || j >= n)
return IT{-1};
78 template<full_container_t AT, full_container_t BT> IT solve(AT&& A, BT&& B) {
return solve(to_full(A), to_full(B)); }
Definition abstract_solver.hpp:159
auto desc_l(const IT num_rows, const IT num_cols, const IT row_block, const IT col_block, const IT lead)
Generates a descriptor for a local matrix.
Definition abstract_solver.hpp:272
auto rows(const IT n, const IT nb) const
Computes the number of local rows of the current process.
Definition abstract_solver.hpp:317
auto col_block(const IT n) const
Computes the column block size.
Definition abstract_solver.hpp:305
auto row_block(const IT n) const
Computes the row block size.
Definition abstract_solver.hpp:300
auto cols(const IT n, const IT nb) const
Computes the number of local columns of the current process.
Definition abstract_solver.hpp:329