xref: /petsc/doc/changes/2017.md (revision b11d9968bc79904c690b122f9399be46447eb113)
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