Integrate Refactor solver sources and dual MSVC CMake builds
This commit is contained in:
@@ -13,6 +13,8 @@
|
||||
#include "fesa/elements/element_definition.h"
|
||||
#include "fesa/model/domain.h"
|
||||
|
||||
#include "assembly/ordered_contribution_internal.h"
|
||||
|
||||
namespace fesa {
|
||||
namespace {
|
||||
|
||||
@@ -250,14 +252,13 @@ Result<SurfacePressureAssemblyCandidate> AssembleSurfacePressure(
|
||||
for (std::size_t local_row = 0U; local_row < kFacetDofCount; ++local_row) {
|
||||
const std::size_t full_row = task.scatter[local_row];
|
||||
const double force = contribution.force[local_row];
|
||||
const double accumulated = full_force[full_row] + force;
|
||||
if (!std::isfinite(force) || !std::isfinite(accumulated)) {
|
||||
if (!assembly_internal::AccumulateFiniteLoad(full_force, full_row,
|
||||
force)) {
|
||||
return Result<SurfacePressureAssemblyCandidate>::Failure(Failure(
|
||||
FailureCategory::kSolver, task.input.location,
|
||||
"nonfinite-pressure-accumulation", task.input.entity_identity,
|
||||
"Stable pressure force reduction produced a nonfinite value."));
|
||||
}
|
||||
full_force[full_row] = accumulated;
|
||||
for (std::size_t local_column = 0U; local_column < kFacetDofCount;
|
||||
++local_column) {
|
||||
const double tangent = contribution.external_tangent[
|
||||
@@ -268,12 +269,9 @@ Result<SurfacePressureAssemblyCandidate> AssembleSurfacePressure(
|
||||
"nonfinite-pressure-tangent", task.input.entity_identity,
|
||||
"A pressure local tangent contains a nonfinite value."));
|
||||
}
|
||||
tangent_contributions.push_back(
|
||||
{full_row,
|
||||
task.scatter[local_column],
|
||||
tangent,
|
||||
task_index,
|
||||
local_row * kFacetDofCount + local_column});
|
||||
assembly_internal::AppendLocalMatrixEntry(
|
||||
task.scatter, local_row, local_column, tangent, task_index,
|
||||
tangent_contributions);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user