ML Version of the Day
ml_amesos_wrap.h File Reference

Interface to the Trilinos package Amesos. More...

#include "ml_include.h"
Include dependency graph for ml_amesos_wrap.h:
This graph shows which files directly or indirectly include this file:


int ML_Amesos_Gen (ML *ml, int curr_level, int choice, int MaxProcs, double AddToDiag, Amesos_Handle_Type *Amesos_Handle)
int ML_Amesos_Solve (void *Amesos_Handle, double x[], double rhs[])
void ML_Amesos_Destroy (void *Amesos_Handle)
int ML_isKLUAvailable ()

Detailed Description

Interface to the Trilinos package Amesos.

The ML/Amesos interface can be used to solve the coarse problem with some of the sparse direct solvers supported by Amesos:

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").

If 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().
Last update to Doxygen: 21-Jun-05

Function Documentation

void ML_Amesos_Destroy ( void *  Amesos_Handle)

Destroy the Amesos object. Prints out some timing.

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.

This function performs several operations:

  • wrap the ML_Operator for the given level to an Epetra_CrsMatrix
  • creates the Amesos object;
  • compute the symbolic and numeric factorzation.
ml(InOut) : ML_Structure
curr_level(In) : specifies the level for which we have to define the direct solver;
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 *).

If the required solver is not available, ML_Amesos_Gen will create a KLU solver. KLU is distributed with Amesos, and is enabled by default.

int ML_Amesos_Solve ( void *  Amesos_Handle,
double  x[],
double  rhs[] 

Solves using Amesos, and the factorization computed by ML_Amesos_Gen.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends