Enumerations

CSCD_OPERATIONS

enum CSCD_OPERATIONS

Operation when adding CSCD

CSCD_ADDAdd coefficient values.
CSCD_KEEPKeep value from first CSCD.
CSCD_MAXKeep maximum of first and second CSCD.
CSCD_MINKeep minimum of first and second CSCD.
CSCD_OVWOverwrite with second CSCD value.

CSC_DISPATCH_OP

enum CSC_DISPATCH_OP

Operation when dispatching the csc into a cscd

CSC_DISP_SIMPLEReparts linearly the columns over the proc.
CSC_DISP_CYCLICReparts cyclicly the columns over the proc.

Functions

csc_dispatch

void csc_dispatch(INT gN,
INT *gcolptr,
INT *grow,
FLOAT *gavals,
FLOAT *grhs,
INT *gperm,
INT *ginvp,
INT *lN,
INT **lcolptr,
INT **lrow,
FLOAT **lavals,
FLOAT **lrhs,
INT **lperm,
INT **loc2glob,
int dispatch,
MPI_Comm pastix_comm)

Distribute a CSC to a CSCD

Parameters

gNglobal number of columns
gcolptrglobal starting index of each column in grows ans gavals.
growsglobal rows of each element.
gavalsglobal values of each element.
gpermglobal permutation tabular.
ginvpglobal reverse permutation tabular.
lNlocal number of columns (output).
lcolptrstarting index of each local column (output).
lrowptrrow number of each local element (output).
lavalsvalues of each local element (output).
lrhslocal part of the right hand side (output).
lpermlocal part of the permutation tabular (output).
loc2globglobal numbers of local columns (before permutation).
dispatchchoose how to dispatch the csc
pastix_commPaStiX MPI communicator.

s_csc_dispatch

void s_csc_dispatch(INT gN,
INT *gcolptr,
INT *grow,
float *gavals,
float *grhs,
INT *gperm,
INT *ginvp,
INT *lN,
INT **lcolptr,
INT **lrow,
float **lavals,
float **lrhs,
INT **lperm,
INT **loc2glob,
int dispatch,
MPI_Comm pastix_comm)

d_csc_dispatch

void d_csc_dispatch(INT gN,
INT *gcolptr,
INT *grow,
double *gavals,
double *grhs,
INT *gperm,
INT *ginvp,
INT *lN,
INT **lcolptr,
INT **lrow,
double **lavals,
double **lrhs,
INT **lperm,
INT **loc2glob,
int dispatch,
MPI_Comm pastix_comm)

c_csc_dispatch

void c_csc_dispatch(INT gN,
INT *gcolptr,
INT *grow,
float complex *gavals,
float complex *grhs,
INT *gperm,
INT *ginvp,
INT *lN,
INT **lcolptr,
INT **lrow,
float complex **lavals,
float complex **lrhs,
INT **lperm,
INT **loc2glob,
int dispatch,
MPI_Comm pastix_comm)

z_csc_dispatch

void z_csc_dispatch(INT gN,
INT *gcolptr,
INT *grow,
double complex *gavals,
double complex *grhs,
INT *gperm,
INT *ginvp,
INT *lN,
INT **lcolptr,
INT **lrow,
double complex **lavals,
double complex **lrhs,
INT **lperm,
INT **loc2glob,
int dispatch,
MPI_Comm pastix_comm)

csc_cyclic_distribution

INT csc_cyclic_distribution(INT column,
INT columnnbr,
MPI_Comm pastix_comm)

Distribute the CSC cyclicaly.

Parameters

columncolumn number to distribute
columnnbrNumber of colmuns.
pastix_commPaStiX MPI communicator

Return

owner of the column (column%commSize)

Scsc_cyclic_distribution

INT Scsc_cyclic_distribution(INT column,
INT columnnbr,
MPI_Comm pastix_comm)

Dcsc_cyclic_distribution

INT Dcsc_cyclic_distribution(INT column,
INT columnnbr,
MPI_Comm pastix_comm)

Ccsc_cyclic_distribution

INT Ccsc_cyclic_distribution(INT column,
INT columnnbr,
MPI_Comm pastix_comm)

Zcsc_cyclic_distribution

