PETSc

Docs: Changes: 2.2.1


CHANGES in PETSc 2.2.1

General:

  • Introduced 4 new PETSc data types: PetscInt, PetscErrorCode, PetscMPIInt and PetscBLASInt. For 99% of users these are just int or integer*4 and you do not need to change your code.
  • For users with more than roughly 2 billion unknowns you can run configure with --with-64-bit-ints and then PetscInt will represent 64 bit integers, long long int in C and integer*8 in Fortran. But the the other 3 types remain 32 bit (i.e. int in C and integer*4 in Fortran). Now you can index into vectors and matrices with virtually unlimited sizes.

    Vec:

    • VecSetStashInitialSize() -> VecStashSetInitialSize()
    • VecConvertMPIToAll() and VecConvertMPIToZero() have been replaced with VecScatterCreateToAll() and VecScatterCreateToZero()

    IS:

    • ISSum() now has a throughput argument instead of one in and one output.

    Mat:

    • MatSetStashInitialSize() -> MatStashSetInitialSize()
    • added MatFactorInfoInitialize()
    • added MatStashGetInfo()
    • added MatGetVecs()
    • added MatIsSymmetric(), MatIsTranspose() now take a tolerance flag for equality (use 0.0 for identical)
    • added MatMPIAIJSetPreallocationCSR() and MatMPIBAIJSetPreallocationCSR()

    PC:

    • ICC now uses Manteuffel shift by default
    • If matrix is symmetric, PC defaults to ICC when possible, if you told with MatSetOption(mat,MAT_SYMMETRIC)
    • PCSetVector() is gone (no longer needed)
    • PCNullSpaceAttach() is gone, use KSPSetNullSpace()
    • MatGetSubmatrices() now preserves symmetric flag of original matrix
    • hypre BoomerAMG (-pc_type hypre -pc_hypre_type boomeramg) now uses one 1 cycle of multigrid as preconditioner (Previously it used either a decrease in residual of 10^-7 or a maximum of 20 iterations

    KSP:

    • Note that a relative residual tolerance now means that ||r_k|| < tol*||b||
    • Removed KSPSetRhs() and KSPSetSolution(), pass them through KSPSolve() instead
    • Added KSPSetNullSpace(), KSPGetNullSpace()

    DA:

    • Added DAGetGhostedCoordinates() and DAGetCoordinateDA() (see src/dm/da/examples/tutorials/ex3.c)
    • Added DACoor2d and DACoor3d (see src/dm/da/examples/tutorials/ex3.c)
    • DAGetInterpolation() now provides the correct interpolation for nonuniform grids using the coordinate information provided with DASetCoordinates(). (see src/dm/da/examples/tutorials/ex3.c)

    config/configure.py:

    • --with-c/f-blas-lapack -> --download-c/f-blas-lapack=yes
    • --with-c/f-blas-lapack-if-needed -> --download-c/f-blas-lapack=ifneeded
    • added --download-mpich=yes,no,ifneeded
    • added --download-mpich-device=
    • added --download-mpich-machines=[machines]
    • added configure including download support for hypre, parmetis
    • added configure support (without download) to Mumps, UMF, Superlu,SuperLU_dist,DSCPACK
    • Made configure much more robust

    SNES:

    • Added -snes_converged_reason
    • Added SNESSetRhs(snes,rhs) to allow for solving F(x) = rhs

    TS:

    DMMG:

    • Added DMMGSetNullSpace()

    SYS:

    Fortran:


    ExternalPackages: