question on solving the transpose of a system

Barry Smith bsmith at mcs.anl.gov
Mon Sep 25 14:35:17 CDT 2006


  Randy,

   Can you try -ksp_type gmres and see if you still get the
affect?

   Barry


On Mon, 25 Sep 2006, Randall Mackie wrote:

> 
> 
> Barry Smith wrote:
> >   Randy,
> > 
> > > Now, if I want to solve (2) above, do I simply make a call to
> > > KSPSolveTranspose(ksp,b,xsol), where I've set b to the right
> > > hand side of (2)
> > 
> >    Yes, this is the way we intend it to be used. You should not
> > have to construct the transposed matrices.
> > 
> >   Questions:
> > 
> > Are you using KSPSetNullSpace()?
> 
> No
> 
> > Are you using right or left preconditioning? Or not setting it?
> 
> I'm not setting it, just using the default
> 
> 
> > What KSP method are you using?
> > What preconditioner are you using?
> 
>          -em_ksp_truemonitor \
>          -em_ksp_type bcgs \
>          -em_pc_type bjacobi \
>          -em_sub_pc_type ilu \
>          -em_sub_pc_factor_levels 3 \
>          -em_sub_pc_factor_fill 6 \
> 
> > 
> >    Barry
> > 
> > 
> > 
> > On Mon, 25 Sep 2006, Randall Mackie wrote:
> > 
> > > I have a situation where I have to solve the following problems:
> > > 
> > > 1) Ax=b
> > > 
> > > 2) (A)^T u = c
> > > 
> > > A is not symmetric.
> > > 
> > > 
> > > After I set up my A matrix and the preconditioner P (which is NOT the same
> > > as
> > > A),
> > > I solve it like so:
> > > 
> > > 
> > >         call set_P(da,P,l,m,n,period,resist,x,y,z)
> > >         call set_A(da,A,l,m,n,period,resist,x,y,z)
> > > 
> > >         call MatSetBlockSize(A,3,ierr)
> > >         call MatSetBlockSize(P,3,ierr)
> > > 
> > >         call KSPSetOperators(ksp,A,P,DIFFERENT_NONZERO_PATTERN,ierr)
> > >         call KSPSetInitialGuessNonzero(ksp,PETSC_TRUE,ierr)
> > > 
> > >             call KSPSolve(ksp,b,xsol,ierr)
> > >             call KSPGetIterationNumber(ksp,its,ierr)
> > >             call KSPGetConvergedReason(ksp,reason,ierr)
> > > 
> > > 
> > > Now, if I want to solve (2) above, do I simply make a call to
> > > KSPSolveTranspose(ksp,b,xsol), where I've set b to the right
> > > hand side of (2), or do I have to create the transposes of both
> > > A and the preconditioner and just use KSPSolve?
> > > 
> > > 
> > > When I've tried just using KSPSolveTranspose, the preconditioned residual
> > > norm falls, but not as rapidly as when doing (1), and the true residual
> > > norm
> > > seems not to change much at all.
> > > 
> > > 
> > > Thanks, Randy
> > > 
> > > 
> > > 
> > 
> 
> 




More information about the petsc-users mailing list