INT Zcsc_cyclic_distribution(INT column,
INT columnnbr,
MPI_Comm pastix_comm)

csc_simple_distribution

INT csc_simple_distribution(INT column,
INT columnnbr,
MPI_Comm pastix_comm)

Distribute the CSC.  First columns are for first proc and so on.

Parameters

columncolumn number to distribute
columnnbrNumber of colmuns.
pastix_commPaStiX MPI communicator

Return

owner of the column (column/commSize)

s_csc_simple_distribution

INT s_csc_simple_distribution(INT column,
INT columnnbr,
MPI_Comm pastix_comm)

d_csc_simple_distribution

INT d_csc_simple_distribution(INT column,
INT columnnbr,
MPI_Comm pastix_comm)

c_csc_simple_distribution

INT c_csc_simple_distribution(INT column,
INT columnnbr,
MPI_Comm pastix_comm)

z_csc_simple_distribution

INT z_csc_simple_distribution(INT column,
INT columnnbr,
MPI_Comm pastix_comm)

cscd_symgraph

int cscd_symgraph(INT n,
INT *ia,
INT *ja,
FLOAT *a,
INT *newn,
INT **newia,
INT **newja,
FLOAT **newa,
INT *l2g,
MPI_Comm comm)

Check if the CSCD graph is symetric.

Parameters

nNumber of local columns
iaStarting index of each columns in ja and a
jaRow of each element.
aValues of each element.
newnNew number of local columns
newiaStarting index of each columns in newja and newa
newjaRow of each element.
newaValues of each element.
l2gglobal number of each local column.
malloc_flagflag to indicate if function call is intern to pastix or extern.

s_cscd_symgraph

int s_cscd_symgraph(INT n,
INT *ia,
INT *ja,
float *a,
INT *newn,
INT **newia,
INT **newja,
float **newa,
INT *l2g,
MPI_Comm comm)

d_cscd_symgraph

int d_cscd_symgraph(INT n,
INT *ia,
INT *ja,
double *a,
INT *newn,
INT **newia,
INT **newja,
double **newa,
INT *l2g,
MPI_Comm comm)

c_cscd_symgraph

int c_cscd_symgraph(INT n,
INT *ia,
INT *ja,
float complex *a,
INT *newn,
INT **newia,
INT **newja,
float complex **newa,
INT *l2g,
MPI_Comm comm)

z_cscd_symgraph

int z_cscd_symgraph(INT n,
INT *ia,
INT *ja,
double complex *a,
INT *newn,
INT **newia,
INT **newja,
double complex **newa,
INT *l2g,
MPI_Comm comm)

cscd_addlocal

int cscd_addlocal(INT ,
INT * ia ,
INT * ja ,
FLOAT * ,
INT *l2g,
INT addn,
INT *addia,
INT *addja,
FLOAT *adda,
INT *addl2g,
INT *newn,
INT **newia,
INT **newja,
FLOAT **newa,
CSCD_OPERATIONS_t OP,
int dof)

Add second cscd to first cscd into third cscd (unallocated)

Parameters

nFirst cscd size
iaFirst cscd starting index of each column in ja and a
jaRow of each element in first CSCD
avalue of each cscd in first CSCD (can be NULL)
l2glocal 2 global column numbers for first cscd
addnCSCD to add size
addiaCSCD to add starting index of each column in addja and adda
addjaRow of each element in second CSCD
addavalue of each cscd in second CSCD (can be NULL -> add 0)
addl2glocal 2 global column numbers for second cscd
newnnew cscd size (same as first)
newiaCSCD to add starting index of each column in newja and newwa
newjaRow of each element in third CSCD
newavalue of each cscd in third CSCD
OPOperation to manage common CSCD coefficients.
dofNumber of degrees of freedom.

s_cscd_addlocal

int s_cscd_addlocal(INT ,
INT * ia ,
INT * ja ,
float * ,
INT *l2g,
INT addn,
INT *addia,
INT *addja,
float *adda,
INT *addl2g,
INT *newn,
INT **newia,
INT **newja,
float **newa,
CSCD_OPERATIONS_t OP,
int dof)

d_cscd_addlocal

