1# Changes: 2.0.15 2 3Highlights of new features in version 2.0.15, added since the last 4public release of PETSc (2.0.Beta.13). See details in the sections 5below. 6 7- Added support for shared version of PETSc libraries for several 8 machines to enable faster linking and smaller executables 9- Added new parallel block row matrix format, improved efficiency 10 for block diagonal formats 11- Added a suite of routines to help manage the mappings between an 12 application-defined ordering of variables and the ordering used by 13 PETSc for matrices and vectors 14- Expanded users manual information for performance tuning and 15 profiling 16- The option -log_summary now summarize of message-passing activity 17 as well as flop rates. 18- Running the test suite now requires much less disk space. 19- Example programs are in the process of being reorganized into 20 tutorials and tests (see, e.g., petsc/src/sles/examples/tutorials 21 for tutorial-style examples for the linear solvers). 22- The HTML version of the PETSc man pages now provides indices 23 (organized by both concepts and routine names) to tutorial 24 examples. 25 26```{rubric} General 27``` 28 29- Added support for shared libraries for the machines PETSC_ARCH = 30 [sun4,solaris,alpha,IRIX,IRIX64,linux] to enable faster linking 31 and smaller executables. To compile the shared libraries, install 32 PETSc as usual and then execute the command make BOPT=g shared 33 from the PETSc home directory (or use whatever BOPT you like). You 34 can remove the shared libraries with the command make BOPT=g 35 deleteshared Note: Shared libraries can also be used with 36 PETSC_ARCH=freebsd and PETSC_ARCH=hpux if some minor modifications 37 are made. For detailed instructions, see the files 38 \$\{PETSC_DIR}/bmake/\$\{PETSC_ARCH}/base. Please write to us at 39 <mailto:petsc-maint@mcs.anl.gov> if you encounter any problems when using 40 the shared libraries. 41 42- Users must now ALWAYS set the environmental variable PETSC_DIR to 43 indicate the PETSc home directory. Previously, PETSC_DIR was set 44 within the various makefiles within the PETSc installation. 45 However, since this causes problems for shared libraries on some 46 machines, the environmental variable PETSC_DIR is now used 47 instead. 48 49- Added global variables for use in debuggers: 50 51 - PetscGlobalRank - processor's rank in MPI_COMM_WORLD 52 - PetscGlobalSize - number of processors in MPI_COMM_WORLD 53 54- For complex numbers versions (e.g., BOPT=g_complex): Added a 55 global variable defining the imaginary number "i": PETSC_i 56 57```{rubric} TS (Time Stepping Module) 58``` 59 60- Changed TS_PSEUDO_POSITION_INDEPENDENT_TIMESTEP -> 61 TS_PSEUDO_POSIND - 62- Changed TSPseudoSetPositionIndependentTimeStep() -> 63 TSPseudoSetPosIndTimeStep(). Even Barry couldn't stand names that 64 long :-) 65 66```{rubric} SNES (Nonlinear Solvers): 67``` 68 69- The user can now set parameters used in matrix-free approximations 70 of Jacobian-vector products, with the options -snes_mf_err \<err> : 71 square root of relative error in computing function -snes_mf_umin 72 \<umin>: minimum iterate parameter or by calling the routine 73 SNESSetMatrixFreeParameters(). 74- Added the option -snes_mf_operator, which allows the user to apply 75 the default matrix-free Jacobian but retain the user-provided 76 Jacobian preconditioner matrix. 77- Added the routine SNESGetTolerances() to extract the various 78 parameters used for convergence testing. 79- Initialized iteration counter to 0 for successive calls to SNES 80 solvers. 81- Changed the names for SNES runtime options associated with 82 particular solvers to the forms -snes_eq_ls\_\<parameter_name> - 83 nonlinear equations, line search method 84 -snes_eq_tr\_\<parameter_name> - nonlinear equations, trust region 85 method -snes_um_ls\_\<parameter_name>- unconstrained minimization, 86 line search method -snes_um_tr\_\<parameter_name> - unconstrained 87 minimization, trust region method Run program with -help for a 88 detailed list of options. 89 90```{rubric} SLES (Linear Solvers): See PC and KSP 91``` 92 93- Changed the default linear solvers from GMRES(30) with Jacobi 94 preconditioning to uniprocessor: GMRES(30) with ILU(0) 95 preconditioning multiprocessor: GMRES(30) with block Jacobi 96 preconditioning, where there is 1 block per processor, and each 97 block is solved with ILU(0) See the users manual for additional 98 options for the block Jacobi method. You can still employ the old 99 default at runtime with the option -pc_type jacobi 100 101```{rubric} KSP (Krylov subspace methods): 102``` 103 104- Added routines KSPComputeEigenvalues(), 105 KSPComputeEigenvaluesExplicitly() and runtime options 106 -ksp_compute_eigenvalues, -ksp_plot_eigenvalues, 107 -ksp_compute_eigenvalues_explicitly and 108 -ksp_plot_eigenvalues_explicitly for users interested in examining 109 the eigenvalues of the preconditioned operator to better 110 understand the convergence of a chosen iterative method. 111- Changed KSPSetCalculateExtremeSingularValues() -> 112 KSPSetComputeExtremeSingularValues() - Changed 113 KSPSetCalculateResidual() -> KSPSetComputeResidual() 114 115```{rubric} PC (Preconditioners): 116``` 117 118- Added the routine PCSetModifySubMatrices(), which allows the user 119 to set an optional routine for modifying the entries of the 120 submatrices that arise in certain subdomain-based preconditioners 121 (ASM, block Jacobi, block Gauss-Seidel). 122 123```{rubric} MAT (Matrices): 124``` 125 126- Eliminated routine MatGetSubmatrix(); now use MatGetSubMatrices() 127 even when extracting just 1 submatrix. 128- Added routine MatDestroyMatrices() 129- Fixed bug in MatGetSubMatrices() for successive calls for matrices 130 having different nonzero structure. 131- Added routine MatGetBlockSize(). - Changed routine MatGetInfo() so 132 that it returns more information. See man page for details. 133- Changed usage of MatGetReordering() and MatRegisterOrdering(); see 134 man pages. 135- Changed the prefix used for matrix operation names within 136 MatShellSetOperation() and MatHasOperation(): MAT\_\<operation> -> 137 MATOP\_\<operation> For example, MAT_MULT -> MATOP_MULT. 138 139```{rubric} DA (Distributed Arrays): 140``` 141 142```{rubric} VEC (Vectors): 143``` 144 145```{rubric} IS (Index Sets): 146``` 147 148- Changed ISCreateSeq() to ISCreateGeneral() 149- Changed ISCreateStrideSeq() to ISCreateStride() 150- Added routine ISCreateBlock() to create a blocked index set. See 151 the man page for details and related routines. 152 153```{rubric} Draw (Graphics): 154``` 155 156- Added -draw_x_private_colormap option that causes PETSc to 157 allocate a separate colormap for PETSc graphics windows. This 158 prevents bad contour plots due to Netscape altering the default 159 color map. 160- You can now zoom in and out of contour plots using the option 161 -draw_pause -1 and left and center mouse buttons. 162- The option -draw_contour_grid will display the underlying grid on 163 a contour plot. 164 165```{rubric} VIEWERS: 166``` 167 168- Added routine ViewerGetFormat(). 169- Added options -viewer_matlab_machine and -viewer_matlab_port 170- Changed ASCII_FORMAT_xxx to VIEWER_FORMAT_ASCII_xxx and 171 ASCII_FORMAT_INFO_DETAILED to VIEWER_FORMAT_ASCII_INFO_LONG 172- Changed BINARY_FORMAT_xxx to VIEWER_FORMAT_BINARY_xxx 173- PETSc now provides basic support for VRML viewers. Currently, one 174 can draw surface contours of vector fields with the routine 175 DFVecDrawTensorSurfaceContour(). Note that the VRML utilities will 176 be expanded and the interface will change in the near future. 177 178```{rubric} SYSTEM: 179``` 180 181```{rubric} EVENT LOGGING: 182``` 183 184```{rubric} FORTRAN INTERFACE: 185``` 186 187- Changed PETSC_NULL_CHAR to PETSC_NULL_CHARACTER - Replaced 188 PETSC_DEFAULT with 189- You no longer need MPE to build PETSc. 190- Included petsc/include/options.h within petsc/include/petsc.h - 191- Changed distributed array name from RA to DA. Also changed 192 DAGlobalToLocal() to DAGlobalToLocalBegin() followed by 193 DAGlobalToLocalEnd(). 194- Changed usage of KSPBuildSolution() slightly to avoid copying when 195 not needed. 196- Remove first argument (rflag) from ALL options database commands, 197 i.e., OptionsGetInt(0,0,"-m",&m) => OptionsGetInt(0,"-m",&m), etc. 198- Changed the way memory tracing is done. When compiling with BOPT=g 199 it is the default, but you may turn it off with -notrmalloc. When 200 compiling with BOPT=O it is by default off, but one may turn it on 201 with -trmalloc or -trdump. 202