xref: /petsc/doc/changes/2022.md (revision b11d9968bc79904c690b122f9399be46447eb113)
1*7f296bb3SBarry Smith# Changes: 2.0.22
2*7f296bb3SBarry Smith
3*7f296bb3SBarry Smith```{rubric} General:
4*7f296bb3SBarry Smith```
5*7f296bb3SBarry Smith
6*7f296bb3SBarry Smith- The Fortran90-specific routines such as `VecGetArrayF90()` now
7*7f296bb3SBarry Smith  work with the IBM Fortran compiler, the SGI Fortran 90 compiler,
8*7f296bb3SBarry Smith  and the Cray T3E Fortran compiler.
9*7f296bb3SBarry Smith
10*7f296bb3SBarry Smith- The third argument for the Fortran versions of the routines
11*7f296bb3SBarry Smith  `VecGetArray()/VecRestoreArray(),`
12*7f296bb3SBarry Smith  `ISGetIndices()/ISRestoreIndices(),             MatGetArray()/MatRestoreArray()`
13*7f296bb3SBarry Smith  and `DAGetGlobalIndices()` has been changed from `integer` to
14*7f296bb3SBarry Smith  `PetscOffset`. See src/snes/examples/tutorials/ex5f.F for
15*7f296bb3SBarry Smith  example usage.
16*7f296bb3SBarry Smith
17*7f296bb3SBarry Smith- Changed the location of the manual pages from docs/www/www.html
18*7f296bb3SBarry Smith  and docs/www to `docs/manualpages/manualpages.html` and
19*7f296bb3SBarry Smith  `docs/manualpages`.
20*7f296bb3SBarry Smith
21*7f296bb3SBarry Smith- The location of the mpiuni include files (used in the base.site
22*7f296bb3SBarry Smith  file when not compiling with an MPI) has moved from `src/mpiuni`
23*7f296bb3SBarry Smith  to `src/sys/src/mpiuni`
24*7f296bb3SBarry Smith
25*7f296bb3SBarry Smith- Added the option `-log_summary_exclude <vec,mat,sles,snes>` to
26*7f296bb3SBarry Smith  limit the information printed in the summary table
27*7f296bb3SBarry Smith
28*7f296bb3SBarry Smith- Added the option `-log_info_exclude <vec,mat,sles,snes>`
29*7f296bb3SBarry Smith
30*7f296bb3SBarry Smith- Changed the calling sequences of
31*7f296bb3SBarry Smith  `PetscGetTime(),             PetscGetCPUTime(), PetscGetFlops()`
32*7f296bb3SBarry Smith  to return error codes like all other PETSc functions.
33*7f296bb3SBarry Smith
34*7f296bb3SBarry Smith- Changed the internal structure of the PETSc objects. This will not
35*7f296bb3SBarry Smith  effect most users but makes PETSc more extensible for the future.
36*7f296bb3SBarry Smith
37*7f296bb3SBarry Smith- Removed the PETSc object child support and replaced it with
38*7f296bb3SBarry Smith
39*7f296bb3SBarry Smith  - `PetscObjectCompose(PetscObject,char *name,PetscObject);`
40*7f296bb3SBarry Smith  - `PetscObjectQuery(PetscObject,char *name,PetscObject *);`
41*7f296bb3SBarry Smith  - `PetscObjectComposeFunction(PetscObject,char *name, void *);`
42*7f296bb3SBarry Smith  - `PetscObjectQueryFunction(PetscObject,char *name,void **);`
43*7f296bb3SBarry Smith
44*7f296bb3SBarry Smith  These allow the user to attach objects and functions to any PETSc
45*7f296bb3SBarry Smith  object.
46*7f296bb3SBarry Smith
47*7f296bb3SBarry Smith- Added a feeble example that demonstrates how to manage
48*7f296bb3SBarry Smith  partitioning a grid in parallel in
49*7f296bb3SBarry Smith  `src/mat/examples/tutorials/ex2.c`
50*7f296bb3SBarry Smith
51*7f296bb3SBarry Smith- The build command 'make all' in \$\{PETSC_DIR} will build the PETSc
52*7f296bb3SBarry Smith  libraries, including the fortran interface.
53*7f296bb3SBarry Smith
54*7f296bb3SBarry Smith```{rubric} AO (Application Orderings):
55*7f296bb3SBarry Smith```
56*7f296bb3SBarry Smith
57*7f296bb3SBarry Smith```{rubric} TS (Timestepping Solvers):
58*7f296bb3SBarry Smith```
59*7f296bb3SBarry Smith
60*7f296bb3SBarry Smith- The calling sequence of `TSSetType()` has changed; see the
61*7f296bb3SBarry Smith  manual page.
62*7f296bb3SBarry Smith- `TSType` is now a string, rather than enum type
63*7f296bb3SBarry Smith
64*7f296bb3SBarry Smith```{rubric} SNES (Nonlinear Solvers):
65*7f296bb3SBarry Smith```
66*7f296bb3SBarry Smith
67*7f296bb3SBarry Smith- The calling sequence of `SNESSetType()` has changed; see the
68*7f296bb3SBarry Smith  manual page.
69*7f296bb3SBarry Smith- `SNESType` is now a string, rather than enum type
70*7f296bb3SBarry Smith
71*7f296bb3SBarry Smith```{rubric} SLES (Linear Solvers):
72*7f296bb3SBarry Smith```
73*7f296bb3SBarry Smith
74*7f296bb3SBarry Smith- See PC and KSP
75*7f296bb3SBarry Smith
76*7f296bb3SBarry Smith```{rubric} KSP (Krylov Subspace Methods):
77*7f296bb3SBarry Smith```
78*7f296bb3SBarry Smith
79*7f296bb3SBarry Smith- The calling sequence of `KSPSetType()` has changed; see the
80*7f296bb3SBarry Smith  manual page.
81*7f296bb3SBarry Smith- `KSPType` is now a string, rather than enum type.
82*7f296bb3SBarry Smith
83*7f296bb3SBarry Smith```{rubric} PC (Preconditioners):
84*7f296bb3SBarry Smith```
85*7f296bb3SBarry Smith
86*7f296bb3SBarry Smith- Added two new PC classes, `PCSLES` and `PCCOMPOSITE` that
87*7f296bb3SBarry Smith  allow use of any `SLES` object as a preconditioner and enable
88*7f296bb3SBarry Smith  combining several preconditioners.
89*7f296bb3SBarry Smith- The calling sequence of `PCSetType()` has changed; see the
90*7f296bb3SBarry Smith  manual page.
91*7f296bb3SBarry Smith- `PCType` is now a string, rather than enum type.
92*7f296bb3SBarry Smith
93*7f296bb3SBarry Smith```{rubric} MAT (Matrices):
94*7f296bb3SBarry Smith```
95*7f296bb3SBarry Smith
96*7f296bb3SBarry Smith- Added support for partitioning using the ParMETIS parallel
97*7f296bb3SBarry Smith  partitioning package, see the manual page for
98*7f296bb3SBarry Smith  `PartitioningCreate()`
99*7f296bb3SBarry Smith- Added `MatGetColumnVector()`
100*7f296bb3SBarry Smith- Added argument column size to `MatGetSubMatrix()`
101*7f296bb3SBarry Smith- Changed the memory allocation algorithm in
102*7f296bb3SBarry Smith  `MatLUFactorSymbolic()` and `MatILUFactorSymbolic()` based on
103*7f296bb3SBarry Smith  a suggestion by David Hysom of ODU.
104*7f296bb3SBarry Smith- The third argument for the Fortran version of the routines
105*7f296bb3SBarry Smith  `MatGetArray()/MatRestoreArray()` has been changed from
106*7f296bb3SBarry Smith  `integer` to `PetscOffset`.
107*7f296bb3SBarry Smith
108*7f296bb3SBarry Smith```{rubric} DA (Distributed Arrays):
109*7f296bb3SBarry Smith```
110*7f296bb3SBarry Smith
111*7f296bb3SBarry Smith- Changed `DAGetDistributedVector()` and `DAGetLocalVector()` to
112*7f296bb3SBarry Smith  `DACreateGlobalVector()` and `DACreateLocalVector()`. You
113*7f296bb3SBarry Smith  should destroy these vectors with a usual call to
114*7f296bb3SBarry Smith  `VecDestroy()`.
115*7f296bb3SBarry Smith- The third argument for the Fortran version of the routine
116*7f296bb3SBarry Smith  `DAGetGlobalIndices()` has been changed from `integer` to
117*7f296bb3SBarry Smith  `PetscOffset`.
118*7f296bb3SBarry Smith
119*7f296bb3SBarry Smith```{rubric} VEC (Vectors):
120*7f296bb3SBarry Smith```
121*7f296bb3SBarry Smith
122*7f296bb3SBarry Smith- Added
123*7f296bb3SBarry Smith  `VecSetBlockSize(), VecSetValuesBlocked(),             VecSetValuesBlockedLocal(),             VecSetLocalToGlobalMappingBlocked()`
124*7f296bb3SBarry Smith- Added`VecCreatedShared(),` which creates a parallel vector in
125*7f296bb3SBarry Smith  shared memory on the SGI machines
126*7f296bb3SBarry Smith- Changed `VEC_IGNORE_OFF_PROCESSOR_ENTRIES` to
127*7f296bb3SBarry Smith  `VEC_IGNORE_OFF_PROC_ENTRIES`
128*7f296bb3SBarry Smith- The third argument for the Fortran versions of the routines
129*7f296bb3SBarry Smith  `VecGetArray()/VecRestoreArray(),` has been changed from
130*7f296bb3SBarry Smith  `integer` to `PetscOffset`. See
131*7f296bb3SBarry Smith  src/snes/examples/tutorials/ex5f.F for example usage.
132*7f296bb3SBarry Smith- `VecGetArray(), VecRestoreArray()` now work from Fortran on all
133*7f296bb3SBarry Smith  machines, finally after 3 long years!
134*7f296bb3SBarry Smith- Changed the calling sequence of `VecCreate()`, now takes both
135*7f296bb3SBarry Smith  local and global size, see the manual page.
136*7f296bb3SBarry Smith
137*7f296bb3SBarry Smith```{rubric} IS (Index Sets):
138*7f296bb3SBarry Smith```
139*7f296bb3SBarry Smith
140*7f296bb3SBarry Smith- The third argument for the Fortran versions of the routines
141*7f296bb3SBarry Smith  `ISGetIndices()/ISRestoreIndices()` has been changed from
142*7f296bb3SBarry Smith  `integer` to `PetscOffset`.
143*7f296bb3SBarry Smith
144*7f296bb3SBarry Smith```{rubric} Draw (Graphics):
145*7f296bb3SBarry Smith```
146*7f296bb3SBarry Smith
147*7f296bb3SBarry Smith```{rubric} Viewers:
148*7f296bb3SBarry Smith```
149*7f296bb3SBarry Smith
150*7f296bb3SBarry Smith```{rubric} System:
151*7f296bb3SBarry Smith```
152*7f296bb3SBarry Smith
153*7f296bb3SBarry Smith```{rubric} Error Handling:
154*7f296bb3SBarry Smith```
155*7f296bb3SBarry Smith
156*7f296bb3SBarry Smith```{rubric} Event Logging:
157*7f296bb3SBarry Smith```
158*7f296bb3SBarry Smith
159*7f296bb3SBarry Smith```{rubric} Fortran Interface:
160*7f296bb3SBarry Smith```
161*7f296bb3SBarry Smith
162*7f296bb3SBarry Smith- `PETSC_NULL` has been replaced with `PETSC_NULL_INTEGER`,
163*7f296bb3SBarry Smith  `PETSC_NULL_SCALAR`, `PETSC_NULL_DOUBLE` or
164*7f296bb3SBarry Smith  `PETSC_NULL_CHARACTER` depending on the context for usage. If
165*7f296bb3SBarry Smith  the function expects an integer, a scalar (double or complex
166*7f296bb3SBarry Smith  depending if you compile with BOPT=\*\_complex), a double precision
167*7f296bb3SBarry Smith  array, or a string.
168*7f296bb3SBarry Smith- The Fortran include files are now located in the directory
169*7f296bb3SBarry Smith  "include/finclude/*.", rather than "include/FINCLUDE/*.h". The
170*7f296bb3SBarry Smith  include files that used to be in "include/finclude/*.h" (not
171*7f296bb3SBarry Smith  recommended) are now in "include/foldinclude/*.h"
172*7f296bb3SBarry Smith- If you have stored PETSc objects in Fortran integer arrays, such
173*7f296bb3SBarry Smith  as `user(3) = vec` you have to declare those arrays to be of
174*7f296bb3SBarry Smith  type `PetscFortranAddr` instead of as integer. Note that
175*7f296bb3SBarry Smith  `PetscFortranAddr` is simply integer on 32 bit machines and
176*7f296bb3SBarry Smith  integer\*8 on 64-bit machines.
177*7f296bb3SBarry Smith- The Fortran90-specific routines such as `VecGetArrayF90()` now
178*7f296bb3SBarry Smith  work with the IBM Fortran compiler, the SGI Fortran 90 compiler,
179*7f296bb3SBarry Smith  and the Cray T3E Fortran compiler.
180*7f296bb3SBarry Smith- PETSc objects can now be passed between C and Fortran directly.
181*7f296bb3SBarry Smith  You do not have to use the commands
182*7f296bb3SBarry Smith  `PetscCObjectToFortranObject()` and
183*7f296bb3SBarry Smith  `PetscFortranObjectToCObject()` to translate the objects between
184*7f296bb3SBarry Smith  languages.
185*7f296bb3SBarry Smith- Changed Fortran object argument from type int to type
186*7f296bb3SBarry Smith  PetscFortranAddr in the routines `PetscCObjectToFortranObject()`
187*7f296bb3SBarry Smith  and `PetscFortranObjectToCObject().`
188*7f296bb3SBarry Smith- Added the routine `PetscInitializeFortran()` to assist in
189*7f296bb3SBarry Smith  mixed-language use of PETSc. See the manual page for details.
190