fix(hht): preserve metric association and complete MKL actions
This commit is contained in:
@@ -87,19 +87,6 @@ Result<SparseMatrix> DenseSparse(const Matrix& matrix) {
|
||||
std::move(entries));
|
||||
}
|
||||
|
||||
double SparseEntry(const SparseMatrix& matrix, const std::size_t row,
|
||||
const std::size_t column) {
|
||||
const auto first = matrix.RowOffsets()[row];
|
||||
const auto last = matrix.RowOffsets()[row + 1U];
|
||||
const auto found = std::lower_bound(matrix.ColumnIndices().begin() + first,
|
||||
matrix.ColumnIndices().begin() + last,
|
||||
column);
|
||||
if (found == matrix.ColumnIndices().begin() + last || *found != column)
|
||||
return 0.0;
|
||||
return matrix.Values()[static_cast<std::size_t>(
|
||||
found - matrix.ColumnIndices().begin())];
|
||||
}
|
||||
|
||||
bool ValidBasis(const FixedChart& chart) {
|
||||
if (chart.p_columns.size() != chart.p_dofs.size() ||
|
||||
chart.z_columns.size() != chart.z_dofs.size()) return false;
|
||||
@@ -1211,19 +1198,8 @@ Result<double> CheckGraphRegularity(
|
||||
Failure("Reduced graph regularity node is invalid.",
|
||||
"dynamic-mass-regularity"));
|
||||
const auto& null = assembly.rotations[node].drill_null;
|
||||
Matrix metric_block{3U, 3U};
|
||||
Vector direction{3U};
|
||||
for (std::size_t i = 0U; i < 3U; ++i) {
|
||||
direction[i] = null[i];
|
||||
for (std::size_t j = 0U; j < 3U; ++j)
|
||||
metric_block(i, j) = SparseEntry(
|
||||
assembly.drilling_metric, 6U * node + 3U + i, 6U * node + 3U + j);
|
||||
}
|
||||
double metric = 0.0;
|
||||
{
|
||||
const dense_blas_internal::ScopedLocalDenseThreads local_threads{};
|
||||
metric = direction.Dot(metric_block.Multiply(direction));
|
||||
}
|
||||
const double metric = hht_internal::OrderedNullMetric(
|
||||
assembly.drilling_metric, node, null);
|
||||
if (!std::isfinite(metric) || !(metric > 0.0))
|
||||
return Result<double>::Failure(Failure(
|
||||
"Reduced graph requires a positive finite null drilling metric.",
|
||||
|
||||
Reference in New Issue
Block a user