<h3>lac</h3>
<ol>
+ <li> <p>
+ Fixed: In the <code class="class">SparseDirectMA27</code> class, wrapping
+ the MA27 solver written in Fortran77 into some structure amenable to C++,
+ we wrote beyond the end of an array on rare inputs. This is now fixed. The
+ same probably holds for the respective code for MA47.
+ <br>
+ (WB 2002/09/30)
+ </p>
+
<li> <p>
New: Since the MA27 sparse direct solver uses Fortran common blocks, it
was previously impossible to run several instances of this solver in
// set LA and fill the A array of
// values
- LA = static_cast<int>(NRLNEC * LA_factor);
+ LA = std::max (static_cast<int>(NRLNEC * LA_factor),
+ static_cast<int>(n_nonzero_elements));
A.resize (LA);
fill_A (matrix);
void
SparseDirectMA27::fill_A (const SparseMatrix<double> &matrix)
{
-
+ Assert (n_nonzero_elements <= A.size(), ExcInternalError());
+
const SparsityPattern &sparsity_pattern = matrix.get_sparsity_pattern ();
const unsigned int n_rows = sparsity_pattern.n_rows();
// set LA and fill the A array of
// values
- LA = static_cast<int>(INFO[5] * LA_factor);
+ LA = std::max (static_cast<int>(INFO[5] * LA_factor),
+ static_cast<int>(n_nonzero_elements));
A.resize (LA);
fill_A (m);