43 #ifndef IFPACK_LINEPARTITIONER_H
44 #define IFPACK_LINEPARTITIONER_H
46 #include "Ifpack_ConfigDefs.h"
47 #include "Ifpack_Partitioner.h"
48 #include "Ifpack_OverlappingPartitioner.h"
49 #include "Ifpack_Graph_Epetra_RowMatrix.h"
50 #include "Teuchos_ParameterList.hpp"
96 typedef enum {COORDINATES=0, MATRIX_ENTRIES,} LINE_MODE;
137 mymode = List.get(
"partitioner: line mode",mymode);
138 if(mymode==
"coordinates") mode_=COORDINATES;
139 else if(mymode==
"matrix entries") mode_=MATRIX_ENTRIES;
141 threshold_ = List.get(
"partitioner: line detection threshold",threshold_);
142 if(threshold_ < 0.0) IFPACK_CHK_ERR(-1);
143 if(mode_==COORDINATES && threshold_ > 1.0) IFPACK_CHK_ERR(-1);
146 NumEqns_ = List.get(
"partitioner: PDE equations",NumEqns_);
147 if(NumEqns_ < 1 ) IFPACK_CHK_ERR(-2);
149 xcoord_ = List.get(
"partitioner: x-coordinates",xcoord_);
150 ycoord_ = List.get(
"partitioner: y-coordinates",ycoord_);
151 zcoord_ = List.get(
"partitioner: z-coordinates",zcoord_);
152 if(mode_==COORDINATES && !xcoord_ && !ycoord_ && !zcoord_) IFPACK_CHK_ERR(-3);
163 int Compute_Blocks_AutoLine(
int * blockIndices)
const;
164 void local_automatic_line_search(
int NumEqns,
int * blockIndices,
int last,
int next,
int LineID,
double tol,
int *itemp,
double * dtemp)
const;
167 Teuchos::RCP<const Ifpack_Graph> GraphWrapper_;
182 #endif // IFPACK_LINEPARTITIONER_H
virtual ~Ifpack_LinePartitioner()
Destructor.
int ComputePartitions()
Computes the partitions. Returns 0 if successful.
Ifpack_LinePartitioner(const Ifpack_Graph *Graph)
Constructor.
Ifpack_Graph_Epetra_RowMatrix: a class to define Ifpack_Graph as a light-weight conversion of Epetra_...
const Ifpack_Graph * Graph_
Reference to the graph to be partitioned.
Ifpack_Graph: a pure virtual class that defines graphs for IFPACK.
int SetPartitionParameters(Teuchos::ParameterList &List)
Sets all the parameters for the partitioner.