# murge-product.c

Example which build a distributed laplacian and compute a product using Murge interface.

2  1  0  0 ... 0   1   4
1  2  1  0 ... 0   2   8
....            x . = .
0 ...    2  1  0   .   .
0 ...    1  2  1   .   .
0 ...    0  1  2   n   .

#### Authors

X.  LACOSTE

Summary
 murge-product.c Example which build a distributed laplacian and compute a product using Murge interface. Macros Macros MIN Compute the minimum of two values. MURGE_CALL Execute call fonction and test the return value. Defines Macros DIAG_VALUE The value of the diagonal elements of the matrix LOWER_DIAG_VALUE The value of the lower diagonal elements of the matrix. UPPER_DIAG_VALUE The value of the upper diagonal elements of the matrix. Functions main Main function of example, solving laplacian.

## Macros

Summary
 Macros MIN Compute the minimum of two values. MURGE_CALL Execute call fonction and test the return value.

### MIN

Compute the minimum of two values.

#### Parameters

 x The first value. y The second value.

### MURGE_CALL

Execute call fonction and test the return value.

#### Parameters

 call The murge function to execute.

## Defines

Summary
 Macros DIAG_VALUE The value of the diagonal elements of the matrix LOWER_DIAG_VALUE The value of the lower diagonal elements of the matrix. UPPER_DIAG_VALUE The value of the upper diagonal elements of the matrix.

### DIAG_VALUE

The value of the diagonal elements of the matrix

### LOWER_DIAG_VALUE

The value of the lower diagonal elements of the matrix.

### UPPER_DIAG_VALUE

The value of the upper diagonal elements of the matrix.

## main

Main function of <murge-product> example, solving laplacian.

Initialize MURGE and default solver options,

Set the distribution using MURGE_ProductSetLocalNodeNbr and <MURGE_ProductSetetLocalNodeList>.

Fill the ditributed matrix, value by value using MURGE_AssemblyBegin, MURGE_AssemblySetValue and MURGE_AssemblyEnd.

Set the right hand side member using MURGE_SetLocalRHS.

Solve the problem and get the local solution using MURGE_GetLocalSolution.

 INTS MURGE_ProductSetLocalNodeNbr ( INTS id, INTS n )
 INTS MURGE_AssemblyBegin( INTS id, INTL coefnbr, INTS op, INTS op2, INTS mode, INTS sym )
Check that preprocessing has been performed, if not performs it.
 INTS MURGE_AssemblySetValue ( INTS id, INTS ROW, INTS COL, COEF value )
 INTS MURGE_AssemblyEnd( INTS id )
We have on each proc a part of the matrix in two structure, one containing nodes to add to the CSCd the other containing simple values.
 INTS MURGE_SetLocalRHS ( INTS id, COEF * b, INTS op, INTS op2 )
 INTS MURGE_GetLocalSolution ( INTS id, COEF * x )