feat(cpp-object-oriented-modular-refactoring): step 5 - solver-workflow-google-style

This commit is contained in:
KOKO\Mimi
2026-08-16 06:20:08 +09:00
parent e1c0e357dd
commit 24f006fe4a
52 changed files with 5817 additions and 6369 deletions
+11 -11
View File
@@ -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);