~chaffra/+junk/trilinos

« back to all changes in this revision

Viewing changes to packages/isorropia/src/epetra/Isorropia_EpetraLevelScheduler.hpp

  • Committer: Bazaar Package Importer
  • Author(s): Christophe Prud'homme, Christophe Prud'homme, Johannes Ring
  • Date: 2009-12-13 12:53:22 UTC
  • mfrom: (5.1.2 sid)
  • Revision ID: james.westby@ubuntu.com-20091213125322-in0nrdjc55deqsw9
Tags: 10.0.3.dfsg-1
[Christophe Prud'homme]
* New upstream release

[Johannes Ring]
* debian/patches/libname.patch: Add prefix 'libtrilinos_' to all
  libraries. 
* debian/patches/soname.patch: Add soversion to libraries.
* debian/watch: Update download URL.
* debian/control:
  - Remove python-numeric from Build-Depends (virtual package).
  - Remove automake and autotools from Build-Depends and add cmake to
    reflect switch to CMake.
  - Add python-support to Build-Depends.
* debian/rules: 
  - Cleanup and updates for switch to CMake.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
//@HEADER
 
2
/*
 
3
************************************************************************
 
4
 
 
5
              Isorropia: Partitioning and Load Balancing Package
 
6
                Copyright (2006) Sandia Corporation
 
7
 
 
8
Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
 
9
license for use of this work by or on behalf of the U.S. Government.
 
10
 
 
11
This library is free software; you can redistribute it and/or modify
 
12
it under the terms of the GNU Lesser General Public License as
 
13
published by the Free Software Foundation; either version 2.1 of the
 
14
License, or (at your option) any later version.
 
15
 
 
16
This library is distributed in the hope that it will be useful, but
 
17
WITHOUT ANY WARRANTY; without even the implied warranty of
 
18
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
19
Lesser General Public License for more details.
 
20
 
 
21
You should have received a copy of the GNU Lesser General Public
 
22
License along with this library; if not, write to the Free Software
 
23
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 
24
USA
 
25
 
 
26
************************************************************************
 
27
*/
 
28
//@HEADER
 
29
 
 
30
#ifndef _Isorropia_EpetraLevelScheduler_hpp_
 
31
#define _Isorropia_EpetraLevelScheduler_hpp_
 
32
 
 
33
#include <Isorropia_ConfigDefs.hpp>
 
34
#include <Isorropia_EpetraOperator.hpp>
 
35
#include <Isorropia_LevelScheduler.hpp>
 
36
#include <Teuchos_RCP.hpp>
 
37
 
 
38
#ifdef HAVE_EPETRA
 
39
class Epetra_Map;
 
40
class Epetra_BlockMap;
 
41
class Epetra_Import;
 
42
class Epetra_Vector;
 
43
class Epetra_MultiVector;
 
44
class Epetra_CrsGraph;
 
45
class Epetra_CrsMatrix;
 
46
class Epetra_RowMatrix;
 
47
class Epetra_LinearProblem;
 
48
 
 
49
namespace Isorropia {
 
50
 
 
51
namespace Epetra {
 
52
 
 
53
/** An implementation of the LevelScheduler interface that operates on
 
54
    and Epetra_CrsGraph, representing the non-zeros in a matrix.  The
 
55
    elements to be partitioned into levels are matrix rows.  Assumption
 
56
    is that matrix is lower triangular or upper triangular.
 
57
*/
 
58
 
 
59
class LevelScheduler :  public Isorropia::LevelScheduler, public Isorropia::Epetra::Operator {
 
60
public:
 
61
 
 
62
    /** Constructor
 
63
 
 
64
    \param[in] input_graph the graph representing the non-zeros of the matrix
 
65
    \param[in] compute_now  if @c true, the scheduling is computed in the constructor, otherwise call Isorropia::Epetra::LevelScheduler::schedule when you want to compute the scheduling, defaults to @c false
 
66
    */
 
67
 
 
68
  LevelScheduler(Teuchos::RCP<const Epetra_CrsGraph> input_graph,
 
69
          bool compute_now=true);
 
70
 
 
71
  /** Destructor */
 
72
  ~LevelScheduler() {} ;
 
73
 
 
74
  /** Compute the scheduling if it has not already been computed, same effect as
 
75
       Isorropia::Epetra::LevelScheduler::compute
 
76
 
 
77
    \param[in] force_scheduling if @c true recompute the scheduling even if it has already been computed, defaults to @c false
 
78
    */
 
79
 
 
80
  void schedule(bool force_scheduling=false);
 
81
 
 
82
  /** Compute the scheduling if it has not already been computed, same effect as
 
83
       Isorropia::Epetra::LevelScheduler::schedule
 
84
 
 
85
    \param[in] force_compute if @c true recompute the scheduling even if it has already been computed, defaults to @c false
 
86
    */
 
87
 
 
88
  void compute(bool force_compute=false) {
 
89
    schedule(force_compute);
 
90
  }
 
91
 
 
92
};//class LevelScheduler
 
93
 
 
94
}//namespace Epetra
 
95
}//namespace Isorropia
 
96
 
 
97
#endif //HAVE_EPETRA
 
98
 
 
99
#endif
 
100