xref: /petsc/doc/changes/37.md (revision b11d9968bc79904c690b122f9399be46447eb113)
1*7f296bb3SBarry Smith# Changes: 3.7
2*7f296bb3SBarry Smith
3*7f296bb3SBarry Smith```{rubric} General:
4*7f296bb3SBarry Smith```
5*7f296bb3SBarry Smith
6*7f296bb3SBarry Smith- -log_summary is deprecated, you should use -log_view
7*7f296bb3SBarry Smith
8*7f296bb3SBarry Smith- PetscViewerSetFormat() is deprecated, you should use
9*7f296bb3SBarry Smith  PetscViewerPushFormat() followed after the viewing with
10*7f296bb3SBarry Smith  PetscViewerPopFormat()
11*7f296bb3SBarry Smith
12*7f296bb3SBarry Smith- PetscMemoryShowUsage() and -memory_info changed to
13*7f296bb3SBarry Smith  PetscMemoryView() and -memory_view
14*7f296bb3SBarry Smith
15*7f296bb3SBarry Smith- PetscOptionsSetValue() may now be called BEFORE PetscInitialize()
16*7f296bb3SBarry Smith  and any options set then will be used in the initialization
17*7f296bb3SBarry Smith  process. These options are overwritten by command line options.
18*7f296bb3SBarry Smith
19*7f296bb3SBarry Smith- The following routines now take an optional *PetscOptions* object
20*7f296bb3SBarry Smith  as the first argument, use NULL to get the previous behavior.
21*7f296bb3SBarry Smith
22*7f296bb3SBarry Smith  ```
23*7f296bb3SBarry Smith  PetscOptionsHasName(PetscOptions,const char[],const char[],PetscBool *);
24*7f296bb3SBarry Smith  PetscOptionsGetInt(PetscOptions,const char[],const char [],PetscInt *,PetscBool *);
25*7f296bb3SBarry Smith  PetscOptionsGetBool(PetscOptions,const char[],const char [],PetscBool  *,PetscBool *);
26*7f296bb3SBarry Smith  PetscOptionsGetReal(PetscOptions,const char[],const char[],PetscReal *,PetscBool *);
27*7f296bb3SBarry Smith  PetscOptionsGetScalar(PetscOptions,const char[],const char[],PetscScalar *,PetscBool *);
28*7f296bb3SBarry Smith  PetscOptionsGetIntArray(PetscOptions,const char[],const char[],PetscInt[],PetscInt *,PetscBool *);
29*7f296bb3SBarry Smith  PetscOptionsGetRealArray(PetscOptions,const char[],const char[],PetscReal[],PetscInt *,PetscBool *);
30*7f296bb3SBarry Smith  PetscOptionsGetScalarArray(PetscOptions,const char[],const char[],PetscScalar[],PetscInt *,PetscBool *);
31*7f296bb3SBarry Smith  PetscOptionsGetBoolArray(PetscOptions,const char[],const char[],PetscBool [],PetscInt *,PetscBool *);
32*7f296bb3SBarry Smith  PetscOptionsGetString(PetscOptions,const char[],const char[],char[],size_t,PetscBool *);
33*7f296bb3SBarry Smith  PetscOptionsGetStringArray(PetscOptions,const char[],const char[],char*[],PetscInt*,PetscBool *);
34*7f296bb3SBarry Smith  PetscOptionsGetEList(PetscOptions,const char[],const char[],const char*const*,PetscInt,PetscInt*,PetscBool *);
35*7f296bb3SBarry Smith  PetscOptionsGetEnum(PetscOptions,const char[],const char[],const char*const*,PetscEnum*,PetscBool *);
36*7f296bb3SBarry Smith  PetscOptionsGetEnumArray(PetscOptions,const char[],const char[],const char*const*,PetscEnum*,PetscInt *,PetscBool *);
37*7f296bb3SBarry Smith  PetscOptionsSetAlias(PetscOptions,const char[],const char[]);
38*7f296bb3SBarry Smith  PetscOptionsSetValue(PetscOptions,const char[],const char[]);
39*7f296bb3SBarry Smith  PetscOptionsClearValue(PetscOptions,const char[]);
40*7f296bb3SBarry Smith  PetscOptionsAllUsed(PetscOptions,PetscInt*);
41*7f296bb3SBarry Smith  PetscOptionsUsed(PetscOptions,const char *,PetscBool*);
42*7f296bb3SBarry Smith  PetscOptionsView(PetscOptions,PetscViewer);
43*7f296bb3SBarry Smith  PetscOptionsInsert(PetscOptions,int*,char ***,const char[]);
44*7f296bb3SBarry Smith  PetscOptionsInsertFile(MPI_Comm,PetscOptions,const char[],PetscBool );
45*7f296bb3SBarry Smith  PetscOptionsInsertString(PetscOptions,const char[]);
46*7f296bb3SBarry Smith  PetscOptionsPrefixPush(PetscOptions,const char[]);
47*7f296bb3SBarry Smith  PetscOptionsReject(PetscOptions,const char[],const char[]);
48*7f296bb3SBarry Smith  PetscOptionsGetAll(PetscOptions,char*[]);
49*7f296bb3SBarry Smith  ```
50*7f296bb3SBarry Smith
51*7f296bb3SBarry Smith- PetscLogBegin() is now PetscLogDefaultBegin().
52*7f296bb3SBarry Smith
53*7f296bb3SBarry Smith```{rubric} Configure/Build:
54*7f296bb3SBarry Smith```
55*7f296bb3SBarry Smith
56*7f296bb3SBarry Smith- Added --download-packages-dir=directory to support easy use of
57*7f296bb3SBarry Smith  --download-xxx behind firewalls
58*7f296bb3SBarry Smith- --download-package for externalpackage with a gitrepo will never
59*7f296bb3SBarry Smith  be stale. Each time configure is invoked - it will do a 'git
60*7f296bb3SBarry Smith  fetch' and 'git checkout commit-id'. And if the commit-id changes
61*7f296bb3SBarry Smith  from the previous build - the package will be rebuilt. To prevent
62*7f296bb3SBarry Smith  this sync [and use previous snapshot] - one can use
63*7f296bb3SBarry Smith  --download-package-commit=HEAD
64*7f296bb3SBarry Smith- Added --with-libpng/--with-giflib/--with-libjpeg and corresponding
65*7f296bb3SBarry Smith  --download versions to support PNG/GIF/JPEG image generation
66*7f296bb3SBarry Smith- Removed support for AfterImage in favor of libpng/GIFLIB/libjpeg
67*7f296bb3SBarry Smith
68*7f296bb3SBarry Smith```{rubric} IS:
69*7f296bb3SBarry Smith```
70*7f296bb3SBarry Smith
71*7f296bb3SBarry Smith```{rubric} PetscDraw:
72*7f296bb3SBarry Smith```
73*7f296bb3SBarry Smith
74*7f296bb3SBarry Smith- Added option -draw_cmap to use a named colormap (e.g., hue
75*7f296bb3SBarry Smith  (default), jet, coolwarm, parula, viridis) in the drawing of
76*7f296bb3SBarry Smith  contour plots.
77*7f296bb3SBarry Smith- Support for saving images and movies was improved. Support for
78*7f296bb3SBarry Smith  generating binary PPM images is built-in, but the format is
79*7f296bb3SBarry Smith  uncompressed and images are large (640x480 pixels ~ 900 KiB).
80*7f296bb3SBarry Smith  PETSc can optionally generate PNG/GIF/JPEG images using the
81*7f296bb3SBarry Smith  libpng/GIFLIB/libjpeg packages (configure
82*7f296bb3SBarry Smith  --with-package/--download-package). These libraries are popular,
83*7f296bb3SBarry Smith  well maintained, and available through most packages managers
84*7f296bb3SBarry Smith  (dnf/yum, apt, brew). For most users, PNG images should be enough.
85*7f296bb3SBarry Smith- Added routine PetscDrawSave(), users should explicitly call it to
86*7f296bb3SBarry Smith  save images after configuring with PetscDrawSetSave().
87*7f296bb3SBarry Smith- The PetscDrawSynchronizedXXX() routines were removed, the
88*7f296bb3SBarry Smith  corresponding PetscDrawXXX() are now collective.
89*7f296bb3SBarry Smith
90*7f296bb3SBarry Smith```{rubric} PF:
91*7f296bb3SBarry Smith```
92*7f296bb3SBarry Smith
93*7f296bb3SBarry Smith```{rubric} Vec:
94*7f296bb3SBarry Smith```
95*7f296bb3SBarry Smith
96*7f296bb3SBarry Smith- For complex numbers VecNorm(v,NORM_1,) will return the traditional
97*7f296bb3SBarry Smith  1 norm of the 2 norm of the complex numbers; that is the 1 norm of
98*7f296bb3SBarry Smith  the absolute values of the complex entries. Previously it returned
99*7f296bb3SBarry Smith  the 1 norm of the 1 norm of the complex entries (what is returned
100*7f296bb3SBarry Smith  by the BLAS routine asum()). Both are valid norms but most people
101*7f296bb3SBarry Smith  expect the former.
102*7f296bb3SBarry Smith
103*7f296bb3SBarry Smith```{rubric} VecScatter:
104*7f296bb3SBarry Smith```
105*7f296bb3SBarry Smith
106*7f296bb3SBarry Smith```{rubric} PetscSection:
107*7f296bb3SBarry Smith```
108*7f296bb3SBarry Smith
109*7f296bb3SBarry Smith```{rubric} Mat:
110*7f296bb3SBarry Smith```
111*7f296bb3SBarry Smith
112*7f296bb3SBarry Smith```{rubric} PC:
113*7f296bb3SBarry Smith```
114*7f296bb3SBarry Smith
115*7f296bb3SBarry Smith- If the DM has a CreateRestriction() function the PCMG
116*7f296bb3SBarry Smith  automatically uses that to create the restriction operator instead
117*7f296bb3SBarry Smith  of defaulting to using the transpose of the interpolation
118*7f296bb3SBarry Smith- Added -pc_hypre_boomeramg_nodal_coarsen - where n is from 1 to 6
119*7f296bb3SBarry Smith  (see HYPRE_BOOMERAMGSetNodal())
120*7f296bb3SBarry Smith- Added -pc_hypre_boomeramg_vec_interp_variant where v is from 1 to
121*7f296bb3SBarry Smith  4 (see HYPRE_BoomerAMGSetInterpVecVariant())
122*7f296bb3SBarry Smith- see PCHYPRE to allow taking advantage of MatSetNearNullSpace() for
123*7f296bb3SBarry Smith  hypre BoomerAMG
124*7f296bb3SBarry Smith- Added PCTelescope which supports running solvers on
125*7f296bb3SBarry Smith  sub-communicators. This PC allows re-partitioning of coarse levels
126*7f296bb3SBarry Smith  solves within PCMG when using Galerkin coarse level operators.
127*7f296bb3SBarry Smith
128*7f296bb3SBarry Smith```{rubric} KSP:
129*7f296bb3SBarry Smith```
130*7f296bb3SBarry Smith
131*7f296bb3SBarry Smith- KSPSetMonitor(KSPMonitorXXX, calls now require passing a viewer as
132*7f296bb3SBarry Smith  the final argument, you can no longer pass a NULL)
133*7f296bb3SBarry Smith- -ksp_monitor_solution now takes arguments of the form
134*7f296bb3SBarry Smith  \[viewertype\[:filename[:formatoption]\]\] allowing viewing the
135*7f296bb3SBarry Smith  solution in many ways. To get back the previous behavior use
136*7f296bb3SBarry Smith  -ksp_monitor_solution draw
137*7f296bb3SBarry Smith- A Flexible Conjugate Gradient (FCG) implementation has been added
138*7f296bb3SBarry Smith  as KSPFCG.
139*7f296bb3SBarry Smith- New implementations for pipelined, flexible Krylov methods have
140*7f296bb3SBarry Smith  been added as KSPPIPEFGMRES, KSPPIPEFCG, and KSPPIPEGCR.
141*7f296bb3SBarry Smith
142*7f296bb3SBarry Smith```{rubric} SNES:
143*7f296bb3SBarry Smith```
144*7f296bb3SBarry Smith
145*7f296bb3SBarry Smith- SNESSetMonitor(SNESMonitorXXX, calls now require passing a viewer
146*7f296bb3SBarry Smith  as the final argument, you can no longer pass a NULL)
147*7f296bb3SBarry Smith- -snes_monitor_solution/residual/solution_update now takes
148*7f296bb3SBarry Smith  arguments of the form \[viewertype\[:filename[:formatoption]\]\]
149*7f296bb3SBarry Smith  allowing viewing the solution in many ways. To get back the
150*7f296bb3SBarry Smith  previous behavior use -ksp_monitor_solution draw
151*7f296bb3SBarry Smith
152*7f296bb3SBarry Smith```{rubric} SNESLineSearch:
153*7f296bb3SBarry Smith```
154*7f296bb3SBarry Smith
155*7f296bb3SBarry Smith- -snes_linesearch_monitor now takes an optional [:filename]
156*7f296bb3SBarry Smith  argument, changed SNESLineSearchSet/GetMonitor to
157*7f296bb3SBarry Smith  SNESLineSearchSet/GetDefaultMonitor
158*7f296bb3SBarry Smith- Added SNESLineSearchMonitorSet()
159*7f296bb3SBarry Smith- Partial support for -snes_linesearch_monitor_solution_update
160*7f296bb3SBarry Smith
161*7f296bb3SBarry Smith```{rubric} TS:
162*7f296bb3SBarry Smith```
163*7f296bb3SBarry Smith
164*7f296bb3SBarry Smith- You must call TSSetExactFinalTime() or use the option
165*7f296bb3SBarry Smith  -ts_exact_final_time before calling TSSolve()
166*7f296bb3SBarry Smith- TSSetMonitor(TSMonitorXXX, calls now require passing a viewer as
167*7f296bb3SBarry Smith  the final argument, you can no longer pass a NULL)
168*7f296bb3SBarry Smith- -ts_monitor_solution now takes arguments of the form
169*7f296bb3SBarry Smith  \[viewertype\[:filename[:formatoption]\]\] allowing viewing the
170*7f296bb3SBarry Smith  solution in many ways. To get back the previous behavior use
171*7f296bb3SBarry Smith  -ksp_monitor_solution draw
172*7f296bb3SBarry Smith- -ts_monitor_binary_solution filename should now be written as
173*7f296bb3SBarry Smith  -ts_monitor_solution binary:filename
174*7f296bb3SBarry Smith- Renamed TSSetEventMonitor() to TSSetEventHandler(). Updated many
175*7f296bb3SBarry Smith  TS implementations to support event detection.
176*7f296bb3SBarry Smith- Updated TSTHETA, TSBEULER, and TSCN to support time adaptivity by
177*7f296bb3SBarry Smith  estimating the local truncation error with a BDF-2 formula.
178*7f296bb3SBarry Smith- Updated TSALPHA implementation. Removed TSAlphaSetAdapt() and
179*7f296bb3SBarry Smith  TSAlphaAdaptDefault(), use TSAlphaUseAdapt() instead.
180*7f296bb3SBarry Smith- Added TSBDF, an implementation of backward difference formulas
181*7f296bb3SBarry Smith  using constant order (1 to 6) and supporting time adaptivity.
182*7f296bb3SBarry Smith- Implemented new interface for second-order systems to avoid using
183*7f296bb3SBarry Smith  a first-order system formulation. Added TSALPHA2 implementation
184*7f296bb3SBarry Smith  (generalized-alpha, Chung & Hubert 1993) featuring user-controlled
185*7f296bb3SBarry Smith  damping of high-frequency modes and time adaptivity through a
186*7f296bb3SBarry Smith  BDF-2 formula.
187*7f296bb3SBarry Smith
188*7f296bb3SBarry Smith```{rubric} DM/DA:
189*7f296bb3SBarry Smith```
190*7f296bb3SBarry Smith
191*7f296bb3SBarry Smith- Added DMShellSetCreateRestriction
192*7f296bb3SBarry Smith- Added the generic option prefix interfaces: DMGetOptionsPrefix(),
193*7f296bb3SBarry Smith  DMAppendOptionsPrefix()
194*7f296bb3SBarry Smith- DMLabel labels are now available to all DM objects, not just
195*7f296bb3SBarry Smith  DMPlex object
196*7f296bb3SBarry Smith- DMClone() now handles copying the coordinates, so that
197*7f296bb3SBarry Smith  DMCopyCoordinates() is no longer necessary
198*7f296bb3SBarry Smith
199*7f296bb3SBarry Smith```{rubric} DMPlex:
200*7f296bb3SBarry Smith```
201*7f296bb3SBarry Smith
202*7f296bb3SBarry Smith```{rubric} PetscViewer:
203*7f296bb3SBarry Smith```
204*7f296bb3SBarry Smith
205*7f296bb3SBarry Smith- Replaced PetscViewerASCIISynchronizedAllow() with
206*7f296bb3SBarry Smith  PetscViewerASCIIPushSynchronized()
207*7f296bb3SBarry Smith  PetscViewerASCIIPopSynchronized()
208*7f296bb3SBarry Smith
209*7f296bb3SBarry Smith```{rubric} SYS:
210*7f296bb3SBarry Smith```
211*7f296bb3SBarry Smith
212*7f296bb3SBarry Smith```{rubric} Tao:
213*7f296bb3SBarry Smith```
214*7f296bb3SBarry Smith
215*7f296bb3SBarry Smith- Removed convergence tolerances -tao_fatol and tao_frtol also
216*7f296bb3SBarry Smith  remove these two parameters from TAOSetTolerance() and
217*7f296bb3SBarry Smith  TaoGetTolerance()
218*7f296bb3SBarry Smith
219*7f296bb3SBarry Smith```{rubric} AO:
220*7f296bb3SBarry Smith```
221*7f296bb3SBarry Smith
222*7f296bb3SBarry Smith```{rubric} Sieve:
223*7f296bb3SBarry Smith```
224*7f296bb3SBarry Smith
225*7f296bb3SBarry Smith```{rubric} Fortran:
226*7f296bb3SBarry Smith```
227