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