PETSc

Docs: Changes: Development


CHANGES in the PETSc Development Version

General:

  • PetscOptionsHasName() and PetscOptionsName() now return PETSC_TRUE if the options are set to any value, include false or 0. You may need to change some of your PetscOptionsXXName() to PetscOptionsXXTruth()
  • Added configure option --with-single-library that causes all PETSc code to be compiled into the single library libpetsc.XXX
  • PetscMap changed to PetscLayout and PetscMapInitialize() changed to PetscLayoutInitialize() and it now allocates the space of the object.
Logging:
  • PetscLogFlops(int) ->PetscLogFlops(PetscLogDouble). [check fortran usage]
config/configure.py:

IS:

Vec:

VecScatter:

Mat:

  • MatGetSubMatrix
    Now takes a parallel IS for the columns, the csize argument has been dropped. The local part of this IS corresponds to the local columns of the new submatrix.
  • MatGetSubMatrixRaw
    Removed, use MatGetSubMatrix
  • Changed name of option MAT_KEEP_NONZERO_ROWS to MAT_KEEP_NONZERO_PATTERN to more clearly indicate what it does.
  • Added MAT_SHARE_NONZERO_PATTERN as option for MatDuplicate() this allows several matrices to share the same data structures for the nonzeros and thus save memory.
  • The function provided to MatNullSpaceSetFunction() now takes a MatNullSpace() as the first argument. Added Fortran interface for this function as well.
  • Removed MatPBRelax() merged its functionality into MatRelax()
  • Changed MatRelax() to MatSOR() to match MatSORType() and PCSOR
  • Removed requirement that rows be sorted in MatCreateMPIAIJWithArrays() and MatMPIAIJSetPreallocationCSR().
  • Changed MATOP_DIAGONAL_SHIFT to MATOP_DIAGONAL_SET to match function name MatDiagonalSet().
PC:
  • PCShell All user-provided functions now have PC as first argument instead of the application context. Users should obtain the context with PCShellGetContext, similar to MatShell.
  • Removed -pc_asm_in_place and PCASMSetUseInPlace() since the option made no sense
  • PCApplyRichardson() has an additional argument indicating if the initial guess being passed in is nonzero. SOR will save some work if it is zero.
  • MatSetBlockSize() is no longer an error for BAIJ matrices, but the argument must be the same as when the matrix was preallocated.

KSP:

  • Added KSPCGUseSingleReduction() -ksp_cg_single_reduction ; recommended for use with many processors when VecDot() starts to take a large amount of time, Requires 2 extra work vectors.

SNES:

TS:

  • Rename TS_EULER, TS_BEULER, etc like TSEULER for consistency with other packages.
  • Add Theta and General Linear time integrators (TSTHETA, TSGL). These can be used for solving differential algebraic equations (DAE) using the new TSSetIFunction() and TSSetIJacobian().
  • Add TSSSP which implements optimal strong stability preserving time integrators of order 2, 3, and 4 using a low-storage explicit Runge-Kutta scheme.

DA:

  • DAGetColoring() now takes a MatType as an additional argument, should be MATAIJ or MATBAIJ

DMMG:

PetscViewer:  

SYS:

  • PetscSleep(), PetscDrawGetPause(), and PetscDrawSetPause() now take PetscReal instead of int. Also, -draw_pause takes a real value.
  • PetscRandomGetValueImaginary() is removed. To get a complex number with only a random imaginary part first call PetscRandomSetInterval() with the same low and high real part. Similarly one can obtain a complex number with only a random real part by setting the low and high imaginary part to be the same.

AO:

Sieve:

Fortran:

  • Removed the old compiler dependent implementation of f90 interface sources in favor of the new compiler independent implementation. Consequently the configure option --with-f90-interface is removed. And the f90 interface is automatically built - if an f90 compiler is detected. [this is the default behavior before this change aswell]


ExternalPackages: