xref: /petsc/doc/changes/31.md (revision d000e8ac2eed99d0cf14796aab94de0aed57fd8b) !
1# Changes: 3.1
2
3```{rubric} General:
4```
5
6- PetscOptionsHasName() and PetscOptionsName() now return PETSC_TRUE
7  if the options are set to any value, include false or 0. You may
8  need to change some of your PetscOptionsXXName() to
9  PetscOptionsXXTruth()
10- Added configure option --with-single-library that causes all PETSc
11  code to be compiled into the single library libpetsc.XXX
12- PetscMap changed to PetscLayout and PetscMapInitialize() changed
13  to PetscLayoutCreate() and it now allocates the space of the
14  object.
15- In makefiles include \$\{PETSC_DIR}/conf/base is replaced with two
16  lines include \$\{PETSC_DIR}/conf/variables and  include
17  \$\{PETSC_DIR}/conf/rules
18- BlockSolve95 interface is removed
19- petsc.h and petscdef.h are replaced with petscsys.h and
20  petscsysdef.h; while petsc.h now includes ALL PETSc include files.
21- win32fe [used for MS/Intel compiler builds on windows] now
22  defaults to 'noautodetect' mode. However the previous behavior can
23  be restored by using the option '--autodetect'. For eg:
24  '--withcc=win32fe cl --autodetect'. This works primarily with old
25  VC6/VC7/Intel8 etc compilers anyway.
26
27```{rubric} Logging:
28```
29
30- PetscLogFlops(int) ->PetscLogFlops(PetscLogDouble). [check fortran
31  usage]
32
33```{rubric} config/configure.py:
34```
35
36- All ./configure options that state known values, so that
37  ./configure doesn't try to test for them. Often used with the
38  --with-batch option now begin with --known-
39
40```{rubric} IS:
41```
42
43```{rubric} Vec:
44```
45
46```{rubric} VecScatter:
47```
48
49```{rubric} Mat:
50```
51
52- MatGetSubMatrix:
53
54  - Now takes a parallel IS for the columns, the csize argument has
55    been dropped. The local part of this IS corresponds to the
56    local columns of the new submatrix.
57
58- MatGetSubMatrixRaw
59
60  - Removed, use MatGetSubMatrix
61
62- Changed name of option MAT_KEEP_ZEROED_ROWS to
63  MAT_KEEP_NONZERO_PATTERN to more clearly indicate what it does.
64
65- Added MAT_SHARE_NONZERO_PATTERN as option for MatDuplicate() this
66  allows several matrices to share the same data structures for the
67  nonzeros and thus save memory.
68
69- The function provided to MatNullSpaceSetFunction() now takes a
70  MatNullSpace() as the first argument. Added Fortran interface for
71  this function as well.
72
73- Removed MatPBRelax() merged its functionality into MatRelax()
74
75- Changed MatRelax() to MatSOR() to match MatSORType() and PCSOR
76
77- Removed requirement that rows be sorted in
78  MatCreateMPIAIJWithArrays() and MatMPIAIJSetPreallocationCSR().
79
80- Changed MATOP_DIAGONAL_SHIFT to MATOP_DIAGONAL_SET to match
81  function name MatDiagonalSet().
82
83- MATMPIROWBS i.e BlockSolve95 interface is now removed.
84
85```{rubric} PC:
86```
87
88- PCShell All user-provided functions now have PC as first argument
89  instead of the application context. Users should obtain the
90  context with PCShellGetContext, similar to MatShell.
91- Removed -pc_asm_in_place and PCASMSetUseInPlace() since the option
92  made no sense
93- PCApplyRichardson() has an additional argument indicating if the
94  initial guess being passed in is nonzero. SOR will save some work
95  if it is zero.
96- MatSetBlockSize() is no longer an error for BAIJ matrices, but the
97  argument must be the same as when the matrix was preallocated.
98- PCFactorSetPivoting() renamed to PCFactorSetColumnPivot()
99- Replaced PCFactorSetShiftNonzero(), PCFactorSetShiftPd() and
100  PCFactorSetShiftInBlocks() with PCFactorSetShiftType() and
101  PCFactorSetShiftAmount(). Replaced -pc_factor_shift_nonzero,
102  -pc_factor_shift_positive_definite and -pc_factor_shift_in_blocks
103  with -pc_factor_shift_type \<shifttype> and -pc_factor_shift_amount
104  \<shiftamount>.
105- Added PCREDISTRIBUTE for load balancing and removal of Dirichlet
106  degrees of freedom.
107
108```{rubric} KSP:
109```
110
111- Added KSPCGUseSingleReduction() -ksp_cg_single_reduction;
112  recommended for use with many processors when VecDot() starts to
113  take a large amount of time, Requires 2 extra work vectors.
114- Added KSPGCR (Generalized Conjugate Residuals), a flexible method
115  (like FGMRES) providing inexpensive residuals.
116
117```{rubric} SNES:
118```
119
120```{rubric} TS:
121```
122
123- Rename TS_EULER, TS_BEULER, etc like TSEULER for consistency with
124  other packages.
125- Add Theta and General Linear time integrators (TSTHETA, TSGL).
126  These can be used for solving differential algebraic equations
127  (DAE) using the new TSSetIFunction() and TSSetIJacobian().
128- Add TSSSP which implements optimal strong stability preserving
129  time integrators of order 2, 3, and 4 using a low-storage explicit
130  Runge-Kutta scheme.
131- Change TSSetPreStep() and TSSetPostStep() to run before and after
132  each step instead of before and after each solve.
133
134```{rubric} DA:
135```
136
137- DAGetColoring() now takes a MatType as an additional argument,
138  should be MATAIJ or MATBAIJ
139- Added DARefineHierarchy(), DMMG now always uses DMRefineHierarchy
140  to generate refined grids. Added options
141  -da_refine_hierarchy\_[xyz] to allow semi-coarsening at some levels
142  of the hierarchy.
143- DASetCoordinates() now references the vector, so the user should
144  release their reference by calling VecDestroy().
145
146```{rubric} DMMG:
147```
148
149```{rubric} PetscViewer:
150```
151
152```{rubric} SYS:
153```
154
155- PetscSleep(), PetscDrawGetPause(), and PetscDrawSetPause() now
156  take PetscReal instead of int. Also, -draw_pause takes a real
157  value.
158- PetscRandomGetValueImaginary() is removed. To get a complex number
159  with only a random imaginary part first call
160  PetscRandomSetInterval() with the same low and high real part.
161  Similarly one can obtain a complex number with only a random real
162  part by setting the low and high imaginary part to be the same.
163
164```{rubric} AO:
165```
166
167```{rubric} Sieve:
168```
169
170```{rubric} Fortran:
171```
172
173- Removed the old compiler dependent implementation of f90 interface
174  sources in favor of the new compiler independent implementation.
175  Consequently the configure option --with-f90-interface is removed.
176  And the f90 interface is automatically built - if an f90 compiler
177  is detected. [this is the default behavior before this change
178  as well]
179- use petsc and use petscdef are now use petscsys and use
180  petscsysdef
181
182```{rubric} ExternalPackages:
183```
184
185- Added MATORDERING_AMD for Tim Davis' Approximate Minimum Degree
186  package.
187