PaStiX Handbook  6.3.2
pastix.h File Reference
#include "pastix/config.h"
#include <spm.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <assert.h>
#include <math.h>
#include "pastix/api.h"
#include "pastix/datatypes.h"
#include "pastix/order.h"

Go to the source code of this file.

Functions

BEGIN_C_DECLS int pastix (pastix_data_t **pastix_data, PASTIX_Comm pastix_comm, pastix_int_t n, pastix_int_t *colptr, pastix_int_t *rowptr, void *values, pastix_int_t *perm, pastix_int_t *invp, void *B, pastix_int_t nrhs, pastix_int_t *iparm, double *dparm)
 Main function for compatibility with former releases. More...
 
void pastixInitParam (pastix_int_t *iparm, double *dparm)
 Initialize the iparm and dparm arrays to their default values. More...
 
void pastixInit (pastix_data_t **pastix_data, PASTIX_Comm pastix_comm, pastix_int_t *iparm, double *dparm)
 Initialize the solver instance. More...
 
void pastixInitWithAffinity (pastix_data_t **pastix_data, PASTIX_Comm pastix_comm, pastix_int_t *iparm, double *dparm, const int *bindtab)
 Initialize the solver instance with a bintab array to specify the thread binding. More...
 
void pastixFinalize (pastix_data_t **pastix_data)
 Finalize the solver instance. More...
 
int pastix_task_analyze (pastix_data_t *pastix_data, const spmatrix_t *spm)
 Perform all the preprocessing steps: ordering, symbolic factorization, reordering, proportionnal mapping, ... More...
 
int pastix_task_numfact (pastix_data_t *pastix_data, spmatrix_t *spm)
 Perform all the numerical factorization steps: fill the internal block CSC and the solver matrix structures, then apply the factorization step. More...
 
int pastix_task_solve (pastix_data_t *pastix_data, pastix_int_t m, pastix_int_t nrhs, void *B, pastix_int_t ldb)
 Solve the given problem. More...
 
int pastix_task_refine (pastix_data_t *pastix_data, pastix_int_t n, pastix_int_t nrhs, void *B, pastix_int_t ldb, void *X, pastix_int_t ldx)
 Perform iterative refinement. More...
 
int pastix_task_solve_and_refine (pastix_data_t *pastix_data, pastix_int_t n, pastix_int_t nrhs, void *B, pastix_int_t ldb, void *X, pastix_int_t ldx)
 Performs solve and iterative refinement without unnecessary permutations. More...
 
int pastix_subtask_order (pastix_data_t *pastix_data, const spmatrix_t *spm, pastix_order_t *myorder)
 Computes the ordering of the given graph in parameters. More...
 
int pastix_subtask_symbfact (pastix_data_t *pastix_data)
 Computes the symbolic factorization step. More...
 
int pastix_subtask_reordering (pastix_data_t *pastix_data)
 Apply the reordering step to compact off-diagonal blocks. More...
 
int pastix_subtask_blend (pastix_data_t *pastix_data)
 Compute the proportional mapping and the final solver structure. More...
 
int pastix_subtask_spm2bcsc (pastix_data_t *pastix_data, spmatrix_t *spm)
 Fill the internal block CSC structure. More...
 
int pastix_subtask_bcsc2ctab (pastix_data_t *pastix_data)
 Fill the internal solver matrix structure. More...
 
int pastix_subtask_sopalin (pastix_data_t *pastix_data)
 Factorize the given problem using Cholesky or LU decomposition. More...
 
int pastix_subtask_applyorder (pastix_data_t *pastix_data, pastix_dir_t dir, pastix_int_t m, pastix_int_t n, void *B, pastix_int_t ldb, pastix_rhs_t Bp)
 Apply a permutation on the right-and-side vector before the solve step. More...
 
int pastix_subtask_trsm (pastix_data_t *pastix_data, pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, pastix_rhs_t b)
 Apply a triangular solve on the right-and-side vectors. More...
 
