[petsc-dev] PC PBJACOBI

Barry Smith bsmith at mcs.anl.gov
Fri Aug 26 07:38:44 CDT 2011


   Mark,

    I changed the code to 

  if (a->ibdiagvalid) {
    if (values) *values = a->ibdiag;
    PetscFunctionReturn(0);
  }

   If your problem was that it wasn't setting the values argument then this will fix your problem.

   Barry


On Aug 25, 2011, at 5:20 PM, Mark F. Adams wrote:

> I found that the code works when I construct the solver for the eigen estimator but when it is run for the actual smoother in the V-cycle I fail this test on ibdiagvalid:
> 
> #undef __FUNCT__  
> #define __FUNCT__ "MatInvertBlockDiagonal_SeqAIJ"
> PetscErrorCode  MatInvertBlockDiagonal_SeqAIJ(Mat A,PetscScalar **values)
> {
>   Mat_SeqAIJ    *a = (Mat_SeqAIJ*) A->data;
>   PetscErrorCode ierr;
>   PetscInt       i,bs = A->rmap->bs,mbs = A->rmap->n/A->rmap->bs,ipvt[5],bs2 = bs*bs,*v_pivots,ij[7],*IJ,j;
>   MatScalar      *diag,work[25],*v_work;
>   PetscReal      shift = 0.0;
> 
>   PetscFunctionBegin;
>   if (a->ibdiagvalid) PetscFunctionReturn(0);
> 
> And so values does not get created.
> 
> Any ideas?
> 
> mark
> 
> On Aug 25, 2011, at 4:38 PM, Barry Smith wrote:
> 
>> 
>>  Mark,
>> 
>>  I added support for AIJ for you, I will remove the outdated comments.
>> 
>>   valgrind it and let me know where the memory corruption is if you can't figure out the bug.
>> 
>>   Barry
>> 
>> On Aug 25, 2011, at 3:32 PM, Mark F. Adams wrote:
>> 
>>> I see this in pbjacobi.c:
>>> /*
>>> Currently only implemented for baij matrices and directly access baij
>>> data structures.
>>> */
>>> #include <../src/mat/impls/baij/mpi/mpibaij.h>
>>> #include <../src/mat/blockinvert.h>
>>> 
>>> But the code looks general and I see what looks like MatInvertBlockDiagonal code in AIJ:
>>> 
>>> But I'm getting a segv in when using and AIJ matirix.  I will look into this but is this comment and the BAIJ include statement wrong?
>>> 
>>> Mark
>> 
>> 
> 




More information about the petsc-dev mailing list