Set matrix build mode before setting its size

This is so that the new dune matrix work as expected: it requires to set the build mode each time a matrix is built and the sizes must be specified after setting the build mode. This is compatible with the current BCRSMatrix.
This commit is contained in:
Santiago Ospina De Los Ríos committed 2026-06-03 12:01:59 +02:00
1 parent 524e37a534
commit 3bdde0d041
3 files changed
+9 -6

No files matched your search

@@ -25,9 +25,6 @@ template <typename Scalar, int numWellEq, int numEq>
CompWellEquations<Scalar, numWellEq, numEq>::
CompWellEquations()
{
duneB_.setBuildMode(OffDiagMatWell::row_wise);
duneC_.setBuildMode(OffDiagMatWell::row_wise),
duneD_.setBuildMode(DiagMatWell::row_wise);
invDuneD_.setBuildMode(DiagMatWell::row_wise);
}
@@ -37,6 +34,10 @@ void
CompWellEquations<Scalar, numWellEq, numEq>::
init(const int num_conn, const std::vector<std::size_t>& cells)
{
duneB_.setBuildMode(OffDiagMatWell::row_wise);
duneC_.setBuildMode(OffDiagMatWell::row_wise),
duneD_.setBuildMode(DiagMatWell::row_wise);
duneD_.setSize(1, 1, 1);
duneB_.setSize(1, num_conn, num_conn);
duneC_.setSize(1, num_conn, num_conn);
@@ -328,8 +328,8 @@ private:
size_t numDomestic = overlap_->numDomestic();
// allocate the rows
this->setSize(numDomestic, numDomestic);
this->setBuildMode(ParentType::random);
this->setSize(numDomestic, numDomestic);
// communicate the entries
buildIndices_(nativeMatrix);
@@ -47,8 +47,6 @@ StandardWellEquations<Scalar, IndexTraits, numEq>::
StandardWellEquations(const ParallelWellInfo<Scalar>& parallel_well_info)
: parallelB_(duneB_, parallel_well_info)
{
duneB_.setBuildMode(OffDiagMatWell::row_wise);
duneC_.setBuildMode(OffDiagMatWell::row_wise),
invDuneD_.setBuildMode(DiagMatWell::row_wise);
}
@@ -62,6 +60,10 @@ init(const int numWellEq,
//[A C^T [x = [ res
// B D] x_well] res_well]
// set the size of the matrices
duneB_.setBuildMode(OffDiagMatWell::row_wise);
duneC_.setBuildMode(OffDiagMatWell::row_wise),
duneD_.setBuildMode(DiagMatWell::row_wise),
duneD_.setSize(1, 1, 1);
duneB_.setSize(1, numPerfs, numPerfs);
duneC_.setSize(1, numPerfs, numPerfs);