SuperLU Distributed 8.2.1
Distributed memory sparse direct solver
|
Finds a row permutation so that the matrix has large entries on the diagonal. More...
#include "superlu_ddefs.h"
Functions | |
int | mc64ad_dist (int *job, int *n, int_t *ne, int_t *ip, int_t *irn, double *a, int *num, int_t *cperm, int_t *liw, int_t *iw, int_t *ldw, double *dw, int *icntl, int *info) |
int | dldperm_dist (int job, int n, int_t nnz, int_t colptr[], int_t adjncy[], double nzval[], int_t *perm, double u[], double v[]) |
Finds a row permutation so that the matrix has large entries on the diagonal.
Copyright (c) 2003, The Regents of the University of California, through Lawrence Berkeley National Laboratory (subject to receipt of any required approvals from U.S. Dept. of Energy)
All rights reserved.
The source code is distributed under BSD license, see the file License.txt at the top-level directory.
-- Distributed SuperLU routine (version 1.0) -- Lawrence Berkeley National Lab, Univ. of California Berkeley. September 1, 1999
int dldperm_dist | ( | int | job, |
int | n, | ||
int_t | nnz, | ||
int_t | colptr[], | ||
int_t | adjncy[], | ||
double | nzval[], | ||
int_t * | perm, | ||
double | u[], | ||
double | v[] | ||
) |
Purpose ======= DLDPERM finds a row permutation so that the matrix has large entries on the diagonal. Arguments ========= job (input) int Control the action. Possible values for JOB are: = 1 : Compute a row permutation of the matrix so that the permuted matrix has as many entries on its diagonal as possible. The values on the diagonal are of arbitrary size. HSL subroutine MC21A/AD is used for this. = 2 : Compute a row permutation of the matrix so that the smallest value on the diagonal of the permuted matrix is maximized. = 3 : Compute a row permutation of the matrix so that the smallest value on the diagonal of the permuted matrix is maximized. The algorithm differs from the one used for JOB = 2 and may have quite a different performance. = 4 : Compute a row permutation of the matrix so that the sum of the diagonal entries of the permuted matrix is maximized. = 5 : Compute a row permutation of the matrix so that the product of the diagonal entries of the permuted matrix is maximized and vectors to scale the matrix so that the nonzero diagonal entries of the permuted matrix are one in absolute value and all the off-diagonal entries are less than or equal to one in absolute value. Restriction: 1 <= JOB <= 5. n (input) int The order of the matrix. nnz (input) int The number of nonzeros in the matrix. adjncy (input) int*, of size nnz The adjacency structure of the matrix, which contains the row indices of the nonzeros. colptr (input) int*, of size n+1 The pointers to the beginning of each column in ADJNCY. nzval (input) double*, of size nnz The nonzero values of the matrix. nzval[k] is the value of the entry corresponding to adjncy[k]. It is not used if job = 1. perm (output) int*, of size n The permutation vector. perm[i] = j means row i in the original matrix is in row j of the permuted matrix. u (output) double*, of size n If job = 5, the natural logarithms of the row scaling factors. v (output) double*, of size n If job = 5, the natural logarithms of the column scaling factors. The scaled matrix B has entries b_ij = a_ij * exp(u_i + v_j).
int mc64ad_dist | ( | int * | job, |
int * | n, | ||
int_t * | ne, | ||
int_t * | ip, | ||
int_t * | irn, | ||
double * | a, | ||
int * | num, | ||
int_t * | cperm, | ||
int_t * | liw, | ||
int_t * | iw, | ||
int_t * | ldw, | ||
double * | dw, | ||
int * | icntl, | ||
int * | info | ||
) |
This subroutine attempts to find a column permutation for an NxN sparse matrix A = {a_ij} that makes the permuted matrix have N entries on its diagonal. If the matrix is structurally nonsingular, the subroutine optionally returns a column permutation that maximizes the smallest element on the diagonal, maximizes the sum of the diagonal entries, or maximizes the product of the diagonal entries of the permuted matrix. For the latter option, the subroutine also finds scaling factors that may be used to scale the matrix so that the nonzero diagonal entries of the permuted matrix are one in absolute value and all the off-diagonal entries are less than or equal to one in absolute value. The natural logarithms of the scaling factors u(i), i=1..N, for the rows and v(j), j=1..N, for the columns are returned so that the scaled matrix B = {b_ij} has entries b_ij = a_ij * EXP(u_i + v_j).
This subroutine attempts to find a column permutation for an NxN sparse matrix A = {a_ij} that makes the permuted matrix have N entries on its diagonal. If the matrix is structurally nonsingular, the subroutine optionally returns a column permutation that maximizes the smallest element on the diagonal, maximizes the sum of the diagonal entries, or maximizes the product of the diagonal entries of the permuted matrix. For the latter option, the subroutine also finds scaling factors that may be used to scale the matrix so that the nonzero diagonal entries of the permuted matrix are one in absolute value and all the off-diagonal entries are less than or equal to one in absolute value. The natural logarithms of the scaling factors u(i), i=1..N, for the rows and v(j), j=1..N, for the columns are returned so that the scaled matrix B = {b_ij} has entries b_ij = a_ij * EXP(u_i + v_j).