#include "ml_include.h"
Go to the source code of this file.
Functions | |
int | ML_Amesos_Gen (ML *ml, int curr_level, int choice, int MaxProcs, double AddToDiag, Amesos_Handle_Type *Amesos_Handle) |
Generates the direct solver using Amesos. | |
int | ML_Amesos_Solve (void *Amesos_Handle, double x[], double rhs[]) |
Solves using Amesos, and the factorization computed by ML_Amesos_Gen. | |
void | ML_Amesos_Destroy (void *Amesos_Handle) |
Destroy the Amesos object. | |
int | ML_isKLUAvailable () |
For serial solvers, Amesos will take care to redistribute all required data to process 0, solve the linear system on process 0, then broadcast the solution back to all the processes.
For parallel solvers (like SuperLU_DIST and MUMPS), the user can tell Amesos how many processes should be used for the coarse solution. This number can be:
In its current implementation, ML/Amesos converts the ML_Operator for the coarse level to and Epetra matrix ("heavy conversion").
ML_AMESOS_DEBUG
is defined, some checks are performed to verify that the linear system has been solved up to machine precision.
We experienced some problems with out
on TFLOPS. These problems were solved by replacing cout
with puts()
.
void ML_Amesos_Destroy | ( | void * | Amesos_Handle | ) |
Prints out some timing.
int ML_Amesos_Gen | ( | ML * | ml, | |
int | curr_level, | |||
int | choice, | |||
int | MaxProcs, | |||
double | AddToDiag, | |||
Amesos_Handle_Type * | Amesos_Handle | |||
) |
This function performs several operations:
ml | (InOut) : ML_Structure | |
curr_level | (In) : specifies the level for which we have to define the direct solver; | |
choice | (In) : integer variable, that can be ML_AMESOS_KLU, ML_AMESOS_UMFPACK, ML_AMESOS_SUPERLUDIST, ML_AMESOS_MUMPS, ML_AMESOS_SCALAPACK; | |
MaxProcs | (In) : integer defining the maximum number of processes to use in the coarse solution (only for some of the supported Amesos solvers); | |
Amesos | (In) : add the specified value to the diagonal elements of the matrix. | |
Amesos_Handle | (Out) : it will contain a pointer to the Amesos object (casted to void *). |
int ML_Amesos_Solve | ( | void * | Amesos_Handle, | |
double | x[], | |||
double | rhs[] | |||
) |
int ML_isKLUAvailable | ( | ) |