int pastix_subtask_diag (pastix_data_t *pastix_data, pastix_rhs_t b)
 Apply a diagonal operation on the right-and-side vectors. More...
 
int pastix_subtask_solve (pastix_data_t *pastix_data, pastix_rhs_t b)
 Solve the given problem without applying the permutation. More...
 
int pastix_subtask_refine (pastix_data_t *pastix_data, pastix_rhs_t b, pastix_rhs_t x)
 Perform the iterative refinement without apply the permutations. More...
 
int pastix_subtask_solve_adv (pastix_data_t *pastix_data, pastix_trans_t transA, pastix_rhs_t b)
 Solve the given problem without applying the permutation. More...
 
void pastixSetSchurUnknownList (pastix_data_t *pastix_data, pastix_int_t n, const pastix_int_t *list)
 Set the list of unknowns that belongs to the schur complement. More...
 
int pastixGetSchur (const pastix_data_t *pastix_data, void *S, pastix_int_t lds)
 Return the Schur complement. More...
 
int pastixRhsInit (pastix_rhs_t *rhs)
 Initialize an RHS data structure. More...
 
int pastixRhsFinalize (pastix_rhs_t rhs)
 Cleanup an RHS data structure. More...
 
int pastixRhsDoubletoSingle (const pastix_rhs_t dB, pastix_rhs_t sB)
 Reduces the precision of an RHS. More...
 
int pastixRhsSingleToDouble (const pastix_rhs_t sB, pastix_rhs_t dB)
 Increases the precision of an RHS. More...
 
int pastixRhsSchurGet (const pastix_data_t *pastix_data, pastix_int_t m, pastix_int_t n, pastix_rhs_t rhsB, void *B, pastix_int_t ldb)
 Get the vector in an RHS data structure. More...
 
int pastixRhsSchurSet (const pastix_data_t *pastix_data, pastix_int_t m, pastix_int_t n, void *B, pastix_int_t ldb, pastix_rhs_t rhsB)
 Set the vector in an RHS data structure. More...
 
void pastixExpand (const pastix_data_t *pastix_data, spmatrix_t *spm)
 Expand an spm structure and the already computed data structure associated if any. More...
 
int pastixGetDiag (const pastix_data_t *pastix_data, void *x, pastix_int_t incx)
 Return the diagonal of the matrix. More...
 
void pastixGetOptions (int argc, char **argv, pastix_int_t *iparm, double *dparm, int *check, int *scatter, spm_driver_t *driver, char **filename)
 PaStiX helper function to read command line options in examples. More...
 
void pastixDumpParam (const pastix_data_t *pastix_data)
 Dump the iparm and dparm parameters in a CSV file. More...
 
int pastixCheckParam (const pastix_int_t *iparm, const double *dparm)
 Check the values of iparm and dparm arrays. More...
 

Detailed Description

PaStiX main header file.

Version
6.3.2
Author
David Goudin
Francois Pellegrini
Gregoire Pichon
Mathieu Faverge
Pascal Henon
Pierre Ramet
Xavier Lacoste
Theophile Terraz
Tony Delarue
Date
2023-07-21

Definition in file pastix.h.

Function Documentation

◆ pastixExpand()

void pastixExpand ( const pastix_data_t pastix_data,
spmatrix_t *  spm 
)

Expand an spm structure and the already computed data structure associated if any.

Parameters
[in]pastix_dataThe pastix context in which the spm is used
[in]spmThe multi-dof sparse matrix to expand into a single dof sparse matrix. On exit, spm contains the expanded matrix. The compressed form of the matrix is destroyed.

Definition at line 506 of file pastix.c.

References pastix_data_s::ordemesh, pastixOrderCheck(), pastixOrderExpand(), pastixSymbolExpand(), pastix_data_s::steps, and pastix_data_s::symbmtx.