int d_cscd_addlocal(INT ,
INT * ia ,
INT * ja ,
double * ,
INT *l2g,
INT addn,
INT *addia,
INT *addja,
double *adda,
INT *addl2g,
INT *newn,
INT **newia,
INT **newja,
double **newa,
CSCD_OPERATIONS_t OP,
int dof)

c_cscd_addlocal

int c_cscd_addlocal(INT ,
INT * ia ,
INT *ja,
float complex * ,
INT *l2g,
INT addn,
INT *addia,
INT *addja,
float complex *adda,
INT *addl2g,
INT *newn,
INT **newia,
INT **newja,
float complex **newa,
CSCD_OPERATIONS_t OP,
int dof)

z_cscd_addlocal

int z_cscd_addlocal(INT ,
INT * ia ,
INT *ja,
double complex * ,
INT *l2g,
INT addn,
INT *addia,
INT *addja,
double complex *adda,
INT *addl2g,
INT *newn,
INT **newia,
INT **newja,
double complex **newa,
CSCD_OPERATIONS_t OP,
int dof)

csc2cscd

void csc2cscd(INT gN,
INT *gcolptr,
INT *grow,
FLOAT *gavals,
FLOAT *grhs,
INT *gperm,
INT *ginvp,
INT lN,
INT **lcolptr,
INT **lrow,
FLOAT **lavals,
FLOAT **lrhs,
INT **lperm,
INT **linvp,
INT *loc2glob)

Transform a csc to a cscd.  Allocate the CSCD.  If grhs == NULL forget right hand side part.  If gperm == NULL forget permutation and reverse permutation part.

Parameters

gNglobal number of columns
gcolptrglobal starting index of each column in grows ans gavals.
growsglobal rows of each element.
gavalsglobal values of each element.
gpermglobal permutation tabular.
ginvpglobal reverse permutation tabular.
lNlocal number of columns.
lcolptrstarting index of each local column.
lrowptrrow number of each local element.
lavalsvalues of each local element.
lrhslocal part of the right hand side (output).
lpermlocal part of the permutation tabular (output).
linvplocal part of the reverse permutation tabular (output).
loc2globglobal numbers of local columns (before permutation).

s_csc2cscd

void s_csc2cscd(INT gN,
INT *gcolptr,
INT *grow,
float *gavals,
float *grhs,
INT *gperm,
INT *ginvp,
INT lN,
INT **lcolptr,
INT **lrow,
float **lavals,
float **lrhs,
INT **lperm,
INT **linvp,
INT *loc2glob)

d_csc2cscd

void d_csc2cscd(INT gN,
INT *gcolptr,
INT *grow,
double *gavals,
double *grhs,
INT *gperm,
INT *ginvp,
INT lN,
INT **lcolptr,
INT **lrow,
double **lavals,
double **lrhs,
INT **lperm,
INT **linvp,
INT *loc2glob)

c_csc2cscd

void c_csc2cscd(INT gN,
INT *gcolptr,
INT *grow,
float complex *gavals,
float complex *grhs,
INT *gperm,
INT *ginvp,
INT lN,
INT **lcolptr,
INT **lrow,
float complex **lavals,
float complex **lrhs,
INT **lperm,
INT **linvp,
INT *loc2glob)

z_csc2cscd

void z_csc2cscd(INT gN,
INT *gcolptr,
INT *grow,
double complex *gavals,
double complex *grhs,
INT *gperm,
INT *ginvp,
INT lN,
INT **lcolptr,
INT **lrow,
double complex **lavals,
double complex **lrhs,
INT **lperm,
INT **linvp,
INT *loc2glob)

cscd2csc

void cscd2csc(INT lN,
INT *lcolptr,
INT *lrow,
FLOAT *lavals,
FLOAT *lrhs,
INT *lperm,
INT *linvp,
INT *gN,
INT **gcolptr,
INT **grow,
FLOAT **gavals,
FLOAT **grhs,
INT **gperm,
INT **ginvp,
INT *loc2glob,
MPI_Comm pastix_comm)

Transform a cscd to a csc. colptr2, row2, avals2, rhs2, perm2, invp2 are allocated here.

Parameters

