Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
- PETSC_NULL is deprecated by PETSC_NULLPTR
- PETSC_IGNORE is the same as PETSC_NULLPTR or PETSC_NULL so use PETSC_IGNORE
  • Loading branch information
prudhomm committed Apr 2, 2023
1 parent ee10358 commit 6e9ec3b
Show file tree
Hide file tree
Showing 8 changed files with 68 additions and 62 deletions.
2 changes: 2 additions & 0 deletions feelpp/feel/feelalg/functionspetsc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,9 @@ PetscConvertKSPReasonToString( KSPConvergedReason reason )
case KSP_CONVERGED_ITS : return "CONVERGED_ITS";
case KSP_CONVERGED_CG_NEG_CURVE : return "CONVERGED_CG_NEG_CURVE";
case KSP_CONVERGED_CG_CONSTRAINED : return "CONVERGED_CG_CONSTRAINED";
#if PETSC_VERSION_LESS_THAN( 3, 19, 0 )
case KSP_CONVERGED_STEP_LENGTH : return "CONVERGED_STEP_LENGTH";
#endif
case KSP_CONVERGED_HAPPY_BREAKDOWN : return "CONVERGED_HAPPY_BREAKDOWN";

/* diverged */
Expand Down
24 changes: 12 additions & 12 deletions feelpp/feel/feelalg/matrixpetsc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,7 @@ void MatrixPetsc<T>::init ( const size_type m,
{
// Create matrix. Revisit later to do preallocation and make more efficient
ierr = MatCreateSeqAIJ ( this->comm(), m_global, n_global,
n_nz, PETSC_NULL, &M_mat );
n_nz, PETSC_IGNORE, &M_mat );
CHKERRABORT( this->comm(),ierr );


Expand All @@ -271,13 +271,13 @@ void MatrixPetsc<T>::init ( const size_type m,
{
#if PETSC_VERSION_LESS_THAN(3,3,0)
ierr = MatCreateMPIAIJ ( this->comm(), m_local, n_local, m_global, n_global,
PETSC_DECIDE, PETSC_NULL, PETSC_DECIDE, PETSC_NULL, &M_mat );
PETSC_DECIDE, PETSC_IGNORE, PETSC_DECIDE, PETSC_IGNORE, &M_mat );
#else
ierr = MatCreateAIJ ( this->comm(), m_local, n_local, m_global, n_global,
PETSC_DECIDE, PETSC_NULL, PETSC_DECIDE, PETSC_NULL, &M_mat );
PETSC_DECIDE, PETSC_IGNORE, PETSC_DECIDE, PETSC_IGNORE, &M_mat );
#endif
//ierr = MatCreateMPIAIJ (this->comm(), m_local, n_local, m_global, n_global,
///n_nz, PETSC_NULL, n_oz, PETSC_NULL, &M_mat);
///n_nz, PETSC_IGNORE, n_oz, PETSC_IGNORE, &M_mat);
//MatCreate(this->comm(),m_local,n_local,m_global,n_global, &M_mat);
//MatCreate(this->comm(),PETSC_DECIDE,PETSC_DECIDE,m_global,n_global, &M_mat);
//MatSetSizes(M_mat,m_local,n_local,m_global,n_global);
Expand Down Expand Up @@ -598,7 +598,7 @@ void MatrixPetsc<T>::updatePCFieldSplit( PC & pc )
for ( uint i = 0 ; i < M_petscIS.size(); ++i )
{
#if (PETSC_VERSION_MAJOR == 3) && (PETSC_VERSION_MINOR >= 2)
ierr=PCFieldSplitSetIS( pc,PETSC_NULL,M_petscIS[i] );
ierr=PCFieldSplitSetIS( pc,PETSC_IGNORE,M_petscIS[i] );
#else
ierr=PCFieldSplitSetIS( pc,M_petscIS[i] );
#endif
Expand Down Expand Up @@ -1826,7 +1826,7 @@ MatrixPetsc<T>::zeroRows( std::vector<int> const& rows,
{
LOG(INFO) << "MatrixPETSc:: zeroRows seq unsymmetric";
#if (PETSC_VERSION_MAJOR >= 3) && (PETSC_VERSION_MINOR >= 2)
MatZeroRows( M_mat, rows.size(), rows.data(), value_on_diagonal,PETSC_NULL,PETSC_NULL );
MatZeroRows( M_mat, rows.size(), rows.data(), value_on_diagonal,PETSC_IGNORE,PETSC_IGNORE );
#else
MatZeroRows( M_mat, rows.size(), rows.data(), value_on_diagonal );
#endif
Expand Down Expand Up @@ -2617,13 +2617,13 @@ void MatrixPetscMPI<T>::init( const size_type /*m*/,
dnzOffProc );

if ( n_dnzOffProc==0 )
dnzOffProc = PETSC_NULL;
dnzOffProc = PETSC_IGNORE;

#if PETSC_VERSION_LESS_THAN(3,3,0)
ierr = MatCreateMPIAIJ ( this->comm(),
m_local, n_local,
m_global, n_global,
/*PETSC_DECIDE*//*n_dnz*/0, /*PETSC_NULL*/dnz,
/*PETSC_DECIDE*//*n_dnz*/0, /*PETSC_IGNORE*/dnz,
/*PETSC_DECIDE*/0/*n_dnzOffProc*/, dnzOffProc,
//&M_matttt);
&this->M_mat);
Expand All @@ -2632,7 +2632,7 @@ void MatrixPetscMPI<T>::init( const size_type /*m*/,
ierr = MatCreateAIJ ( this->comm(),
m_local, n_local,
m_global, n_global,
/*PETSC_DECIDE*//*n_dnz*/0, /*PETSC_NULL*/dnz,
/*PETSC_DECIDE*//*n_dnz*/0, /*PETSC_IGNORE*/dnz,
/*PETSC_DECIDE*/0/*n_dnzOffProc*/, dnzOffProc,
//&M_matttt);
&this->M_mat);
Expand Down Expand Up @@ -3036,7 +3036,7 @@ MatrixPetscMPI<T>::zero()
else
row=it->first;//this->mapRow().mapGlobalClusterToGlobalProcess()[it->first-this->mapRow().firstDofGlobalCluster()];

//MatZeroRowsLocal( this->mat(), rows.size(), rows.data(), 1.0, PETSC_NULL, PETSC_NULL);
//MatZeroRowsLocal( this->mat(), rows.size(), rows.data(), 1.0, PETSC_IGNORE, PETSC_IGNORE);

//this->mapRow()->firstDofGlobalCluster( this->comm().rank() );
auto it2=it->second.template get<2>().begin();
Expand Down Expand Up @@ -3079,7 +3079,7 @@ MatrixPetscMPI<T>::zero()
else
row=it->first;//this->mapRow().mapGlobalClusterToGlobalProcess()[it->first-this->mapRow().firstDofGlobalCluster()];

//MatZeroRowsLocal( this->mat(), rows.size(), rows.data(), 1.0, PETSC_NULL, PETSC_NULL);
//MatZeroRowsLocal( this->mat(), rows.size(), rows.data(), 1.0, PETSC_IGNORE, PETSC_IGNORE);

//this->mapRow()->firstDofGlobalCluster( this->comm().rank() );
auto it2=it->second.template get<2>().begin();
Expand Down Expand Up @@ -3177,7 +3177,7 @@ MatrixPetscMPI<T>::zero( size_type /*start1*/, size_type /*stop1*/, size_type /*
PetscInt row = it->first;


//MatZeroRowsLocal( this->mat(), rows.size(), rows.data(), 1.0, PETSC_NULL, PETSC_NULL);
//MatZeroRowsLocal( this->mat(), rows.size(), rows.data(), 1.0, PETSC_IGNORE, PETSC_IGNORE);

//this->mapRow()->firstDofGlobalCluster( this->comm().rank() );
auto it2=it->second.template get<2>().begin();
Expand Down
20 changes: 12 additions & 8 deletions feelpp/feel/feelalg/preconditionerpetsc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,11 @@ PetscErrorCode __feel_petsc_prec_ksp_monitor(KSP ksp,PetscInt it,PetscReal rnorm
PetscObjectGetComm((PetscObject)ksp,&comm);
PetscViewerAndFormat *vf;
PetscViewerAndFormatCreate( (comm == PETSC_COMM_SELF)? PETSC_VIEWER_STDOUT_SELF : PETSC_VIEWER_STDOUT_WORLD,PETSC_VIEWER_DEFAULT,&vf);
#if PETSC_VERSION_GREATER_OR_EQUAL_THAN(3,15,0)
int ierr = KSPMonitorResidual( ksp,it,rnorm, vf );
#elif
int ierr = KSPMonitorDefault( ksp,it,rnorm, vf );
#endif
PetscViewerAndFormatDestroy( &vf );
#endif
return 0;
Expand Down Expand Up @@ -1437,17 +1441,17 @@ ConfigureKSP::run( KSP& ksp ) const
if ( M_showMonitor )
{
#if PETSC_VERSION_GREATER_OR_EQUAL_THAN(3,7,0)
this->check( KSPMonitorSet( ksp,__feel_petsc_prec_ksp_monitor,(void*) this,PETSC_NULL ) );
this->check( KSPMonitorSet( ksp,__feel_petsc_prec_ksp_monitor,(void*) this,PETSC_IGNORE ) );
#else
this->check( KSPMonitorSet( ksp,KSPMonitorDefault,PETSC_NULL,PETSC_NULL ) );
this->check( KSPMonitorSet( ksp,KSPMonitorDefault,PETSC_IGNORE,PETSC_IGNORE ) );
#endif
}

// constant null space
if ( M_constantNullSpace )
{
MatNullSpace nullsp;
this->check( MatNullSpaceCreate( PETSC_COMM_WORLD, PETSC_TRUE, 0, PETSC_NULL, &nullsp ) );
this->check( MatNullSpaceCreate( PETSC_COMM_WORLD, PETSC_TRUE, 0, PETSC_IGNORE, &nullsp ) );
#if PETSC_VERSION_LESS_THAN( 3,5,4 )
this->check( KSPSetNullSpace( ksp, nullsp ) );
#else
Expand Down Expand Up @@ -2032,12 +2036,12 @@ ConfigureSubPC::ConfigureSubPC( PC& pc, PreconditionerPetsc<double> * precFeel,
// To store array of local KSP contexts on this processor
KSP* subksps;
if ( M_subPCfromPCtype == "block_jacobi" || M_subPCfromPCtype == "bjacobi" )
this->check( PCBJacobiGetSubKSP( pc, &M_nBlock, PETSC_NULL, &subksps ) );
this->check( PCBJacobiGetSubKSP( pc, &M_nBlock, PETSC_IGNORE, &subksps ) );
else if ( M_subPCfromPCtype == "asm" )
this->check( PCASMGetSubKSP( pc, &M_nBlock, PETSC_NULL, &subksps ) );
this->check( PCASMGetSubKSP( pc, &M_nBlock, PETSC_IGNORE, &subksps ) );
#if PETSC_VERSION_GREATER_OR_EQUAL_THAN( 3,2,0 )
else if ( M_subPCfromPCtype == "gasm" )
this->check( PCGASMGetSubKSP( pc, &M_nBlock, PETSC_NULL, &subksps ) );
this->check( PCGASMGetSubKSP( pc, &M_nBlock, PETSC_IGNORE, &subksps ) );
#endif
else CHECK( false ) << "invalid pctype " << M_subPCfromPCtype << "\n";

Expand Down Expand Up @@ -2110,7 +2114,7 @@ ConfigurePCML::run( PC& pc )
#if 0
// Sets the number of levels to use with MG.
// Must be called before any other MG routine
this->check( PCMGSetLevels( pc, M_nLevels, PETSC_NULL) );
this->check( PCMGSetLevels( pc, M_nLevels, PETSC_IGNORE) );
if ( M_mgType=="multiplicative" ) this->check( PCMGSetType( pc, PC_MG_MULTIPLICATIVE ) );
if ( M_mgType=="additive" ) this->check( PCMGSetType( pc, PC_MG_ADDITIVE ) );
if ( M_mgType=="full" ) this->check( PCMGSetType( pc, PC_MG_FULL ) );
Expand Down Expand Up @@ -2479,7 +2483,7 @@ ConfigurePCMGLevels::run( PC& pc, int level )
this->check( KSPSetNormType( levelksp, KSP_NORM_PRECONDITIONED ) );
void *cctx;
this->check( KSPDefaultConvergedCreate(&cctx) );
this->check( KSPSetConvergenceTest( levelksp, KSPDefaultConverged, cctx, PETSC_NULL ) );
this->check( KSPSetConvergenceTest( levelksp, KSPDefaultConverged, cctx, PETSC_IGNORE ) );
#endif
// setup coarse ksp
this->check( KSPSetUp( levelksp ) );
Expand Down
34 changes: 17 additions & 17 deletions feelpp/feel/feelalg/solvereigenslepc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -110,10 +110,10 @@ SolverEigenSlepc<T>::init ()
BVOrthogRefineType refinement;
#if (SLEPC_VERSION_MAJOR == 3) && (SLEPC_VERSION_MINOR >= 6)
BVOrthogBlockType blockOrthoType;
ierr = BVGetOrthogonalization ( M_ip, PETSC_NULL, &refinement, &eta,&blockOrthoType );
ierr = BVGetOrthogonalization ( M_ip, PETSC_IGNORE, &refinement, &eta,&blockOrthoType );
ierr = BVSetOrthogonalization ( M_ip, BV_ORTHOG_MGS, refinement, eta, blockOrthoType );
#else
ierr = BVGetOrthogonalization ( M_ip, PETSC_NULL, &refinement, &eta );
ierr = BVGetOrthogonalization ( M_ip, PETSC_IGNORE, &refinement, &eta );
ierr = BVSetOrthogonalization ( M_ip, BV_ORTHOG_MGS, refinement, eta );
#endif

Expand All @@ -126,20 +126,20 @@ SolverEigenSlepc<T>::init ()
// and leave other parameters unchanged
#if 0
EPSOrthogonalizationRefinementType refinement;
ierr = EPSGetOrthogonalization ( M_eps, PETSC_NULL, &refinement, &eta );
ierr = EPSGetOrthogonalization ( M_eps, PETSC_IGNORE, &refinement, &eta );
ierr = EPSSetOrthogonalization ( M_eps, EPS_MGS_ORTH, refinement, eta );
#else
#if (SLEPC_VERSION_MAJOR == 3) && (SLEPC_VERSION_MINOR >= 2)
IPOrthogRefineType refinement;
ierr = IPGetOrthogonalization ( M_ip, PETSC_NULL, &refinement, &eta );
ierr = IPGetOrthogonalization ( M_ip, PETSC_IGNORE, &refinement, &eta );
ierr = IPSetOrthogonalization ( M_ip, IP_ORTHOG_MGS, refinement, eta );
#elif (SLEPC_VERSION_MAJOR == 3) && (SLEPC_VERSION_MINOR >= 1)
IPOrthogonalizationRefinementType refinement;
ierr = IPGetOrthogonalization ( M_ip, PETSC_NULL, &refinement, &eta );
ierr = IPGetOrthogonalization ( M_ip, PETSC_IGNORE, &refinement, &eta );
ierr = IPSetOrthogonalization ( M_ip, IP_ORTH_MGS, refinement, eta );
#else
IPOrthogonalizationRefinementType refinement;
ierr = IPGetOrthogonalization ( M_ip, PETSC_NULL, &refinement, &eta );
ierr = IPGetOrthogonalization ( M_ip, PETSC_IGNORE, &refinement, &eta );
ierr = IPSetOrthogonalization ( M_ip, IP_MGS_ORTH, refinement, eta );
#endif //
#endif // 0
Expand Down Expand Up @@ -188,7 +188,7 @@ SolverEigenSlepc<T>::solve ( MatrixSparse<T> &matrix_A_in,
#endif

// Set operators.
ierr = EPSSetOperators ( M_eps, matrix_A->mat(), PETSC_NULL );
ierr = EPSSetOperators ( M_eps, matrix_A->mat(), PETSC_IGNORE );
CHKERRABORT( PETSC_COMM_WORLD,ierr );

//set the problem type and the position of the spectrum
Expand Down Expand Up @@ -245,7 +245,7 @@ SolverEigenSlepc<T>::solve ( MatrixSparse<T> &matrix_A_in,

for ( int i=0; i<nconv; i++ )
{
ierr = EPSGetEigenpair( M_eps, i, &kr, &ki, PETSC_NULL, PETSC_NULL );
ierr = EPSGetEigenpair( M_eps, i, &kr, &ki, PETSC_IGNORE, PETSC_IGNORE );
CHKERRABORT( PETSC_COMM_WORLD,ierr );

#if SLEPC_VERSION_LT(3,6,0)
Expand Down Expand Up @@ -286,9 +286,9 @@ SolverEigenSlepc<T>::solve ( MatrixSparse<T> &matrix_A_in,
if ( dmCol.nProcessors() == 1 )
{
#if PETSC_VERSION_LESS_THAN(3,6,0)
ierr = MatGetVecs( matrix_A->mat(),PETSC_NULL,&M_mode );
ierr = MatGetVecs( matrix_A->mat(),PETSC_IGNORE,&M_mode );
#else
ierr = MatCreateVecs( matrix_A->mat(),PETSC_NULL,&M_mode );
ierr = MatCreateVecs( matrix_A->mat(),PETSC_IGNORE,&M_mode );
#endif
CHKERRABORT( PETSC_COMM_WORLD,ierr );
}
Expand Down Expand Up @@ -367,8 +367,8 @@ SolverEigenSlepc<T>::solve ( MatrixSparse<T> &matrix_A_in,

// Set operators.
ierr = EPSSetOperators ( M_eps, matrix_A->mat(), matrix_B->mat() );
//ierr = EPSSetOperators (M_eps, matrix_A->mat(), PETSC_NULL);
//ierr = EPSSetOperators (M_eps, matrix_B->mat(), PETSC_NULL);
//ierr = EPSSetOperators (M_eps, matrix_A->mat(), PETSC_IGNORE);
//ierr = EPSSetOperators (M_eps, matrix_B->mat(), PETSC_IGNORE);
CHKERRABORT( PETSC_COMM_WORLD,ierr );
CHKERRABORT( PETSC_COMM_WORLD,ierr );

Expand Down Expand Up @@ -412,7 +412,7 @@ SolverEigenSlepc<T>::solve ( MatrixSparse<T> &matrix_A_in,
//PetscPrintf(PETSC_COMM_WORLD," Number of iterations of the method: %d\n",its);
#if (SLEPC_VERSION_MAJOR == 3) && (SLEPC_VERSION_MINOR < 5)
int lits;
EPSGetOperationCounters( M_eps,PETSC_NULL,PETSC_NULL,&lits );
EPSGetOperationCounters( M_eps,PETSC_IGNORE,PETSC_IGNORE,&lits );
//PetscPrintf(PETSC_COMM_WORLD," Number of linear iterations of the method: %d\n",lits);
#endif
#if PETSC_VERSION_LESS_THAN(3,4,0)
Expand Down Expand Up @@ -455,7 +455,7 @@ SolverEigenSlepc<T>::solve ( MatrixSparse<T> &matrix_A_in,

for ( int i=0; i<nconv; i++ )
{
ierr = EPSGetEigenpair( M_eps, i, &kr, &ki, PETSC_NULL, PETSC_NULL );
ierr = EPSGetEigenpair( M_eps, i, &kr, &ki, PETSC_IGNORE, PETSC_IGNORE );
CHKERRABORT( PETSC_COMM_WORLD,ierr );

#if SLEPC_VERSION_LT(3,6,0)
Expand Down Expand Up @@ -503,9 +503,9 @@ SolverEigenSlepc<T>::solve ( MatrixSparse<T> &matrix_A_in,
if ( dmCol.nProcessors() == 1 )
{
#if PETSC_VERSION_LESS_THAN(3,6,0)
ierr = MatGetVecs( matrix_A->mat(),PETSC_NULL,&M_mode );
ierr = MatGetVecs( matrix_A->mat(),PETSC_IGNORE,&M_mode );
#else
ierr = MatCreateVecs( matrix_A->mat(),PETSC_NULL,&M_mode );
ierr = MatCreateVecs( matrix_A->mat(),PETSC_IGNORE,&M_mode );
#endif
CHKERRABORT( PETSC_COMM_WORLD,ierr );
}
Expand Down Expand Up @@ -893,7 +893,7 @@ SolverEigenSlepc<T>::eigenPair( unsigned int i )
int s;
ierr = VecGetSize( M_mode,&s );
CHKERRABORT( PETSC_COMM_WORLD,ierr );
ierr = EPSGetEigenpair( M_eps, i, &kr, &ki, M_mode, PETSC_NULL );
ierr = EPSGetEigenpair( M_eps, i, &kr, &ki, M_mode, PETSC_IGNORE );
CHKERRABORT( PETSC_COMM_WORLD,ierr );

#ifdef USE_COMPLEX_NUMBERS
Expand Down
12 changes: 6 additions & 6 deletions feelpp/feel/feelalg/solverlinearpetsc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -345,7 +345,7 @@ void SolverLinearPetsc<T>::init ()
// behavior is for PETSc to allocate (internally) an array
// of size 1000 to hold the residual norm history.
ierr = KSPSetResidualHistory( M_ksp,
PETSC_NULL, // pointer to the array which holds the history
PETSC_IGNORE, // pointer to the array which holds the history
PETSC_DECIDE, // size of the array holding the history
PETSC_TRUE ); // Whether or not to reset the history for each solve.
CHKERRABORT( this->worldComm().globalComm(),ierr );
Expand Down Expand Up @@ -409,8 +409,8 @@ void SolverLinearPetsc<T>::init ()

if ( this->M_showKSPMonitor )
{
//KSPMonitorSet( M_ksp,KSPMonitorDefault,PETSC_NULL,PETSC_NULL );
KSPMonitorSet( M_ksp,__feel_petsc_monitor,(void*) this,PETSC_NULL );
//KSPMonitorSet( M_ksp,KSPMonitorDefault,PETSC_IGNORE,PETSC_IGNORE );
KSPMonitorSet( M_ksp,__feel_petsc_monitor,(void*) this,PETSC_IGNORE );
}

// The value can be checked with --(prefix.)ksp-view=1
Expand Down Expand Up @@ -769,7 +769,7 @@ SolverLinearPetsc<T>::setPetscConstantNullSpace()
std::cout << "use nullspace in petsc\n";
MatNullSpace nullsp;

ierr = MatNullSpaceCreate( PETSC_COMM_WORLD, PETSC_TRUE, 0, PETSC_NULL, &nullsp );
ierr = MatNullSpaceCreate( PETSC_COMM_WORLD, PETSC_TRUE, 0, PETSC_IGNORE, &nullsp );
CHKERRABORT( this->worldComm().globalComm(), ierr );
#if PETSC_VERSION_LESS_THAN( 3,5,4 )
ierr = KSPSetNullSpace( M_ksp, nullsp );
Expand Down Expand Up @@ -812,7 +812,7 @@ SolverLinearPetsc<T>::updateNullSpace( Mat A, Vec rhs )

#if PETSC_VERSION_GREATER_OR_EQUAL_THAN( 3,3,0 )
MatNullSpace nullsp;
ierr = MatNullSpaceCreate( this->worldComm(), PETSC_FALSE , dimNullSpace, petsc_vec.data()/*PETSC_NULL*/, &nullsp );
ierr = MatNullSpaceCreate( this->worldComm(), PETSC_FALSE , dimNullSpace, petsc_vec.data()/*PETSC_IGNORE*/, &nullsp );
CHKERRABORT( this->worldComm().globalComm(),ierr );
//ierr = MatNullSpaceView( nullsp, PETSC_VIEWER_STDOUT_WORLD );
//CHKERRABORT( this->worldComm().globalComm(),ierr );
Expand Down Expand Up @@ -849,7 +849,7 @@ SolverLinearPetsc<T>::updateNearNullSpace( Mat A )
for ( int k = 0 ; k<dimNullSpace ; ++k )
petsc_vec[k] = dynamic_cast<const VectorPetsc<T>*>( &this->M_nearNullSpace->basisVector(k) )->vec();
MatNullSpace nullsp;
ierr = MatNullSpaceCreate( this->worldComm(), PETSC_FALSE , dimNullSpace, petsc_vec.data()/*PETSC_NULL*/, &nullsp );
ierr = MatNullSpaceCreate( this->worldComm(), PETSC_FALSE , dimNullSpace, petsc_vec.data()/*PETSC_IGNORE*/, &nullsp );
CHKERRABORT( this->worldComm().globalComm(),ierr );
ierr = MatSetNearNullSpace( A, nullsp);
CHKERRABORT( this->worldComm().globalComm(),ierr );
Expand Down
Loading

0 comments on commit 6e9ec3b

Please sign in to comment.