add a func (#646)
This PR adds a function to perform local transposition of ParCSR.
This commit is contained in:
parent
ac9d7d0d7b
commit
b58585e0f0
@ -925,6 +925,7 @@ HYPRE_Int hypre_ParCSRMatrixExtractBExtDeviceInit( hypre_ParCSRMatrix *B, hypre_
|
||||
hypre_CSRMatrix* hypre_ParCSRMatrixExtractBExtDeviceWait(void *request);
|
||||
hypre_CSRMatrix* hypre_ParCSRMatrixExtractBExtDevice( hypre_ParCSRMatrix *B, hypre_ParCSRMatrix *A,
|
||||
HYPRE_Int want_data );
|
||||
HYPRE_Int hypre_ParCSRMatrixLocalTranspose( hypre_ParCSRMatrix *A );
|
||||
HYPRE_Int hypre_ParCSRMatrixTranspose ( hypre_ParCSRMatrix *A, hypre_ParCSRMatrix **AT_ptr,
|
||||
HYPRE_Int data );
|
||||
HYPRE_Int hypre_ParCSRMatrixTransposeHost ( hypre_ParCSRMatrix *A, hypre_ParCSRMatrix **AT_ptr,
|
||||
|
||||
@ -2178,6 +2178,37 @@ hypre_ParCSRMatrixTranspose( hypre_ParCSRMatrix *A,
|
||||
return hypre_error_flag;
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------
|
||||
* hypre_ParCSRMatrixLocalTranspose
|
||||
*--------------------------------------------------------------------------*/
|
||||
HYPRE_Int
|
||||
hypre_ParCSRMatrixLocalTranspose( hypre_ParCSRMatrix *A )
|
||||
{
|
||||
if (!hypre_ParCSRMatrixDiagT(A))
|
||||
{
|
||||
hypre_CSRMatrix *A_diag = hypre_ParCSRMatrixDiag(A);
|
||||
if (A_diag)
|
||||
{
|
||||
hypre_CSRMatrix *AT_diag = NULL;
|
||||
hypre_CSRMatrixTranspose(A_diag, &AT_diag, 1);
|
||||
hypre_ParCSRMatrixDiagT(A) = AT_diag;
|
||||
}
|
||||
}
|
||||
|
||||
if (!hypre_ParCSRMatrixOffdT(A))
|
||||
{
|
||||
hypre_CSRMatrix *A_offd = hypre_ParCSRMatrixOffd(A);
|
||||
if (A_offd)
|
||||
{
|
||||
hypre_CSRMatrix *AT_offd = NULL;
|
||||
hypre_CSRMatrixTranspose(A_offd, &AT_offd, 1);
|
||||
hypre_ParCSRMatrixOffdT(A) = AT_offd;
|
||||
}
|
||||
}
|
||||
|
||||
return hypre_error_flag;
|
||||
}
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
* generate a parallel spanning tree (for Maxwell Equation)
|
||||
* G_csr is the node to edge connectivity matrix
|
||||
|
||||
@ -292,6 +292,7 @@ HYPRE_Int hypre_ParCSRMatrixExtractBExtDeviceInit( hypre_ParCSRMatrix *B, hypre_
|
||||
hypre_CSRMatrix* hypre_ParCSRMatrixExtractBExtDeviceWait(void *request);
|
||||
hypre_CSRMatrix* hypre_ParCSRMatrixExtractBExtDevice( hypre_ParCSRMatrix *B, hypre_ParCSRMatrix *A,
|
||||
HYPRE_Int want_data );
|
||||
HYPRE_Int hypre_ParCSRMatrixLocalTranspose( hypre_ParCSRMatrix *A );
|
||||
HYPRE_Int hypre_ParCSRMatrixTranspose ( hypre_ParCSRMatrix *A, hypre_ParCSRMatrix **AT_ptr,
|
||||
HYPRE_Int data );
|
||||
HYPRE_Int hypre_ParCSRMatrixTransposeHost ( hypre_ParCSRMatrix *A, hypre_ParCSRMatrix **AT_ptr,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user