some sor questions
s.kramer at imperial.ac.uk
Tue Sep 22 08:47:52 CDT 2009
I have some questions basically about the MatRelax_SeqAIJ routine:
If I understand correctly there are 2 versions of the sor routine
depending on whether or not there is a zero guess, so that with a zero
guess in the forward sweep you don't need to multiply the upper diagonal
part U with the part of the x vector that is still zero. Why then does
it look like that both versions log the same number of flops? I would
have expected that the full forward sweep (i.e. no zero guess) takes
2*a->nz flops (i.e. the same as a matvec) and not a->nz.
Why does the Richardson iteration with sor not take the zero guess into
account, i.e. why does PCApplyRichardson_SOR not set SOR_ZERO_INIT_GUESS
in the call to MatRelax if the Richardson ksp has a zero initial guess set?
In parallel if you specify SOR_LOCAL_FORWARD_SWEEP or
SOR_LOCAL_BACKWARD_SWEEP it calls MatRelax on the local part of the
matrix, mat->A, with its=lits and lits=PETSC_NULL (?). However the first
line of MatRelax_SeqAIJ then says: its = its*lits. Is that right?
Please tell me if I'm totally misunderstanding how the routine works,
thanks for any help.
Stephan Kramer <s.kramer at imperial.ac.uk>
Applied Modelling and Computation Group,
Department of Earth Science and Engineering,
Imperial College London
More information about the petsc-users