lNnumber of local column.
lcolptrstarting index of each local column in row and avals. lrow _ row number of each local element.
lavalsvalues of each local element.
lrhslocal part of the right hand side.
lpermlocal part of the permutation tabular.
linvplocal part of the reverse permutation tabular.
gNglobal number of columns (output).
gcolptrstarting index of each column in row2 and avals2 (output).
growrow number of each element (output).
gavalsvalues of each element (output).
grhsglobal right hand side (output).
gpermglobal permutation tabular (output).
ginvpglobal reverse permutation tabular (output).
loc2globglobal number of each local column.
pastix_commPaStiX MPI communicator.

s_cscd2csc

void s_cscd2csc(INT lN,
INT *lcolptr,
INT *lrow,
float *lavals,
float *lrhs,
INT *lperm,
INT *linvp,
INT *gN,
INT **gcolptr,
INT **grow,
float **gavals,
float **grhs,
INT **gperm,
INT **ginvp,
INT *loc2glob,
MPI_Comm pastix_comm)

d_cscd2csc

void d_cscd2csc(INT lN,
INT *lcolptr,
INT *lrow,
double *lavals,
double *lrhs,
INT *lperm,
INT *linvp,
INT *gN,
INT **gcolptr,
INT **grow,
double **gavals,
double **grhs,
INT **gperm,
INT **ginvp,
INT *loc2glob,
MPI_Comm pastix_comm)

c_cscd2csc

void c_cscd2csc(INT lN,
INT *lcolptr,
INT *lrow,
float complex *lavals,
float complex *lrhs,
INT *lperm,
INT *linvp,
INT *gN,
INT **gcolptr,
INT **grow,
float complex **gavals,
float complex **grhs,
INT **gperm,
INT **ginvp,
INT *loc2glob,
MPI_Comm pastix_comm)

z_cscd2csc

void z_cscd2csc(INT lN,
INT *lcolptr,
INT *lrow,
double complex *lavals,
double complex *lrhs,
INT *lperm,
INT *linvp,
INT *gN,
INT **gcolptr,
INT **grow,
double complex **gavals,
double complex **grhs,
INT **gperm,
INT **ginvp,
INT *loc2glob,
MPI_Comm pastix_comm)

cscd_redispatch

int cscd_redispatch(INT n,
INT *ia,
INT *ja,
FLOAT *a,
FLOAT *rhs,
INT *l2g,
INT dn,
INT **dia,
INT **dja,
FLOAT **da,
FLOAT **drhs,
INT *dl2g,
MPI_Comm comm)

Redistribute the first cscd into a new one using dl2g.

  • gather all new loc2globs on all processors.
  • allocate dia, dja and da.
  • Create new CSC for each processor and send it.
  • Merge all new CSC to the new local CSC with cscd_addlocal_int.

If communicator size is one, check that n = dn and l2g = dl2g and simply create a copy of the first cscd.

Parameters

nNumber of local columns
iaFirst cscd starting index of each column in ja and a
jaRow of each element in first CSCD
avalue of each cscd in first CSCD (can be NULL)
rhsright-hand-side member corresponding to the first CSCD (can be NULL)
l2glocal 2 global column numbers for first cscd
dnNumber of local columns
diaNew cscd starting index of each column in ja and a
djaRow of each element in new CSCD
davalue of each cscd in new CSCD
rhsright-hand-side member corresponding to the new CSCD
dl2glocal 2 global column numbers for new cscd
commMPI communicator

Returns

EXIT_SUCCESSIf all goes well
EXIT_FAILUREIf commsize = 1 and n != dn or l2g != dl2g.

s_cscd_redispatch

int s_cscd_redispatch(INT n,
INT *ia,
INT *ja,
float *a,
float *rhs,
INT *l2g,
INT dn,
INT **dia,
INT **dja,
float **da,
float **drhs,
INT *dl2g,
MPI_Comm comm)

d_cscd_redispatch

int d_cscd_redispatch(INT n,
INT *ia,
INT *ja,
double *a,
double *rhs,
INT *l2g,
INT dn,
INT **dia,
INT **dja,
double **da,
double **drhs,
INT *dl2g,
MPI_Comm comm)

c_cscd_redispatch

