On Mon, Nov 19, 2012 at 8:48 AM, Thomas Witkowski <thomas.witkowski at tu-dresden.de> wrote: > Am 19.11.2012 14:45, schrieb Barry Smith: > >> On Nov 19, 2012, at 1:29 AM, Thomas Witkowski >> <thomas.witkowski at tu-dresden.de> wrote: >> >>> In the implementation of my Navier-Stokes solver, I initialize the >>> PCFieldSplit preconditioner in my source code (thus not on the command line) >>> in the following way: >>> >>> PCSetType(pc, PCFIELDSPLIT); >>> PCFieldSplitSetType(pc, PC_COMPOSITE_SCHUR); >>> PCFieldSplitSetSchurFactType(pc, PC_FIELDSPLIT_SCHUR_FACT_FULL); >>> ... >>> KSPSetUp(ksp); >>> KSP *subKsp; >>> PetscInt nSubKsp; >>> PCFieldSplitGetSubKSP(pc, &nSubKsp, &subKsp); >>> KSP kspVelocity = subKsp[0]; >>> KSP kspSchur = subKsp[1]; >>> ... >>> >>> And then kspVelocity and kspSchur are filled with appropriate options. >>> The point is now, that to get the sub solver objects, I have to run KSPSetUp >>> before. In this case, the sub solver objects are also initialized with some >>> predefined options (block jacobi ILU), which I don't need and what takes >>> some time and memory. >> >> These are just little stubs, they don't take but a trivial amount of >> memory and time to create they are not complete solvers so you shouldn't >> worry about them. >> >> Barry >> > Just the KSPSetUp takes 4 to 5 seconds, for no computation at all. I don't > think, this is negligible. It destroys my parallel scaling of initializing > the solver.
You are wrong. Read my latest reply. Matt >> >>> Is there any other way to get the sub solver objects before and to >>> initialize than the outer solver correctly with the inner solver I have >>> specified? >>> >>> >>> Thomas > > -- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener
