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