petsc-3.7.7 2017-09-25
   
    Documentation: Changes: 3.1
    
    
    
      
      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
          PetscLayoutCreate() and it now allocates the space of the
          object.
        
- 
          In makefiles include ${PETSC_DIR}/conf/base is replaced with two
          lines include ${PETSC_DIR}/conf/variables and  include
          ${PETSC_DIR}/conf/rules
        
- BlockSolve95 interface is removed
- 
          petsc.h and petscdef.h are replaced with petscsys.h and
          petscsysdef.h; while petsc.h now includes ALL PETSc include
          files.
        
- 
          win32fe [used for MS/Intel compiler builds on windows] now defaults
          to 'noautodetect' mode. However the previous behavior can be restored
          by using the option '--autodetect'. For eg: '--withcc=win32fe cl
          --autodetect'. This works primarily with old VC6/VC7/Intel8 etc
          compilers anyway.
        
Logging:
      
        - PetscLogFlops(int) ->PetscLogFlops(PetscLogDouble). [check fortran usage]
config/configure.py:
      
        - 
          All ./configure options that state known values, so that ./configure
          doesn't try to test for them. Often used with the --with-batch option
          now begin with --known-
        
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_ZEROED_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().
- MATMPIROWBS i.e BlockSolve95 interface is now removed.
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.
        
- PCFactorSetPivoting() renamed to PCFactorSetColumnPivot()
- 
          Replaced PCFactorSetShiftNonzero(), PCFactorSetShiftPd() and
          PCFactorSetShiftInBlocks() with PCFactorSetShiftType() and
          PCFactorSetShiftAmount(). Replaced -pc_factor_shift_nonzero,
          -pc_factor_shift_positive_definite and -pc_factor_shift_in_blocks
          with -pc_factor_shift_type <shifttype> and -pc_factor_shift_amount
          <shiftamount>.
        
- Added PCREDISTRIBUTE for load balancing and removal of Dirichlet degrees of freedom.
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.
        
- 
          Added KSPGCR (Generalized Conjugate Residuals), a flexible method
          (like FGMRES) providing inexpensive residuals.
        
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.
        
- 
          Change TSSetPreStep() and TSSetPostStep() to run before and after
          each step instead of before and after each solve.
        
DA:
      
        - DAGetColoring() now takes a MatType as an additional argument, should be MATAIJ or MATBAIJ
- 
          Added DARefineHierarchy(), DMMG now always uses DMRefineHierarchy to
          generate refined grids. Added options -da_refine_hierarchy_[xyz] to
          allow semi-coarsening at some levels of the hierarchy.
        
- 
          DASetCoordinates() now references the vector, so the user should
          release their reference by calling VecDestroy().
        
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]
        
- use petsc and use petscdef are now use petscsys and use petscsysdef
        - Added MATORDERING_AMD for Tim Davis' Approximate Minimum Degree package.