[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