feat(preconditioner): major work on preconditioner system

first preconditioner MVP
This commit is contained in:
2026-09-04 07:54:10 -04:00
parent 25510008dd
commit 71423d543f
61 changed files with 15920 additions and 422 deletions

View File

@@ -764,6 +764,11 @@ export namespace mean_field::field {
require_reduced_size(reduced);
if (is_identity()) {
reduced = full;
return;
}
for (int reducedDof = 0; reducedDof < reduced_size(); ++reducedDof) {
reduced(reducedDof) = full(m_reducedToTrue[reducedDof]);
}
@@ -798,6 +803,11 @@ export namespace mean_field::field {
require_full_size(full);
if (is_identity()) {
full = reduced;
return;
}
full = 0.0;
scatter_into(reduced, full);
@@ -828,6 +838,11 @@ export namespace mean_field::field {
require_full_size(full);
if (is_identity()) {
full = reduced;
return;
}
for (int reducedDof = 0; reducedDof < reduced_size(); ++reducedDof) {
full(m_reducedToTrue[reducedDof]) = reduced(reducedDof);
}
@@ -847,6 +862,11 @@ export namespace mean_field::field {
require_full_size(full);
if (is_identity()) {
full.Add(scale, reduced);
return;
}
for (int reducedDof = 0; reducedDof < reduced_size(); ++reducedDof) {
full(m_reducedToTrue[reducedDof]) += scale * reduced(reducedDof);
}