1*7f296bb3SBarry Smith# Changes: 2.0.17 2*7f296bb3SBarry Smith 3*7f296bb3SBarry Smith```{rubric} General: 4*7f296bb3SBarry Smith``` 5*7f296bb3SBarry Smith 6*7f296bb3SBarry Smith- Added support for Windows NT/95 using the Microsoft Developers 7*7f296bb3SBarry Smith Studio Visual C++. See the file 'Installation' for details. 8*7f296bb3SBarry Smith- Other new machines on which this release has been tested: Cray 9*7f296bb3SBarry Smith T3E, SGI Origin See the file petsc/Installation for a complete 10*7f296bb3SBarry Smith list. 11*7f296bb3SBarry Smith 12*7f296bb3SBarry Smith```{rubric} TS (Timestepping Solvers): 13*7f296bb3SBarry Smith``` 14*7f296bb3SBarry Smith 15*7f296bb3SBarry Smith- Modified the pseudo-transient continuation updates: 16*7f296bb3SBarry Smith- Changed the default update to dt = 17*7f296bb3SBarry Smith current_dt\*previous_fnorm/current_fnorm. 18*7f296bb3SBarry Smith- Added the routine TSPseudoIncrementDtFromInitialDt() and the 19*7f296bb3SBarry Smith corresponding option -ts_pseudo_increment_dt_from_initial_dt to 20*7f296bb3SBarry Smith indicate use of the alternative update formula dt = 21*7f296bb3SBarry Smith initial_dt\*initial_fnorm/current_fnorm. 22*7f296bb3SBarry Smith- Changed the calling sequence of TSRegister(). 23*7f296bb3SBarry Smith 24*7f296bb3SBarry Smith```{rubric} SNES (Nonlinear Solvers): 25*7f296bb3SBarry Smith``` 26*7f296bb3SBarry Smith 27*7f296bb3SBarry Smith- Added support for computing large, sparse Jacobians efficiently 28*7f296bb3SBarry Smith via finite differences, see Section 5.6 (Finite Difference 29*7f296bb3SBarry Smith Jacobian Approximations) of the users manual. 30*7f296bb3SBarry Smith- Added the routines SNESGetNumberLinearIterations() and 31*7f296bb3SBarry Smith SNESSetConvergenceHistory(). See man pages for details. 32*7f296bb3SBarry Smith- Activated a counter of function evaluations, which is used in 33*7f296bb3SBarry Smith convergence tests to terminate solver if the number of function 34*7f296bb3SBarry Smith evaluations exceeds a given tolerance. Note: Users of matrix-free 35*7f296bb3SBarry Smith Newton-Krylov methods may need to reset the default allowable 36*7f296bb3SBarry Smith maximum (1000), via SNESSetTolerances() or -snes_max_func 37*7f296bb3SBarry Smith \<maxfunc>. 38*7f296bb3SBarry Smith- Changed the calling sequence of SNESRegister(). 39*7f296bb3SBarry Smith 40*7f296bb3SBarry Smith```{rubric} SLES (Linear Solvers): 41*7f296bb3SBarry Smith``` 42*7f296bb3SBarry Smith 43*7f296bb3SBarry Smith- See PC and KSP 44*7f296bb3SBarry Smith 45*7f296bb3SBarry Smith```{rubric} KSP (Krylov Subspace Methods): 46*7f296bb3SBarry Smith``` 47*7f296bb3SBarry Smith 48*7f296bb3SBarry Smith- Changed the calling sequence of KSPRegister(). 49*7f296bb3SBarry Smith 50*7f296bb3SBarry Smith```{rubric} PC (Preconditioners): 51*7f296bb3SBarry Smith``` 52*7f296bb3SBarry Smith 53*7f296bb3SBarry Smith- Changed the calling sequence of PCRegister(). 54*7f296bb3SBarry Smith- New Additive Schwarz variants (preconditioner type PCASM) 55*7f296bb3SBarry Smith- Added the routine PCASMSetType() (and the corresponding option 56*7f296bb3SBarry Smith -pc_asm_type [basic,restrict,interpolate,none]) for setting the 57*7f296bb3SBarry Smith variant of the additive Schwarz method. See the man page and users 58*7f296bb3SBarry Smith manual for details. 59*7f296bb3SBarry Smith- Changed the default variant of PCASM from full restriction and 60*7f296bb3SBarry Smith interpolation to full restriction only, since this version 61*7f296bb3SBarry Smith requires less communication and for many problems converges faster 62*7f296bb3SBarry Smith than the basic variant that uses full restriction and 63*7f296bb3SBarry Smith interpolation. Users can still employ the basic ASM by calling 64*7f296bb3SBarry Smith PCASMSetType(pc,PC_ASM_BASIC) or by using the option -pc_asm_type 65*7f296bb3SBarry Smith basic. 66*7f296bb3SBarry Smith- Added an interface to the SPAI preconditioner implementation of 67*7f296bb3SBarry Smith Steven Bernard; see src/contrib/spai. This has undergone little 68*7f296bb3SBarry Smith testing and optimization; it is intended mainly for "hackers". 69*7f296bb3SBarry Smith 70*7f296bb3SBarry Smith```{rubric} MAT (Matrices): 71*7f296bb3SBarry Smith``` 72*7f296bb3SBarry Smith 73*7f296bb3SBarry Smith- Added the matrix option, 74*7f296bb3SBarry Smith MatSetOption(mat,MAT_NEW_NONZERO_LOCATION_ERROR), that will cause 75*7f296bb3SBarry Smith an error if a new nonzero is generated in a sparse matrix. 76*7f296bb3SBarry Smith (currently implemented for AIJ and BAIJ matrices only). This is a 77*7f296bb3SBarry Smith useful flag when using SAME_NONZERO_PATTERN in calling 78*7f296bb3SBarry Smith SLESSetOperators() to ensure that the nonzero pattern truly does 79*7f296bb3SBarry Smith remain unchanged. For examples, see the programs 80*7f296bb3SBarry Smith petsc/src/snes/examples/tutorials/[ex5.c,ex5f.F]. 81*7f296bb3SBarry Smith- Added the routine MatSetUnfactored(), intended primarily for use 82*7f296bb3SBarry Smith with in-place ILU(0) factorization as a preconditioner for 83*7f296bb3SBarry Smith matrix-free Krylov methods. See the manual page for details. 84*7f296bb3SBarry Smith- Added the routines MatConvertRegisterAll() and 85*7f296bb3SBarry Smith MatLoadRegisterAll() to allow the restriction of the matrix 86*7f296bb3SBarry Smith routines linked into an application code. This can decrease the 87*7f296bb3SBarry Smith size of your executable and the time it takes to link your 88*7f296bb3SBarry Smith program. For details, see the manual page and 89*7f296bb3SBarry Smith petsc/src/snes/examples/tutorials/ex5.c 90*7f296bb3SBarry Smith- Added the routine MatSetValuesBlocked(), for more efficient 91*7f296bb3SBarry Smith assembly of block AIJ formatted matrices (MATSEQBAIJ and 92*7f296bb3SBarry Smith MATMPIBAIJ). 93*7f296bb3SBarry Smith- Changed the calling sequence of MatReorderingRegister(); 94*7f296bb3SBarry Smith 95*7f296bb3SBarry Smith```{rubric} DA (Distributed Arrays): 96*7f296bb3SBarry Smith``` 97*7f296bb3SBarry Smith 98*7f296bb3SBarry Smith- Added additional arguments to DACreate1d(), DACreate2d(), and 99*7f296bb3SBarry Smith DACreate3d() to allow the user to set the distribution of nodes on 100*7f296bb3SBarry Smith each processor; set these arguments to PETSC_NULL for the standard 101*7f296bb3SBarry Smith default distribution. 102*7f296bb3SBarry Smith- Modified DAGetInfo() to return the type of periodicity. 103*7f296bb3SBarry Smith 104*7f296bb3SBarry Smith```{rubric} VEC (Vectors): 105*7f296bb3SBarry Smith``` 106*7f296bb3SBarry Smith 107*7f296bb3SBarry Smith- Added the routine VecCreateGhost() to create vectors that have 108*7f296bb3SBarry Smith ghost padding at the end of the local array. This is useful for 109*7f296bb3SBarry Smith gathering remote values to perform local calculations that involve 110*7f296bb3SBarry Smith off-processor ghost values. This is often appropriate for codes 111*7f296bb3SBarry Smith using unstructured grids. See 112*7f296bb3SBarry Smith petsc/src/vec/examples/tutorials/ex9.c for possible usage. 113*7f296bb3SBarry Smith 114*7f296bb3SBarry Smith```{rubric} IS (Index Sets): 115*7f296bb3SBarry Smith``` 116*7f296bb3SBarry Smith 117*7f296bb3SBarry Smith```{rubric} Draw (Graphics): 118*7f296bb3SBarry Smith``` 119*7f296bb3SBarry Smith 120*7f296bb3SBarry Smith- Application codes should not need to use #include "draw.h" anymore 121*7f296bb3SBarry Smith from C/C++, since this file is now included automatically when 122*7f296bb3SBarry Smith "petsc.h" or any other PETSc include file is included. 123*7f296bb3SBarry Smith 124*7f296bb3SBarry Smith```{rubric} Viewers: 125*7f296bb3SBarry Smith``` 126*7f296bb3SBarry Smith 127*7f296bb3SBarry Smith- VIEWER_DRAWX_WORLD, VIEWER_DRAWX_SELF, VIEWER_MATLAB_WORLD are now 128*7f296bb3SBarry Smith supported from Fortran. 129*7f296bb3SBarry Smith- Added VIEWER_DRAWX\_(MPI_Comm comm) from C. Useful for rapid code 130*7f296bb3SBarry Smith prototyping without having to declare a Viewer. 131*7f296bb3SBarry Smith 132*7f296bb3SBarry Smith```{rubric} System Routines: 133*7f296bb3SBarry Smith``` 134*7f296bb3SBarry Smith 135*7f296bb3SBarry Smith- Since memory leaks and uninitialized memory can be serious 136*7f296bb3SBarry Smith problems for large-scale application codes, we've added several 137*7f296bb3SBarry Smith new tools to assist in their diagnosis. These tools are all work 138*7f296bb3SBarry Smith in conjunction with the PETSc memory allocation (the default for 139*7f296bb3SBarry Smith codes that are compiled in debug mode with 140*7f296bb3SBarry Smith BOPT=[g,g_c++,g_complex]). 141*7f296bb3SBarry Smith- Added the runtime option -trmalloc_log, which activates logging of 142*7f296bb3SBarry Smith all calls to malloc via the new routines PetscTrLog() and 143*7f296bb3SBarry Smith PetscTrLogDump(). 144*7f296bb3SBarry Smith- Added the routine PetscGetResidentSetSize() to determine the total 145*7f296bb3SBarry Smith memory used by a process (this is activated by -trmalloc_log); see 146*7f296bb3SBarry Smith the man page for details. 147*7f296bb3SBarry Smith- Added the option -trmalloc_nan for tracking down allocated memory 148*7f296bb3SBarry Smith that is used before it has been initialized. This option calls the 149*7f296bb3SBarry Smith new routines PetscInitializeNans() and PetscInitializeLargeInts(). 150*7f296bb3SBarry Smith So far these work on the Sun4 system. 151*7f296bb3SBarry Smith 152*7f296bb3SBarry Smith```{rubric} Error Handling: 153*7f296bb3SBarry Smith``` 154*7f296bb3SBarry Smith 155*7f296bb3SBarry Smith- The error checking macros SETERRQ() and SETERRA() now have the 156*7f296bb3SBarry Smith calling sequence SETERRQ(int ierr,int pierr,char \*message); where 157*7f296bb3SBarry Smith pierr is an additional integer error code passed to the error 158*7f296bb3SBarry Smith handler. Currently you should just set pierr=1. 159*7f296bb3SBarry Smith- Also, SETERRQ() and SETERRA() now use the macro \_\_FUNC\_\_ to keep 160*7f296bb3SBarry Smith track of routine names. Users need not worry about this in their 161*7f296bb3SBarry Smith application codes, but can take advantage of this feature if 162*7f296bb3SBarry Smith desired by setting this macro before each user-defined routine 163*7f296bb3SBarry Smith that may call SETERRQ(), SETERRA(), CHKERRQ(), or CHKERRA(). 164*7f296bb3SBarry Smith \_\_FUNC\_\_ should be set to a string containing the routine name. 165*7f296bb3SBarry Smith For example, #undef \_\_FUNC\_\_ #define \_\_FUNC\_\_ "MyRoutine1" int 166*7f296bb3SBarry Smith MyRoutine1() { /\* code here \*/ return 0; } See 167*7f296bb3SBarry Smith petsc/src/snes/examples/tutorials/ex3.c for an example. 168*7f296bb3SBarry Smith- PETSc error handlers now take two additional arguments. Consult 169*7f296bb3SBarry Smith the man page for PetscPushErrorHandler() for more information. 170*7f296bb3SBarry Smith 171*7f296bb3SBarry Smith```{rubric} Event Logging: 172*7f296bb3SBarry Smith``` 173*7f296bb3SBarry Smith 174*7f296bb3SBarry Smith- Changed PLogPrintSummary(MPI_Comm,FILE \*) to 175*7f296bb3SBarry Smith PLogPrintSummary(MPI_Comm,char \*). 176*7f296bb3SBarry Smith- Now the option -log_summary takes [filename] as an optional 177*7f296bb3SBarry Smith argument. 178*7f296bb3SBarry Smith 179*7f296bb3SBarry Smith```{rubric} Fortran Interface: 180*7f296bb3SBarry Smith``` 181*7f296bb3SBarry Smith 182*7f296bb3SBarry Smith- Added some limited support for direct use of Fortran90 pointers in 183*7f296bb3SBarry Smith the routines Vec[Get,Restore]ArrayF90(), 184*7f296bb3SBarry Smith Mat[Get,Restore]ArrayF90(), IS[Get,Restore]IndicesF90(), 185*7f296bb3SBarry Smith ISBlock[Get,Restore]IndicesF90(), VecDuplicateVecsF90(), 186*7f296bb3SBarry Smith VecDestroyVecsF90(), DAGetGlobalIndicesF90(). See the man pages 187*7f296bb3SBarry Smith and the section 'Fortran90' in the users manal for details. 188*7f296bb3SBarry Smith Unfortunately, these routines currently work only with the NAG F90 189*7f296bb3SBarry Smith compiler. We hope to support other compilers as well, but we will 190*7f296bb3SBarry Smith need assistance from the vendors since the Fortran90/C interface 191*7f296bb3SBarry Smith is not a defined standard. 192*7f296bb3SBarry Smith- Added the macro PetscDoubleExp(a,b) = a d b (machines where double 193*7f296bb3SBarry Smith precision arithmetic is used) = a e b (machines where single 194*7f296bb3SBarry Smith precision arithmetic is used, e.g., Crays) This macro is intended 195*7f296bb3SBarry Smith for use only if you wish to maintain a Fortran code that is 196*7f296bb3SBarry Smith portable to both the Cray T3d/T3e and other Unix machines. 197*7f296bb3SBarry Smith- For mixed Fortran/C users: added the makefile flag FCONF that may 198*7f296bb3SBarry Smith be used in place of the flag CONF. For an example of usage, see 199*7f296bb3SBarry Smith src/vec/examples/tutorials/makefile 200