feat(cpp-object-oriented-modular-refactoring): step 5 - solver-workflow-google-style
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
#include <tuple>
|
||||
#include <utility>
|
||||
|
||||
#include "fesa/fem/dof_manager.hpp"
|
||||
#include "fesa/fem/dof_manager.h"
|
||||
|
||||
namespace fesa {
|
||||
namespace {
|
||||
@@ -79,8 +79,8 @@ Result<SparseMatrix> SparseMatrix::FromCoo(
|
||||
std::vector<CooContribution> contributions,
|
||||
const SparsePattern& expected_pattern) {
|
||||
const Status pattern_status =
|
||||
ValidateCsr(rows, columns, expected_pattern.rowOffsets,
|
||||
expected_pattern.columnIndices, nullptr);
|
||||
ValidateCsr(rows, columns, expected_pattern.row_offsets,
|
||||
expected_pattern.column_indices, nullptr);
|
||||
if (!pattern_status.IsOk()) {
|
||||
return Result<SparseMatrix>::Failure(pattern_status);
|
||||
}
|
||||
@@ -113,12 +113,12 @@ Result<SparseMatrix> SparseMatrix::FromCoo(
|
||||
right.local_order);
|
||||
});
|
||||
|
||||
std::vector<double> values(expected_pattern.columnIndices.size(), 0.0);
|
||||
std::vector<double> values(expected_pattern.column_indices.size(), 0.0);
|
||||
for (const auto& contribution : contributions) {
|
||||
const std::size_t begin = expected_pattern.rowOffsets[contribution.row];
|
||||
const std::size_t end = expected_pattern.rowOffsets[contribution.row + 1U];
|
||||
const auto first = expected_pattern.columnIndices.begin() + begin;
|
||||
const auto last = expected_pattern.columnIndices.begin() + end;
|
||||
const std::size_t begin = expected_pattern.row_offsets[contribution.row];
|
||||
const std::size_t end = expected_pattern.row_offsets[contribution.row + 1U];
|
||||
const auto first = expected_pattern.column_indices.begin() + begin;
|
||||
const auto last = expected_pattern.column_indices.begin() + end;
|
||||
const auto found = std::lower_bound(first, last, contribution.column);
|
||||
if (found == last || *found != contribution.column) {
|
||||
return Result<SparseMatrix>::Failure(SparseFailure(
|
||||
@@ -129,7 +129,7 @@ Result<SparseMatrix> SparseMatrix::FromCoo(
|
||||
}
|
||||
|
||||
const std::size_t position = static_cast<std::size_t>(
|
||||
std::distance(expected_pattern.columnIndices.begin(), found));
|
||||
std::distance(expected_pattern.column_indices.begin(), found));
|
||||
values[position] += contribution.value;
|
||||
if (!std::isfinite(values[position])) {
|
||||
return Result<SparseMatrix>::Failure(SparseFailure(
|
||||
@@ -140,8 +140,8 @@ Result<SparseMatrix> SparseMatrix::FromCoo(
|
||||
}
|
||||
}
|
||||
|
||||
SparseMatrix matrix{rows, columns, expected_pattern.rowOffsets,
|
||||
expected_pattern.columnIndices, std::move(values)};
|
||||
SparseMatrix matrix{rows, columns, expected_pattern.row_offsets,
|
||||
expected_pattern.column_indices, std::move(values)};
|
||||
const Status status = matrix.Validate();
|
||||
if (!status.IsOk()) {
|
||||
return Result<SparseMatrix>::Failure(status);
|
||||
|
||||
Reference in New Issue
Block a user