solver: tie weights and constraint reduction independent of the structural mesh (#358)

The tie's mortar rows take any node numbering and degree-of-freedom kinds, and
Reduction takes a DofLayout, so heat transfer can reuse both.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UhhZMBTviDQxZvwnyP89fo
This commit is contained in:
jyvikoandClaude Opus 5.5 authored and Irakli Kourtis committed 2026-10-15 08:27:01 -04:00
1 parent 507e8e32d2
commit 0ec1882697
4 files changed
+105 -49

No files matched your search

+8 -1
View File
@@ -343,7 +343,14 @@ pub(crate) struct Setup<'a> {
pub(crate) fn reduction(s: &Setup, values: bool, order: &[usize], budget: Budget, warnings: &mut Vec<String>) -> Result<Reduction> {
let mut rows = coupling_rows(s.model, s.resolved, s.mesh)?;
rows.extend(crate::tie::rows(s.model, s.resolved, s.mesh, warnings)?);
Reduction::new(s.mesh, order, &rows, |active| prescribed(s.model, s.resolved, s.mesh, s.step, values, active, warnings), budget)
Reduction::new(
&s.mesh.layout,
s.mesh.discrete.dofs(),
order,
&rows,
|active| prescribed(s.model, s.resolved, s.mesh, s.step, values, active, warnings),
budget,
)
}
/// The reduced matrices' memory budget: the factorization's.