Mark Adams <[email protected]> writes: > Perhaps this will help. The code is straight forward but prefixes are used. > I've appended the code and a stack trace for the error. > > ! create KSP > call KSPCreate(solver%comm,solver%ksp,ierr) > CHKERRQ(ierr) > if (solver%prefix.eq.2) then ! turb > call KSPSetOptionsPrefix(solver%ksp,'s2_',ierr) > if (sml_mype/sml_pe_per_plane .gt. 0) then ! not first, no monitor > call PetscOptionsClearValue('-s2_ksp_monitor',ierr) > call PetscOptionsClearValue('-s2_ksp_converged_reason',ierr) > endif > else ! 1 field 00 solver, no prefix > call PetscOptionsClearValue('-ksp_monitor',ierr) > call PetscOptionsClearValue('-ksp_converged_reason',ierr)
Yuck. The options table is for the (run-time) user. Manually futzing with options, especially clearing options, is a dirty hack that should not be used by choice. > end if > call KSPSetFromOptions(solver%ksp,ierr) > CHKERRQ(ierr) > > call KSPSetOperators(solver%ksp, solver%Amat, solver%Amat, > SAME_NONZERO_PATTERN, ierr ) > CHKERRQ(ierr) > > ! setup solver now that matrix is complete > call KSPSetUp( solver%ksp, ierr ) !!! poisson.F90:213 Where does your code call PCFieldSplitSetIS() or similar? How is the PCFieldSplit supposed to know about the splits? What runtime options are you passing?
pgpm00dKKMi7V.pgp
Description: PGP signature
