1*7f296bb3SBarry Smith# Changes: 2.0.24 2*7f296bb3SBarry Smith 3*7f296bb3SBarry Smith## Changes 4*7f296bb3SBarry Smith 5*7f296bb3SBarry Smith(See [Features] below) 6*7f296bb3SBarry Smith 7*7f296bb3SBarry Smith```{rubric} General: 8*7f296bb3SBarry Smith``` 9*7f296bb3SBarry Smith 10*7f296bb3SBarry Smith- Changed PETSC_ARCH on Microsoft Windows platforms from nt to win32, and from 11*7f296bb3SBarry Smith nt_gnu to win32_gnu. 12*7f296bb3SBarry Smith- Moved all the compiler/optimization information for each 13*7f296bb3SBarry Smith PETSC_ARCH from the various `base.g`, `base.O_c++` etc. files 14*7f296bb3SBarry Smith all into the single file `base_variables`. Now configuration for 15*7f296bb3SBarry Smith your system should require only editing the files 16*7f296bb3SBarry Smith \$\{PETSC_ARCH}/base and \$\{PETSC_ARCH}/`base.site` 17*7f296bb3SBarry Smith- The PETSC_ARCH `rs6000` is now intended for IBM rs6000 18*7f296bb3SBarry Smith workstations running MPICH or LAM, while `rs6000_sp` is for IBM 19*7f296bb3SBarry Smith SPs. 20*7f296bb3SBarry Smith- Removed the gvec directory from the distribution. If you are using 21*7f296bb3SBarry Smith this please let us and know and we can provide it or provide 22*7f296bb3SBarry Smith alternative code to do what you need. 23*7f296bb3SBarry Smith- Routines with the suffix "`withcoloring`" have been changed to 24*7f296bb3SBarry Smith the suffix "`color`" to get around the 31 character limit in 25*7f296bb3SBarry Smith names. 26*7f296bb3SBarry Smith- The source code directory structure has changed slightly: pc and 27*7f296bb3SBarry Smith ksp are now subdirectories of sles, and ao and da are 28*7f296bb3SBarry Smith subdirectories of a new directory called dm (data management). 29*7f296bb3SBarry Smith- The PETSc libraries are now: -lpetscts -lpetscsnes -lpetscsles 30*7f296bb3SBarry Smith -lpetscdm -lpetscmat -lpetscvec -lpetsc. Each library is now only 31*7f296bb3SBarry Smith dependent on libraries to the right of it in the list above. For 32*7f296bb3SBarry Smith example, if you are only using the linear solvers, you only need 33*7f296bb3SBarry Smith to list "-lpetscsles -lpetscdm -lpetscmat -lpetscvec -lpetsc" and 34*7f296bb3SBarry Smith if you are only using the vectors you only need to list 35*7f296bb3SBarry Smith "-lpetscvec -lpetsc". 36*7f296bb3SBarry Smith- For users who previously could not use the PETSc makefiles because 37*7f296bb3SBarry Smith the PETSc rules for making .o files conflicted with the user's 38*7f296bb3SBarry Smith rules, we have introduce a new file that may be included by the 39*7f296bb3SBarry Smith user, `${PETSC_DIR}/bmake/${PETSC_ARCH}/base_variables`, which 40*7f296bb3SBarry Smith defines all the useful PETSc makefile variables, but not the 41*7f296bb3SBarry Smith rules. This should make it easier for people who previously had 42*7f296bb3SBarry Smith trouble using the PETSc makefiles. We highly recommend using the 43*7f296bb3SBarry Smith PETSc makefiles when possible because they are immediately 44*7f296bb3SBarry Smith portable across all systems that support PETSc. 45*7f296bb3SBarry Smith 46*7f296bb3SBarry Smith```{rubric} AO (Application Orderings): 47*7f296bb3SBarry Smith``` 48*7f296bb3SBarry Smith 49*7f296bb3SBarry Smith```{rubric} TS (Timestepping Solvers): 50*7f296bb3SBarry Smith``` 51*7f296bb3SBarry Smith 52*7f296bb3SBarry Smith- Removed `TSSetRHSJacobianDefault`() - you can now call 53*7f296bb3SBarry Smith `TSSetRHSJacobian`(... `TSDefaultJacobianColor`,....) 54*7f296bb3SBarry Smith directly from Fortran 55*7f296bb3SBarry Smith- Changed `TSDefaultJacobianSlow()` to `TSDefaultJacobian()` 56*7f296bb3SBarry Smith 57*7f296bb3SBarry Smith```{rubric} SNES (Nonlinear Solvers): 58*7f296bb3SBarry Smith``` 59*7f296bb3SBarry Smith 60*7f296bb3SBarry Smith- S`NESSetConvergenceHistory()` takes an additional argument; 61*7f296bb3SBarry Smith see the manual page for details. 62*7f296bb3SBarry Smith 63*7f296bb3SBarry Smith- Changed the interface for matrix-free methods in SNES so that is 64*7f296bb3SBarry Smith more flexible, in particular: 65*7f296bb3SBarry Smith 66*7f296bb3SBarry Smith - Changed`SNESDefaultMatrixFreeMatCreate()` to 67*7f296bb3SBarry Smith `MatSNESFDMFCreate()`. 68*7f296bb3SBarry Smith 69*7f296bb3SBarry Smith - Added routines 70*7f296bb3SBarry Smith 71*7f296bb3SBarry Smith - MatSNESFDMFSetHHistory(Mat,Scalar \*,int); 72*7f296bb3SBarry Smith - MatSNESFDMFResetHHistory(Mat,Scalar \*,int); 73*7f296bb3SBarry Smith - MatSNESFDMFSetParameters(Mat,double,double); 74*7f296bb3SBarry Smith - MatSNESFDMFGetH(Mat,Scalar \*); 75*7f296bb3SBarry Smith - MatSNESFDMFKSPMonitor(KSP,int,double,void \*); and the 76*7f296bb3SBarry Smith corresponding option `-snes_mf_ksp_monitor` 77*7f296bb3SBarry Smith 78*7f296bb3SBarry Smith - Added support for an alternative way to compute the 79*7f296bb3SBarry Smith differencing parameter in matrix-free methods using the 80*7f296bb3SBarry Smith Walker-Pernice srategy, accessible via the option 81*7f296bb3SBarry Smith `-snes_mf_type` wp 82*7f296bb3SBarry Smith 83*7f296bb3SBarry Smith- Changed the calling sequence of `SNESSetLineSearch()` so that it 84*7f296bb3SBarry Smith accepts an optional user-defined context variable. Likewise, 85*7f296bb3SBarry Smith changed the calling sequences of the various line search routines, 86*7f296bb3SBarry Smith e.g., 87*7f296bb3SBarry Smith `SNESCubicLineSearch(), SNESQuadraticLineSearch()`, 88*7f296bb3SBarry Smith etc. 89*7f296bb3SBarry Smith 90*7f296bb3SBarry Smith```{rubric} SLES (Linear Solvers): 91*7f296bb3SBarry Smith``` 92*7f296bb3SBarry Smith 93*7f296bb3SBarry Smith- See PC and KSP 94*7f296bb3SBarry Smith 95*7f296bb3SBarry Smith```{rubric} KSP (Krylov Subspace Methods): 96*7f296bb3SBarry Smith``` 97*7f296bb3SBarry Smith 98*7f296bb3SBarry Smith- Changed the calling sequence of 99*7f296bb3SBarry Smith `KSPComputeEigenvalues(KSP,int,double*,double*,int *neig);` 100*7f296bb3SBarry Smith to return as the final value the number of eigenvalues computed; 101*7f296bb3SBarry Smith see the manual page for more details. 102*7f296bb3SBarry Smith- Changed GMRES to use the Gram-Schmidt method with one optional 103*7f296bb3SBarry Smith step of iterative refinement as the default orthogonalization 104*7f296bb3SBarry Smith procedure, instead of the modified Gram-Schmidt method. This 105*7f296bb3SBarry Smith change was urged by Rich Lehoucq. It could cause very minor 106*7f296bb3SBarry Smith differences in convergence rates for codes run before and after 107*7f296bb3SBarry Smith this change. 108*7f296bb3SBarry Smith- The option `-ksp_bsmonitor` is not longer needed; use 109*7f296bb3SBarry Smith -`ksp_truemonitor` for the same affect. 110*7f296bb3SBarry Smith- Added an additional argument to `KSPSetResidualHistory()`; see 111*7f296bb3SBarry Smith the manual page for details. This change was suggested by Maria 112*7f296bb3SBarry Smith Murillo. 113*7f296bb3SBarry Smith 114*7f296bb3SBarry Smith```{rubric} PC (Preconditioners): 115*7f296bb3SBarry Smith``` 116*7f296bb3SBarry Smith 117*7f296bb3SBarry Smith- Removed support for block Gauss-Seidel from the distribution; 118*7f296bb3SBarry Smith `-pc_type bgs` is no longer supported. 119*7f296bb3SBarry Smith- The Eisenstat preconditioner (SSOR variant) now uses diagonal 120*7f296bb3SBarry Smith scaling by default, and the options 121*7f296bb3SBarry Smith `PCEisenstatUseDiagonalScaling()` and 122*7f296bb3SBarry Smith `-pc_eisenstat_diagonal_scaling` have been replaced with 123*7f296bb3SBarry Smith `PCEisenstatNoDiagonalScaling()` and 124*7f296bb3SBarry Smith `-pc_eisenstat_no_diagonal_scaling` 125*7f296bb3SBarry Smith 126*7f296bb3SBarry Smith```{rubric} MAT (Matrices): 127*7f296bb3SBarry Smith``` 128*7f296bb3SBarry Smith 129*7f296bb3SBarry Smith- Replaced`MatGetSubMatrixCall`() with `MatReuse().` 130*7f296bb3SBarry Smith- Changed the calling sequence of `MatILUFactor()` and 131*7f296bb3SBarry Smith `MatILUFactorSymbolic()` to increase flexibility of adding new 132*7f296bb3SBarry Smith ILU options. 133*7f296bb3SBarry Smith- Added an additional argument to `MatCopy()`; 134*7f296bb3SBarry Smith `SAME_NONZERO_PATTERN` or `DIFFERENT_NONZERO_PATTERN.` 135*7f296bb3SBarry Smith- Added an additional argument to `MatDuplicate()`, 136*7f296bb3SBarry Smith `MAT_COPY_VALUES` or `MAT_DO_NOT_COPY_VALUES.` 137*7f296bb3SBarry Smith- Changed the flag `MAT_NEW_NONZERO_LOCATION_ERROR` to 138*7f296bb3SBarry Smith `MAT_NEW_NONZERO_LOCATION_ERR`; also changed 139*7f296bb3SBarry Smith `MAT_NEW_ALLOCATION_ERROR` to `MAT_NEW_ALLOCATION_ERR` 140*7f296bb3SBarry Smith- Changed `MatOrder`xxx to `MatOrdering`xxx; changed 141*7f296bb3SBarry Smith `MatOrderingType` to char\* from enum 142*7f296bb3SBarry Smith- Changed `Mat`xxx`Reordering`xxx to 143*7f296bb3SBarry Smith `Mat`xxx`Ordering`xxx changed command line option 144*7f296bb3SBarry Smith `-mat_order` to -`mat_ordering_type;` changed 145*7f296bb3SBarry Smith `MatColoringType`to char\* from enum 146*7f296bb3SBarry Smith- Changed `Partitioning`xxx to `MatPartitioning`xxx 147*7f296bb3SBarry Smith 148*7f296bb3SBarry Smith```{rubric} DA (Distributed Arrays): 149*7f296bb3SBarry Smith``` 150*7f296bb3SBarry Smith 151*7f296bb3SBarry Smith- `DAGetInfo()` has a new final argument, the stencil type. See 152*7f296bb3SBarry Smith the manual change your current code to work, you only need add an 153*7f296bb3SBarry Smith extra `PETSC_NULL` as a final argument. 154*7f296bb3SBarry Smith 155*7f296bb3SBarry Smith```{rubric} VEC (Vectors): 156*7f296bb3SBarry Smith``` 157*7f296bb3SBarry Smith 158*7f296bb3SBarry Smith- After a call to `VecCreate()` you MUST either call 159*7f296bb3SBarry Smith `VecSetType()` or `VecSetFromOptions()` on the vector before 160*7f296bb3SBarry Smith using it for any purpose. The `VecCreate`xxx() routines (e.g., 161*7f296bb3SBarry Smith `VecCreateSeq(), VecCreateMPI()`) do not need to have calls to 162*7f296bb3SBarry Smith VecSetType() or VecSetFromOptions() after them. 163*7f296bb3SBarry Smith- All `VecGetArray()` calls MUST now be matched with a 164*7f296bb3SBarry Smith `VecRestoreArray()` call; previous PETSc versions did not force 165*7f296bb3SBarry Smith compliance with this rule. 166*7f296bb3SBarry Smith- The command line names for changing the vector type in 167*7f296bb3SBarry Smith `VecCreate(`) are now `-vec_type mpi` or `-vec_type shared` 168*7f296bb3SBarry Smith rather than `-vec_mpi` or `-vec_shared` 169*7f296bb3SBarry Smith- Changed the `VecType` variable type from an enum type to a 170*7f296bb3SBarry Smith string. 171*7f296bb3SBarry Smith- Changed the calling sequence for `VecGetType()`; see the manual 172*7f296bb3SBarry Smith page for details. 173*7f296bb3SBarry Smith- Changed `VecGhostGetLocalRepresentation()` and 174*7f296bb3SBarry Smith `VecGhostRestoreLocalRepresentation()`, to 175*7f296bb3SBarry Smith `VecGhostGetLocalForm()` and `VecGhostRestoreLocalForm()`, 176*7f296bb3SBarry Smith respectively; the previous names had too many characters for some 177*7f296bb3SBarry Smith machines. 178*7f296bb3SBarry Smith 179*7f296bb3SBarry Smith```{rubric} IS (Index Sets): 180*7f296bb3SBarry Smith``` 181*7f296bb3SBarry Smith 182*7f296bb3SBarry Smith```{rubric} Draw (Graphics): 183*7f296bb3SBarry Smith``` 184*7f296bb3SBarry Smith 185*7f296bb3SBarry Smith- Replaced`VIEWER_DRAWX_`.... with `VIEWER_DRAW_`.... 186*7f296bb3SBarry Smith- The arguments of `ViewerDrawGetDraw`() have been changed; see 187*7f296bb3SBarry Smith the manual page for details. 188*7f296bb3SBarry Smith- `DrawTensorContour()` has changed; its final argument is now an 189*7f296bb3SBarry Smith array can now use `VecView()` to create the contour plot. 190*7f296bb3SBarry Smith 191*7f296bb3SBarry Smith```{rubric} Viewers: 192*7f296bb3SBarry Smith``` 193*7f296bb3SBarry Smith 194*7f296bb3SBarry Smith- Changed the names associated with the MATLAB viewer to Socket 195*7f296bb3SBarry Smith viewer; this reflects our plan to support additional graphics 196*7f296bb3SBarry Smith engines with PETSc. 197*7f296bb3SBarry Smith- Changed `ViewerFileOpenASCII()` to `ViewerASCIIOpen().` 198*7f296bb3SBarry Smith- Changed `ViewerDrawOpenX(`) to `ViewerDrawOpen().` 199*7f296bb3SBarry Smith- Changed `ViewerFileOpenBinary()` to `ViewerBinaryOpen().` 200*7f296bb3SBarry Smith- Changed `ViewerType` from an enum to a char \*. 201*7f296bb3SBarry Smith 202*7f296bb3SBarry Smith```{rubric} System: 203*7f296bb3SBarry Smith``` 204*7f296bb3SBarry Smith 205*7f296bb3SBarry Smith- Changed the calling sequence of 206*7f296bb3SBarry Smith `PetscGetHomeDirectory(char dir[],int maxlen)`. 207*7f296bb3SBarry Smith- Changed the calling sequence of 208*7f296bb3SBarry Smith `PetscFixFilename(const char filein[],char fileout[]).` 209*7f296bb3SBarry Smith- Changed the calling sequence of `PetscGetDate().` 210*7f296bb3SBarry Smith 211*7f296bb3SBarry Smith```{rubric} Error Handling: 212*7f296bb3SBarry Smith``` 213*7f296bb3SBarry Smith 214*7f296bb3SBarry Smith```{rubric} Event Logging: 215*7f296bb3SBarry Smith``` 216*7f296bb3SBarry Smith 217*7f296bb3SBarry Smith```{rubric} Fortran Interface: 218*7f296bb3SBarry Smith``` 219*7f296bb3SBarry Smith 220*7f296bb3SBarry Smith## Features 221*7f296bb3SBarry Smith 222*7f296bb3SBarry Smith(See [Changes] above) 223*7f296bb3SBarry Smith 224*7f296bb3SBarry Smith```{rubric} General: 225*7f296bb3SBarry Smith``` 226*7f296bb3SBarry Smith 227*7f296bb3SBarry Smith- Add the routine `OptionsGetAll().` 228*7f296bb3SBarry Smith- Added support for Sun Solaris running on Intel processors; 229*7f296bb3SBarry Smith PETSC_ARCH solaris_x86. 230*7f296bb3SBarry Smith- Added option -`optionsleft_off` so BOPT=g version of code will 231*7f296bb3SBarry Smith not print warnings about unused options. 232*7f296bb3SBarry Smith- The environment variable PETSC_ARCH is now required to use the NT 233*7f296bb3SBarry Smith distribution. 234*7f296bb3SBarry Smith- Added the routine `OptionsGetLogical().` 235*7f296bb3SBarry Smith- We now include PETSC_ARCH of solaris_gnu, rs6000_gnu for those 236*7f296bb3SBarry Smith systems when using the gnu compilers. 237*7f296bb3SBarry Smith- Thanks to the generosity of the FreeBSD organization, we are now 238*7f296bb3SBarry Smith supporting freebsd again. 239*7f296bb3SBarry Smith- Added optional filename to `-log_info` \<filename> option. PETSc 240*7f296bb3SBarry Smith will open a separate file, called filename.rank for each processor 241*7f296bb3SBarry Smith and print the output there. 242*7f296bb3SBarry Smith- Added `PetscTypeCompare()`; see the manual page. 243*7f296bb3SBarry Smith 244*7f296bb3SBarry Smith```{rubric} AO (Application Orderings): 245*7f296bb3SBarry Smith``` 246*7f296bb3SBarry Smith 247*7f296bb3SBarry Smith- `AOPetscToApplicationIS()` and `AOApplicationToPetscIS()`, 248*7f296bb3SBarry Smith when passed a stride index set, now handle them correctly. 249*7f296bb3SBarry Smith 250*7f296bb3SBarry Smith```{rubric} TS (Timestepping Solvers): 251*7f296bb3SBarry Smith``` 252*7f296bb3SBarry Smith 253*7f296bb3SBarry Smith- Added `TSSetTypeFromOptions().` 254*7f296bb3SBarry Smith 255*7f296bb3SBarry Smith```{rubric} SNES (Nonlinear Solvers): 256*7f296bb3SBarry Smith``` 257*7f296bb3SBarry Smith 258*7f296bb3SBarry Smith- Added `-snes_vecmonitor` and `SNESMonitorVec()` to allow 259*7f296bb3SBarry Smith graphically monitoring the solution. 260*7f296bb3SBarry Smith- Added `SNESSetTypeFromOptions().` 261*7f296bb3SBarry Smith- Added the routine `SNESSetLineSearchCheck()`, which sets a 262*7f296bb3SBarry Smith routine to check the validity of new iterates computed by line 263*7f296bb3SBarry Smith search routines; see the manual page for details. 264*7f296bb3SBarry Smith 265*7f296bb3SBarry Smith```{rubric} SLES (Linear Solvers): 266*7f296bb3SBarry Smith``` 267*7f296bb3SBarry Smith 268*7f296bb3SBarry Smith- See PC and KSP 269*7f296bb3SBarry Smith- Added `SLESSetTypesFromOptions().` 270*7f296bb3SBarry Smith 271*7f296bb3SBarry Smith```{rubric} KSP (Krylov Subspace Methods): 272*7f296bb3SBarry Smith``` 273*7f296bb3SBarry Smith 274*7f296bb3SBarry Smith- Added the function `KSPSetAvoidNorms()` and corresponding option 275*7f296bb3SBarry Smith `-ksp_avoid_norms`. For the methods CG, Richardson, Bi-CG-stab, 276*7f296bb3SBarry Smith CR, and CGS, this eliminates the computation of the residual norm 277*7f296bb3SBarry Smith at each iteration (which is an expensive, collective operation). 278*7f296bb3SBarry Smith Then the convergence criterion depends only on the maximum number 279*7f296bb3SBarry Smith of iterations the users sets with `KSPSetTolerances().` This is 280*7f296bb3SBarry Smith useful when using the Krylov method as a smoother with a fixed 281*7f296bb3SBarry Smith number of iterations (say, e.g., 3 iterations). 282*7f296bb3SBarry Smith- Added the KSP type of `KSPBICG` (contributed by Victor Eijkhout) 283*7f296bb3SBarry Smith and added support to some of the preconditioners to apply the 284*7f296bb3SBarry Smith preconditioner transpose (required by KSPBICG). 285*7f296bb3SBarry Smith- Added `-ksp_vecmonitor` and `KSPMonitorVec()` to allow 286*7f296bb3SBarry Smith graphically monitoring the solution's convergence. 287*7f296bb3SBarry Smith- Added `KSPSetTypeFromOptions().` 288*7f296bb3SBarry Smith 289*7f296bb3SBarry Smith```{rubric} PC (Preconditioners): 290*7f296bb3SBarry Smith``` 291*7f296bb3SBarry Smith 292*7f296bb3SBarry Smith- Added `PCLUSetReuseReordering()` and `PCLUSetReuseFill()` so 293*7f296bb3SBarry Smith that SLES can reuse the reordering and fill information for a new 294*7f296bb3SBarry Smith factorization of a matrix with slightly different nonzero 295*7f296bb3SBarry Smith structure than the previous factorization. The corresponding 296*7f296bb3SBarry Smith command line options are -`pc_lu_reuse_reordering` and 297*7f296bb3SBarry Smith `-pc_lu_reuse_fill`. These two options only have an effect when 298*7f296bb3SBarry Smith the `SLESSetOperators()` option of `DIFFERENT_NONZERO_PATTERN` 299*7f296bb3SBarry Smith is used; otherwise the ordering and fill information is always 300*7f296bb3SBarry Smith reused. 301*7f296bb3SBarry Smith- Added `PCGetVector()`, not expected to be used by application 302*7f296bb3SBarry Smith programmers. 303*7f296bb3SBarry Smith- Added the option `-pc_ilu_diagonal_fill` and the corresponding 304*7f296bb3SBarry Smith routine `PCILUSetAllowDiagonalFill()`; see the manual page for 305*7f296bb3SBarry Smith details; helps ILU(k) on matrices with missing diagonal entries. 306*7f296bb3SBarry Smith Suggested by David Hysom. 307*7f296bb3SBarry Smith- Added `PCSetTypeFromOptions().` 308*7f296bb3SBarry Smith 309*7f296bb3SBarry Smith```{rubric} MAT (Matrices): 310*7f296bb3SBarry Smith``` 311*7f296bb3SBarry Smith 312*7f296bb3SBarry Smith- Added `MatSeqAIJSetColumnIndices()` and 313*7f296bb3SBarry Smith `MatSeqBAIJSetColumnIndices()`. 314*7f296bb3SBarry Smith- If the option `MAT_IGNORE_OFF_PROC_ENTRIES` is used, then the 315*7f296bb3SBarry Smith routines `MatAssemblyBegin()` and `MatAssemblyEnd()` will not 316*7f296bb3SBarry Smith cause any parallel communication or synchronization. 317*7f296bb3SBarry Smith- If the option `MAT_NEW_NONZERO_LOCATIONS` is used, one less 318*7f296bb3SBarry Smith collective call will be made in the `MatAssemblyEnd()` routines 319*7f296bb3SBarry Smith for MPIAIJ and MPIBAIJ. 320*7f296bb3SBarry Smith- Fixed bugs in `MatReorderForNonzeroDiagonal()` and made it more 321*7f296bb3SBarry Smith robust. 322*7f296bb3SBarry Smith- Fixed bugs in factorization for AIJ matrices with variable size 323*7f296bb3SBarry Smith inodes. 324*7f296bb3SBarry Smith- Indices that are negative passed into `MatSetValues...()` are 325*7f296bb3SBarry Smith now ignored (rather than generating an error). This allows easily 326*7f296bb3SBarry Smith keeping homogeneous Dirichlet boundary nodes out of the vectors 327*7f296bb3SBarry Smith and matrices for unstructured grid problems; just indicate those 328*7f296bb3SBarry Smith node numbers with negative numbers. 329*7f296bb3SBarry Smith- Added additional optimized code for BAIJ matrices with block sizes 330*7f296bb3SBarry Smith 2, 3, 5, 6, and 7. 331*7f296bb3SBarry Smith- Improved the performance of `MatSetValues()` and 332*7f296bb3SBarry Smith `MatAssemblyXXX()` for parallel matrices a great deal. 333*7f296bb3SBarry Smith- Added the option `-matstash_initial_size` \<stashsize> and 334*7f296bb3SBarry Smith `-matstash_block_initial_size` \<stashsize> and the routine 335*7f296bb3SBarry Smith `MatSetStashInitialSize()` to allow further optimization of 336*7f296bb3SBarry Smith off-processor`MatSetValues().` 337*7f296bb3SBarry Smith 338*7f296bb3SBarry Smith```{rubric} DA (Distributed Arrays): 339*7f296bb3SBarry Smith``` 340*7f296bb3SBarry Smith 341*7f296bb3SBarry Smith- Added graphics support to DA vectors in 1d and 2d, with contour 342*7f296bb3SBarry Smith plotters for 2d. 343*7f296bb3SBarry Smith 344*7f296bb3SBarry Smith```{rubric} VEC (Vectors): 345*7f296bb3SBarry Smith``` 346*7f296bb3SBarry Smith 347*7f296bb3SBarry Smith- Extended `VecCreate()` by allowing registration of new vector 348*7f296bb3SBarry Smith types with `VecRegister()` see the manual page for details. 349*7f296bb3SBarry Smith- Indices that are negative passed into `VecSetValues...()` are 350*7f296bb3SBarry Smith now ignored (rather than generating an error). This allows easily 351*7f296bb3SBarry Smith keeping homogeneous Dirichlet boundary nodes out of the vectors 352*7f296bb3SBarry Smith and matrices for unstructured grid problems; just indicate those 353*7f296bb3SBarry Smith node numbers with negative numbers. 354*7f296bb3SBarry Smith- Added `VecDotBegin()`, `VecDotEnd()`, `VecNormBegin()`, 355*7f296bb3SBarry Smith `VecNormEnd()`, which reduce communication overhead in parallel; 356*7f296bb3SBarry Smith see the manual pages for details (suggested by Victor Eijkhout). 357*7f296bb3SBarry Smith- If the option `VEC_IGNORE_OFF_PROC_ENTRIES` is used, the 358*7f296bb3SBarry Smith `VecAssemblyBegin()` and `VecAssemblyEnd()` routines will not 359*7f296bb3SBarry Smith cause any parallel communication or synchronization (previously 360*7f296bb3SBarry Smith `VecAssemblyBegin()` still used a barrier). 361*7f296bb3SBarry Smith- Added `VIEWER_FORMAT_ASCII_INDEX` which causes the index for 362*7f296bb3SBarry Smith each vector entry to be printed with the vector values. 363*7f296bb3SBarry Smith- Added three new vector scatter options; `-vecscatter_merge` and 364*7f296bb3SBarry Smith `-vecscatter_ssend` and `-vecscatter_sendfirst`; these may 365*7f296bb3SBarry Smith improve performance a great deal when using MPICH for MPI on 366*7f296bb3SBarry Smith ethernet or fast ethernet. 367*7f296bb3SBarry Smith- Added `VecStrideNorm(), VecStrideScatter()`, and 368*7f296bb3SBarry Smith `VecStrideGather().` 369*7f296bb3SBarry Smith- Improved the performance of `VecSetValues()` and 370*7f296bb3SBarry Smith `VecAssemblyXXX()` for parallel vectors. 371*7f296bb3SBarry Smith- Added the option `-vecstash_initial_size` \<stashsize> and 372*7f296bb3SBarry Smith `-vecstash_block_initial_size` \<stashsize> and the routine 373*7f296bb3SBarry Smith `VecSetStashInitialSize()` to allow further optimization of 374*7f296bb3SBarry Smith off-processor `VecSetValues()`. 375*7f296bb3SBarry Smith 376*7f296bb3SBarry Smith```{rubric} IS (Index Sets): 377*7f296bb3SBarry Smith``` 378*7f296bb3SBarry Smith 379*7f296bb3SBarry Smith- Added `ISStrideToGeneral()`, which converts a stride type index 380*7f296bb3SBarry Smith set to a general type. 381*7f296bb3SBarry Smith 382*7f296bb3SBarry Smith```{rubric} Draw (Graphics): 383*7f296bb3SBarry Smith``` 384*7f296bb3SBarry Smith 385*7f296bb3SBarry Smith```{rubric} Viewers: 386*7f296bb3SBarry Smith``` 387*7f296bb3SBarry Smith 388*7f296bb3SBarry Smith- Added `ViewerASCIIPushTab()`, `ViewerASCIIPopTab()` and 389*7f296bb3SBarry Smith `ViewerASCIIPrintf()`. These allow multi-level display of solver 390*7f296bb3SBarry Smith information (tabing the text further for each inner solver). 391*7f296bb3SBarry Smith Thanks to Victor Eijkhout and Matt Knepley for pushing this. 392*7f296bb3SBarry Smith 393*7f296bb3SBarry Smith```{rubric} System: 394*7f296bb3SBarry Smith``` 395*7f296bb3SBarry Smith 396*7f296bb3SBarry Smith```{rubric} Error Handling: 397*7f296bb3SBarry Smith``` 398*7f296bb3SBarry Smith 399*7f296bb3SBarry Smith```{rubric} Event Logging: 400*7f296bb3SBarry Smith``` 401*7f296bb3SBarry Smith 402*7f296bb3SBarry Smith```{rubric} Fortran Interface: 403*7f296bb3SBarry Smith``` 404*7f296bb3SBarry Smith 405*7f296bb3SBarry Smith- Added Fortran 90 interface support for HP Convex and 406*7f296bb3SBarry Smith Solaris.machine. 407