// $Id$
// Version: $Name$
//
-// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 by the deal.II authors
+// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by the deal.II authors
//
// This file is subject to QPL and may not be distributed
// without copyright and license information. Please refer
* true) is not presently implemented,
* and probably will never because it is
* too expensive without direct access to
- * the PETSc data structures. A third
- * reason against this function is that
- * it doesn't handle the case where the
- * matrix is distributed across an MPI
- * system.
+ * the PETSc data structures. (This leads
+ * to the situation where the action
+ * indicates by the default value of the
+ * last argument is actually not
+ * implemented; that argument has
+ * <code>true</code> as its default value
+ * to stay consistent with the other
+ * functions of same name in this class.)
+ * A third reason against this function
+ * is that it doesn't handle the case
+ * where the matrix is distributed across
+ * an MPI system.
*
- * However, it is probably necessary in
- * most cases.
+ * This function is used in
+ * @ref step_17 "step-17" and
+ * @ref step_18 "step-18".
*/
static void
apply_boundary_values (const std::map<unsigned int,double> &boundary_values,
// $Id$
// Version: $Name$
//
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 by the deal.II authors
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2008 by the deal.II authors
//
// This file is subject to QPL and may not be distributed
// without copyright and license information. Please refer
SparseMatrix<number> &matrix,
Vector<number> &solution,
Vector<number> &right_hand_side,
- const bool preserve_symmetry)
+ const bool eliminate_columns)
{
// Require that diagonals are first
// in each row
// symmetric, then do a Gauss
// elimination step with the
// present row
- if (preserve_symmetry)
+ if (eliminate_columns)
{
// store the only nonzero entry
// of this line for the Gauss
BlockSparseMatrix<number> &matrix,
BlockVector<number> &solution,
BlockVector<number> &right_hand_side,
- const bool preserve_symmetry)
+ const bool eliminate_columns)
{
const unsigned int blocks = matrix.n_block_rows();
// present row. this is a
// little more complicated for
// block matrices.
- if (preserve_symmetry)
+ if (eliminate_columns)
{
// store the only nonzero entry
// of this line for the Gauss
PETScMatrix &matrix,
PETScVector &solution,
PETScVector &right_hand_side,
- const bool preserve_symmetry)
+ const bool eliminate_columns)
{
- Assert (preserve_symmetry == false, ExcNotImplemented());
+ Assert (eliminate_columns == false, ExcNotImplemented());
Assert (matrix.n() == right_hand_side.size(),
ExcDimensionMismatch(matrix.n(), right_hand_side.size()));
PETScWrappers::SparseMatrix &matrix,
PETScWrappers::Vector &solution,
PETScWrappers::Vector &right_hand_side,
- const bool preserve_symmetry)
+ const bool eliminate_columns)
{
// simply redirect to the generic function
// used for both petsc matrix types
PETScWrappers::apply_boundary_values (boundary_values, matrix, solution,
- right_hand_side, preserve_symmetry);
+ right_hand_side, eliminate_columns);
}
PETScWrappers::MPI::SparseMatrix &matrix,
PETScWrappers::MPI::Vector &solution,
PETScWrappers::MPI::Vector &right_hand_side,
- const bool preserve_symmetry)
+ const bool eliminate_columns)
{
// simply redirect to the generic function
// used for both petsc matrix types
PETScWrappers::apply_boundary_values (boundary_values, matrix, solution,
- right_hand_side, preserve_symmetry);
+ right_hand_side, eliminate_columns);
// compress the matrix once we're done
matrix.compress ();
SparseMatrix<double> &matrix,
Vector<double> &solution,
Vector<double> &right_hand_side,
- const bool preserve_symmetry);
+ const bool eliminate_columns);
template
void
MatrixTools::apply_boundary_values<float> (const std::map<unsigned int,double> &boundary_values,
SparseMatrix<float> &matrix,
Vector<float> &solution,
Vector<float> &right_hand_side,
- const bool preserve_symmetry);
+ const bool eliminate_columns);
template
void
BlockSparseMatrix<double> &matrix,
BlockVector<double> &solution,
BlockVector<double> &right_hand_side,
- const bool preserve_symmetry);
+ const bool eliminate_columns);
template
void
MatrixTools::apply_boundary_values<float> (const std::map<unsigned int,double> &boundary_values,
BlockSparseMatrix<float> &matrix,
BlockVector<float> &solution,
BlockVector<float> &right_hand_side,
- const bool preserve_symmetry);
+ const bool eliminate_columns);
DEAL_II_NAMESPACE_CLOSE