PETSc

Documentation: Changes: 2.3.0


  • Home
  • Download
  • Features
  • Documentation
    • Manual pages and Users Manual
    • Referencing PETSc
    • Tutorials
    • Installation
    • AMS
    • Changes
      • dev
      • 3.2
      • 3.1
      • 3.0.0
      • 2.3.3
      • 2.3.2
      • 2.3.1
      • 2.3.0
      • 2.2.1
      • 2.2.0
      • 2.1.6
      • 2.1.5
      • 2.1.3
      • 2.1.2
      • 2.1.1
      • 2.1.0
      • 2.0.29
      • 2.0.28
      • 2.0.24
      • 2.0.22
      • 2.0.18-21
      • 2.0.17
      • 2.0.16
      • 2.0.15
    • Bug Reporting
    • Code Management
    • FAQ
    • License
    • Linear Solver Table
  • The equivalent of building BOPT=g, BOPT=O versions for PETSC_ARCH=linux-gnu is now: config/configure.py [options] -PETSC_ARCH=linux-gnu config/configure.py [options] --with-debugging=0 -PETSC_ARCH=linux-gnu-opt
  • Python bindings added to PETSc. To use, configure with: --with-python=1 ---with-shared=1 To build, use: 'make python' after building PETSc libraries. Example in src/snes/examples/tutorials/ex1.py
  • Options database keys -trmalloc[_xxx] are changed to -malloc[_xxx]
  • -get_resident_set_size and -trinfo are changed to -memory_info
  • PetscTrValid() -> PetscMallocValidate(), PetscTrDebug() -> PetscMallocDebug()
  • -trdebug -> -malloc_debug
  • PetscGetResidentSetSize() -> PetscMemoryGetCurrentUsage(), added PetscMemoryGetMaximumUsage() and PetscMemorySetGetMaximumUsage()
  • PetscTrSpace() -> PetscMallocGetCurrentUsage() and PetscMallocGetMaximumUsage()
  • added PetscOptionsEnum() and PetscOptionsGetEnum()
  • added PetscBag object for managing user created structs including initializing them and serializing them.
  • removed PetscSetCommWorld(). Now you can directly assign to PETSC_COMM_WORLD before PetscInitialize().

Vec:

  • Faster generation of VecScatter for many processes when indices are mostly sorted
  • Changed BLAS-type interfaces to PETSc-style:
    • VecShift
    • VecScale
    • VecSet
    • VecSetRandom
    • VecAXPY
    • VecAXPBY
    • VecAYPX
    • VecMAXPY
    • VecWAXPY
  • Changed order of arguments in pointwise routines:
    • VecPointwiseMult
    • VecPointwiseMax
    • VecPointwiseMin
    • VecPointwiseMaxAbs
    • VecPointwiseDivide

Mat:

  • Changed MatConvert to require a reuse parameter to denote inplace converstion
  • Added Cholesky and ICC support to SeqBAIJ
  • Added the argument MatFactorInfo to MatLUFactorNumeric() and MatCholeskyFactorNumeric()
  • Faster MatSetValues()
  • Faster parallel-matrix vector products
  • Changed MatCreate() to take only a communicator
  • Added MatSetSize() to specify matrix sizes
  • Changed BLAS-type interfaces to PETSc-style:
    • MatAXPY
    • MatAYPX
    • MatScale
    • MatShift
  • Change MatZeroRows() and MatZeroRowsLocal() to use arrays, and added IS versions

PC:

  • Added PCILUReorderForNonzeroDiagonal() and PCLUReorderForNonzeroDiagonal()
  • Replace PCLUSetDamping(), PCILUSetDamping(), PCCholeskySetDamping() and PCICCSetDamping() by PCFactorSetShiftNonzero(). Change the option database keys -pc_lu_damping, -pc_ilu_damping, -pc_cholesky_damping and -pc_icc_damping to -pc_factor_shift_nonzero
  • Replace PCLUSetShift(), PCILUSetShift(), PCCholeskySetShift() and PCICCSetShift() by PCFactorSetShiftPd(). Change the option database keys -pc_lu_shift, -pc_ilu_shift, -pc_cholesky_shift and -pc_icc_shift to -pc_factor_shfit_positive_definite
  • PCMG: will automatically using the outer pmat operator to define the finest level operator if not user supplied
  • PCMG: added MGUseGalerkin(), -pc_mg_galerkin option to have coarser grid matrices computed from the finest grid matrix
  • PCMG: now does referencing counting on set vectors and restriction/interpolation matrices so user need not keep reference to free later
  • PCMG: if user does not provide restriction the interpolation is used and vis versa
  • PCMG: if user does not provide Vecs for each level, will automatically provide them
  • All routines that began with MG now begin with PCMG
  • Added PCShellSet/GetContext() and removed the context passed into PCSetApply() and PCSetApplyRichardson()

KSP:

  • -ksp_cg_Hermitian and -ksp_cg_symmetric have been changed to -ksp_cg_type Hermitian or symmetric
  • Changed options for -ksp_gmres_cgs_refinement_type from never or ifneeded or always to REFINE_NEVER or REFINE_IFNEEDED or REFINE_ALWAYS

config/configure.py:

SNES:

  • Changed the name and calling sequence for SNESSetLineSearchCheck() to SNESLineSearchSetPostCheck() and added a SNESLineSearchSetPreCheck()
  • Changed the names of all SNESxxxxLineSearchyyyy() to SNESLineSearchxxxxyyyy() per PETSc naming standard.
  • Now allow a constant vector to be specified in SNESSolve()
  • Removed the Vec argument from SNESSetUp()
  • Corrected the order of function and context arguments in:
    • SNESGetFunction()
    • SNESGetJacobian()

TS:

DA:

  • Added DAVecGet/RestoreArrayDOF() allowing indexing in the dimension of degrees of freedom at each point on the lattice.
  • Faster DAGlobalToLocal() etc for dof > 1.

DMMG:

  • Consolidated DMMG functionality into the new header file "petscdmmg.h".

SYS:

  • PetscSetCommWorld() removed. [one can directly do PETSC_COMM_WORLD = comm - before PetscInitialize()]

Fortran:

ExternalPackages:

  • ML support added.