int c_cscd_redispatch(INT n,
INT *ia,
INT *ja,
float complex *a,
float complex *rhs,
INT *l2g,
INT dn,
INT **dia,
INT **dja,
float complex **da,
float complex **drhs,
INT *dl2g,
MPI_Comm comm)

z_cscd_redispatch

int z_cscd_redispatch(INT n,
INT *ia,
INT *ja,
double complex *a,
double complex *rhs,
INT *l2g,
INT dn,
INT **dia,
INT **dja,
double complex **da,
double complex **drhs,
INT *dl2g,
MPI_Comm comm)

cscd_save

int cscd_save(INT n,
INT *ia,
INT *ja,
FLOAT *a,
FLOAT *rhs,
INT *l2g,
int dof,
const char *filename,
MPI_Comm comm)

save a distributed csc to disk. files are called $(filename) and $(filename)$(RANK) if filename is NULL then filename = cscd_matrix.

file filename contains the number of processors/files on first line.  Then each line contain the name of each file (here $(filename)$(RANK)).

Parameters

nNumber of local columns
iaFirst cscd starting index of each column in ja and a
jaRow of each element in first CSCD
avalue of each cscd in first CSCD (can be NULL)
rhsRight hand side.
l2glocal 2 global column numbers for first cscd
dofNumber of degrees of freedom
filenamename of the files.
commMPI communicator

s_cscd_save

int s_cscd_save(INT n,
INT *ia,
INT *ja,
float *a,
float *rhs,
INT *l2g,
int dof,
const char *filename,
MPI_Comm comm)

d_cscd_save

int d_cscd_save(INT n,
INT *ia,
INT *ja,
double *a,
double *rhs,
INT *l2g,
int dof,
const char *filename,
MPI_Comm comm)

c_cscd_save

int c_cscd_save(INT n,
INT *ia,
INT *ja,
float complex *a,
float complex *rhs,
INT *l2g,
int dof,
const char *filename,
MPI_Comm comm)

z_cscd_save

int z_cscd_save(INT n,
INT *ia,
INT *ja,
double complex *a,
double complex *rhs,
INT *l2g,
int dof,
const char *filename,
MPI_Comm comm)

cscd_load

int cscd_load(INT *n,
INT **ia,
INT **ja,
FLOAT **a,
FLOAT **rhs,
INT **l2g,
const char *filename,
MPI_Comm mpi_comm)

Loads a distributed csc from disk. if filename is NULL then filename = cscd_matrix.

Parameters

nNumber of local columns
iaFirst cscd starting index of each column in ja and a
jaRow of each element in first CSCD
avalue of each cscd in first CSCD (can be NULL)
rhsRight hand side.
l2glocal 2 global column numbers for first cscd
filenamename of the files.
commMPI communicator

s_cscd_load

int s_cscd_load(INT *n,
INT **ia,
INT **ja,
float **a,
float **rhs,
INT **l2g,
const char *filename,
MPI_Comm mpi_comm)

d_cscd_load

int d_cscd_load(INT *n,
INT **ia,
INT **ja,
double **a,
double **rhs,
INT **l2g,
const char *filename,
MPI_Comm mpi_comm)

c_cscd_load

int c_cscd_load(INT *n,
INT **ia,
INT **ja,
float complex **a,
float complex **rhs,
INT **l2g,
const char *filename,
MPI_Comm mpi_comm)

z_cscd_load

int z_cscd_load(INT *n,
INT **ia,
INT **ja,
double complex **a,
double complex **rhs,
INT **l2g,
const char *filename,
MPI_Comm mpi_comm)
enum CSCD_OPERATIONS
Operation when adding CSCD
enum CSC_DISPATCH_OP
Operation when dispatching the csc into a cscd
void csc_dispatch(INT gN,
INT *gcolptr,
INT *grow,
FLOAT *gavals,
FLOAT *grhs,
INT *gperm,
INT *ginvp,
INT *lN,
INT **lcolptr,
INT **lrow,
FLOAT **lavals,
FLOAT **lrhs,
INT **lperm,
INT **loc2glob,
int dispatch,
MPI_Comm pastix_comm)
Distribute a CSC to a CSCD
void s_csc_dispatch(INT gN,
INT *gcolptr,
INT *grow,
float *gavals,
float *grhs,
INT *gperm,
INT *ginvp,
INT *lN,
INT **lcolptr,
INT **lrow,
float **lavals,
float **lrhs,
INT **lperm,
INT **loc2glob,
int dispatch,
MPI_Comm pastix_comm)
void d_csc_dispatch(INT gN,
INT *gcolptr,
INT *grow,
double *gavals,
double *grhs,
INT *gperm,
INT *ginvp,
INT *lN,
INT **lcolptr,
INT **lrow,
double **lavals,
double **lrhs,
INT **lperm,
INT **loc2glob,
int dispatch,
MPI_Comm pastix_comm)
void c_csc_dispatch(INT gN,
INT *gcolptr,
INT *grow,
float complex *gavals,
float complex *grhs,
INT *gperm,
INT *ginvp,
INT *lN,
INT **lcolptr,
INT **lrow,
float complex **lavals,
float complex **lrhs,
INT **lperm,
INT **loc2glob,
int dispatch,
MPI_Comm pastix_comm)
void z_csc_dispatch(INT gN,
INT *gcolptr,
INT *grow,
double complex *gavals,
double complex *grhs,
INT *gperm,
INT *ginvp,
INT *lN,
INT **lcolptr,
INT **lrow,
double complex **lavals,
double complex **lrhs,
INT **lperm,
INT **loc2glob,
int dispatch,
MPI_Comm pastix_comm)
INT csc_cyclic_distribution(INT column,
INT columnnbr,
MPI_Comm pastix_comm)
Distribute the CSC cyclicaly.
INT Scsc_cyclic_distribution(INT column,
INT columnnbr,
MPI_Comm pastix_comm)
INT Dcsc_cyclic_distribution(INT column,
INT columnnbr,
MPI_Comm pastix_comm)
INT Ccsc_cyclic_distribution(INT column,
INT columnnbr,
MPI_Comm pastix_comm)
INT Zcsc_cyclic_distribution(INT column,
INT columnnbr,
MPI_Comm pastix_comm)
INT csc_simple_distribution(INT column,
INT columnnbr,
MPI_Comm pastix_comm)
Distribute the CSC.
INT s_csc_simple_distribution(INT column,
INT columnnbr,
MPI_Comm pastix_comm)
INT d_csc_simple_distribution(INT column,
INT columnnbr,
MPI_Comm pastix_comm)
INT c_csc_simple_distribution(INT column,
INT columnnbr,
MPI_Comm pastix_comm)
INT z_csc_simple_distribution(INT column,
INT columnnbr,
MPI_Comm pastix_comm)
int cscd_symgraph(INT n,
INT *ia,
INT *ja,
FLOAT *a,
INT *newn,
INT **newia,
INT **newja,
FLOAT **newa,
INT *l2g,
MPI_Comm comm)
Check if the CSCD graph is symetric.
int s_cscd_symgraph(INT n,
INT *ia,
INT *ja,
float *a,
INT *newn,
INT **newia,
INT **newja,
float **newa,
INT *l2g,
MPI_Comm comm)
int d_cscd_symgraph(INT n,
INT *ia,
INT *ja,
double *a,
INT *newn,
INT **newia,
INT **newja,
double **newa,
INT *l2g,
MPI_Comm comm)
int c_cscd_symgraph(INT n,
INT *ia,
INT *ja,
float complex *a,
INT *newn,
INT **newia,
INT **newja,
float complex **newa,
INT *l2g,
MPI_Comm comm)
int z_cscd_symgraph(INT n,
INT *ia,
INT *ja,
double complex *a,
INT *newn,
INT **newia,
INT **newja,
double complex **newa,
INT *l2g,
MPI_Comm comm)
int cscd_addlocal(INT ,
INT * ia ,
INT * ja ,
FLOAT * ,
INT *l2g,
INT addn,
INT *addia,
INT *addja,
FLOAT *adda,
INT *addl2g,
INT *newn,
INT **newia,
INT **newja,
FLOAT **newa,
CSCD_OPERATIONS_t OP,
int dof)
Add second cscd to first cscd into third cscd (unallocated)
int s_cscd_addlocal(INT ,
INT * ia ,
INT * ja ,
float * ,
INT *l2g,
INT addn,
INT *addia,
INT *addja,
float *adda,
INT *addl2g,
INT *newn,
INT **newia,
INT **newja,
float **newa,
CSCD_OPERATIONS_t OP,
int dof)
int d_cscd_addlocal(INT ,
INT * ia ,
INT * ja ,
double * ,
INT *l2g,
INT addn,
INT *addia,
INT *addja,
double *adda,
INT *addl2g,
INT *newn,
INT **newia,
INT **newja,
double **newa,
CSCD_OPERATIONS_t OP,
int dof)
int c_cscd_addlocal(INT ,
INT * ia ,
INT *ja,
float complex * ,
INT *l2g,
INT addn,
INT *addia,
INT *addja,
float complex *adda,
INT *addl2g,
INT *newn,
INT **newia,
INT **newja,
float complex **newa,
CSCD_OPERATIONS_t OP,
int dof)
int z_cscd_addlocal(INT ,
INT * ia ,
INT *ja,
double complex * ,
INT *l2g,
INT addn,
INT *addia,
INT *addja,
double complex *adda,
INT *addl2g,
INT *newn,
INT **newia,
INT **newja,
double complex **newa,
CSCD_OPERATIONS_t OP,
int dof)
void csc2cscd(INT gN,
INT *gcolptr,
INT *grow,
FLOAT *gavals,
FLOAT *grhs,
INT *gperm,
INT *ginvp,
INT lN,
INT **lcolptr,
INT **lrow,
FLOAT **lavals,
FLOAT **lrhs,
INT **lperm,
INT **linvp,
INT *loc2glob)
Transform a csc to a cscd.
void s_csc2cscd(INT gN,
INT *gcolptr,
INT *grow,
float *gavals,
float *grhs,
INT *gperm,
INT *ginvp,
INT lN,
INT **lcolptr,
INT **lrow,
float **lavals,
float **lrhs,
INT **lperm,
INT **linvp,
INT *loc2glob)
void d_csc2cscd(INT gN,
INT *gcolptr,
INT *grow,
double *gavals,
double *grhs,
INT *gperm,
INT *ginvp,
INT lN,
INT **lcolptr,
INT **lrow,
double **lavals,
double **lrhs,
INT **lperm,
INT **linvp,
INT *loc2glob)
void c_csc2cscd(INT gN,
INT *gcolptr,
INT *grow,
float complex *gavals,
float complex *grhs,
INT *gperm,
INT *ginvp,
INT lN,
INT **lcolptr,
INT **lrow,
float complex **lavals,
float complex **lrhs,
INT **lperm,
INT **linvp,
INT *loc2glob)
void z_csc2cscd(INT gN,
INT *gcolptr,
INT *grow,
double complex *gavals,
double complex *grhs,
INT *gperm,
INT *ginvp,
INT lN,
INT **lcolptr,
INT **lrow,
double complex **lavals,
double complex **lrhs,
INT **lperm,
INT **linvp,
INT *loc2glob)
void cscd2csc(INT lN,
INT *lcolptr,
INT *lrow,
FLOAT *lavals,
FLOAT *lrhs,
INT *lperm,
INT *linvp,
INT *gN,
INT **gcolptr,
INT **grow,
FLOAT **gavals,
FLOAT **grhs,
INT **gperm,
INT **ginvp,
INT *loc2glob,
MPI_Comm pastix_comm)
Transform a cscd to a csc.
void s_cscd2csc(INT lN,
INT *lcolptr,
INT *lrow,
float *lavals,
float *lrhs,
INT *lperm,
INT *linvp,
INT *gN,
INT **gcolptr,
INT **grow,
float **gavals,
float **grhs,
INT **gperm,
INT **ginvp,
INT *loc2glob,
MPI_Comm pastix_comm)
void d_cscd2csc(INT lN,
INT *lcolptr,
INT *lrow,
double *lavals,
double *lrhs,
INT *lperm,
INT *linvp,
INT *gN,
INT **gcolptr,
INT **grow,
double **gavals,
double **grhs,
INT **gperm,
INT **ginvp,
INT *loc2glob,
MPI_Comm pastix_comm)
void c_cscd2csc(INT lN,
INT *lcolptr,
INT *lrow,
float complex *lavals,
float complex *lrhs,
INT *lperm,
INT *linvp,
INT *gN,
INT **gcolptr,
INT **grow,
float complex **gavals,
float complex **grhs,
INT **gperm,
INT **ginvp,
INT *loc2glob,
MPI_Comm pastix_comm)
void z_cscd2csc(INT lN,
INT *lcolptr,
INT *lrow,
double complex *lavals,
double complex *lrhs,
INT *lperm,
INT *linvp,
INT *gN,
INT **gcolptr,
INT **grow,
double complex **gavals,
double complex **grhs,
INT **gperm,
INT **ginvp,
INT *loc2glob,
MPI_Comm pastix_comm)
int cscd_redispatch(INT n,
INT *ia,
INT *ja,
FLOAT *a,
FLOAT *rhs,
INT *l2g,
INT dn,
INT **dia,
INT **dja,
FLOAT **da,
FLOAT **drhs,
INT *dl2g,
MPI_Comm comm)
Redistribute the first cscd into a new one using dl2g.
int s_cscd_redispatch(INT n,
INT *ia,
INT *ja,
float *a,
float *rhs,
INT *l2g,
INT dn,
INT **dia,
INT **dja,
float **da,
float **drhs,
INT *dl2g,
MPI_Comm comm)
int d_cscd_redispatch(INT n,
INT *ia,
INT *ja,
double *a,
double *rhs,
INT *l2g,
INT dn,
INT **dia,
INT **dja,
double **da,
double **drhs,
INT *dl2g,
MPI_Comm comm)
int c_cscd_redispatch(INT n,
INT *ia,
INT *ja,
float complex *a,
float complex *rhs,
INT *l2g,
INT dn,
INT **dia,
INT **dja,
float complex **da,
float complex **drhs,
INT *dl2g,
MPI_Comm comm)
int z_cscd_redispatch(INT n,
INT *ia,
INT *ja,
double complex *a,
double complex *rhs,
INT *l2g,
INT dn,
INT **dia,
INT **dja,
double complex **da,
double complex **drhs,
INT *dl2g,
MPI_Comm comm)
int cscd_save(INT n,
INT *ia,
INT *ja,
FLOAT *a,
FLOAT *rhs,
INT *l2g,
int dof,
const char *filename,
MPI_Comm comm)
save a distributed csc to disk.
int s_cscd_save(INT n,
INT *ia,
INT *ja,
float *a,
float *rhs,
INT *l2g,
int dof,
const char *filename,
MPI_Comm comm)
int d_cscd_save(INT n,
INT *ia,
INT *ja,
double *a,
double *rhs,
INT *l2g,
int dof,
const char *filename,
MPI_Comm comm)
int c_cscd_save(INT n,
INT *ia,
INT *ja,
float complex *a,
float complex *rhs,
INT *l2g,
int dof,
const char *filename,
MPI_Comm comm)
int z_cscd_save(INT n,
INT *ia,
INT *ja,
double complex *a,
double complex *rhs,
INT *l2g,
int dof,
const char *filename,
MPI_Comm comm)
int cscd_load(INT *n,
INT **ia,
INT **ja,
FLOAT **a,
FLOAT **rhs,
INT **l2g,
const char *filename,
MPI_Comm mpi_comm)
Loads a distributed csc from disk.
int s_cscd_load(INT *n,
INT **ia,
INT **ja,
float **a,
float **rhs,
INT **l2g,
const char *filename,
MPI_Comm mpi_comm)
int d_cscd_load(INT *n,
INT **ia,
INT **ja,
double **a,
double **rhs,
INT **l2g,
const char *filename,
MPI_Comm mpi_comm)
int c_cscd_load(INT *n,
INT **ia,
INT **ja,
float complex **a,
float complex **rhs,
INT **l2g,
const char *filename,
MPI_Comm mpi_comm)
int z_cscd_load(INT *n,
INT **ia,
INT **ja,
double complex **a,
double complex **rhs,
INT **l2g,
const char *filename,
MPI_Comm mpi_comm)
Add second cscd to first cscd into third cscd (unallocated) Only adds columns from the second CSCD which belongs to the first one.
Close