----- Original Message ----- > Shri, > > In theory the flag for KSPSetOperators() (for example > SAME_PRECONDITIONER) is propagated down through the PCFIELDSPLIT into > the PC that is used on the A block. So in at least simple > circumstances if you use -snes_lag_preconditioner it should "just > work". I traced through the PCFIELDSPLIT and it does attempt to pass > it down. > > Is it not working as expected?
Yes,-snes_lag_preconditioner works as expected i.e it either builds both or none. > > Of course this means that any other part of the preconditioner are > also not rebuilt. So I guess if you used additive or multiplicative > fieldsplit with 2 splits it won't update a factorization of D etc. > Do you want other things rebuilt, just not this one thing. Yes. This is exactly that i am looking for. The system i'm trying to solve is of the form 0 = A*y + g(x) 0 = f(x,y) which has the jacobian | A dg_dx | | df_dy df_dx | I'm using the schur preconditioner which needs factorization of A and (df_dx - df_dy*inv(A)*dg_dx). Since,A is constant it needs to be factorized only once while (df_dx - df_dy*inv(A)*dg_dx) is not constant and needs to be refactorized. > This will be > tricky because we don't have a mechanism to pass this information down > into PCFIELDSPLIT. Tell me exactly what you want to do that it cannot > currently do and I'll what we can do about it. Currently,the factorization is done for 'both or none'.I wanted the factorization to be done for 'either,both,or none'. I was thinking about having an option say -fieldsplit_xxx_lag_preconditioner <niterations> which will delay the refactorization for field xxx by niterations and if niterations is set to -1 then it will not update the factorization. Thanks, Shri > > Barry > > > > On Mar 14, 2011, at 4:41 PM, Shri wrote: > > > > > | A B | |dx| |fx| > > Jacobian = = > > | C D | |dy| |fy| > > > > While solving this linear system with a fieldsplit precondioner,is > > there a way to lag the numerical factorization of the A matrix. The > > A matrix in my application is constant and is about 3-4 times bigger > > than the D matrix. The log summary shows that about 90% of the time > > is spent in the numerical factorization phase. So i would like to do > > the numerical factorization for A matrix just once and not have it > > factorized for all the snes iterations. > > Speaking on the same note, should snes lag_preconditioner > > functionality be moved to ksp or maybe a > > -fieldsplit_xxx_lag_preconditioner option? > > > > Thanks, > > Shri
