File: 33.rst.txt

package info (click to toggle)
petsc 3.22.5%2Bdfsg1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 516,740 kB
  • sloc: ansic: 814,333; cpp: 50,948; python: 37,416; f90: 17,187; javascript: 3,493; makefile: 3,198; sh: 1,502; xml: 619; objc: 445; java: 13; csh: 1
file content (249 lines) | stat: -rw-r--r-- 10,353 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
============
Changes: 3.3
============


.. rubric:: config/configure.py:

-  Building PETSc using CMake is enabled automatically if CMake is
   installed (enabling parallel builds and fast incremental builds),
   otherwise the plain make-based system is used.
-  Added --with-cuda-only flag to allow compiling CUDA files without
   requiring Thrust and Cusp

.. rubric:: Vec:

-  VecCreateSeqWithArray() and VecCreateMPIWithArray() now take a
   blocksize argument before the local length
-  VecSetBlockSize() cannot be called after VecCreateSeq() or
   VecCreateMPI() and must be called before VecSetUp() or
   VecSetFromOptions() or before either VecSetType() or VecSetSizes()

.. rubric:: Mat:

-  MatScaleSystem() and MatUnScaleSystem() are gone, they didn't do
   anything.
-  Renamed MatNullSpaceAttach() to MatSetNullSpace()
-  MatMult() no longer removes the nullspace set by MatSetNullSpace()
-  Renamed MatMatMultTranspose() for C=A^T*B to MatTransposeMatMult()
-  Added MatMatTransposeMult() for C=A*B^T
-  Added MatRARt() for C=R*A*R^T
-  Preallocation routines now automatically set
   MAT_NEW_NONZERO_ALLOCATION_ERR, if you intentionally preallocate
   less than necessary then use
   MatSetOption(mat,MAT_NEW_NONZERO_ALLOCATION_ERR,PETSC_FALSE) to
   disable the error generation.
-  MatSetBlockSize() must be called before MatSetUp() or
   MatXXXXSetPreallocation() or block size defaults to 1
-  -mat_block_size is NOT processed by MatXXXXSetPreallocation() you
   MUST call MatSetFromOptions() before MatSetUp() to have it
   processed
-  You MUST now call MatXXXSetPreallocation() or MatSetUp() on any
   matrix you create directly (not using DMCreateMatrix()) before
   calling MatSetValues(), MatSetValuesBlocked() etc.
-  MatGetOwnershipRange() will not work without setting up the
   matrix.
-  MatSetUpPreallocation() and MatPreallocated() are removed, use
   MatSetUp()
-  MatPreallocateSymmetricInitialize() is removed, use
   MatPreallocateInitialize()
-  MatCreateMPIAIJ(), MatCreateMPIBAIJ(), MatCreateMPISBAIJ(),
   MatCreateMPIDense() are now MatCreateAIJ(), MatCreateBAIJ(),
   MatCreateSBAIJ(), MatCreateDense(). Note that on a single process
   they have always created the sequential version of the matrix so
   this naming is more accurate.
-  Renamed MatMerge_SeqsToMPI() to MatCreateMPIAIJSumSeqAIJ()
-  Renamed MatMerge() to MatCreateMPIAIJConcatenateSeqAIJ()
-  Added block size in call to MatCreateIS()
-  MatInvertBlockDiagonal() now returns a const pointer

.. rubric:: PC:

-  Remove PCASASetDM(), use PCSetDM() instead.

-  Add PCFieldSplitSetSchurFactType(), rename
   -pc_fieldsplit_schur_factorization_type to
   -pc_fieldsplit_schur_fact_type.

-  Added native algebraic multigrid method -pc_type gamg. Aggregation
   method is recommended: -pc_gamg_type agg and for elliptic
   operators smoothing is recommended: -pc_gamg_agg_nsmooths 1.

-  PCSetCoordinates(PC,PetscInt,PetscInt,PetscReal*) added second
   integer argument for number of local vertices.

-  Added PCISSetSubdomainScalingFactor(PC,PetscScalar).

-  .. rubric:: PCGASM:

   -  Remove PCGASMSetLocalSubdomains(), use PCGASMSetSubdomains();
      **note:** the first argument is now the list of "inner"
      subdomains (without overlap), unlike before and for PCASM
   -  PCGASMSetTotalSubdomains(PC,PetscInt,PetscBool); added third
      argument to indicate whether local subdomains should be
      constructed.
   -  Removed PCGASMCreateSubdomains(), use
      PCGASMCreateLocalSubdomains(Mat,PetscInt,PetscInt,IS*[],IS*[]);
      second PetscInt argument is requested overlap
   -  PCGASMCreateSubdomains2D(PC,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt*,IS[]*,IS[]*):
      the 9-th and 10-th argument have been swapped: the 9-th outputs
      the inner subdomains, the 10-th outputs the outer subdomains.

-  PCMG multigrid defaults changed to use a Chebyshev smoother with
   block Jacobi Gauss-Seidel relaxation. This is a linear
   preconditioner so it can be used with normal Krylov methods rather
   than only flexible methods, as well as having fewer
   synchronization pointst. Use
   ``-mg_levels_ksp_type gmres -mg_levels_ksp_max_it 1 -mg_levels_pc_type bjacobi``
   for the original behavior.

.. rubric:: KSP:

-  KSPSetOperators() will automatically set the null space present on
   the input matrix
-  Renamed KSPCHEBYCHEV to KSPCHEBYSHEV
-  Added Hybrid CHEBYCHEV (-ksp_chebyshev_hybrid)
-  Added pipelined GMRES (KSPPGMRES) which performs one non-blocking
   reduction per iteration instead of two blocking reductions.
-  Added flexible BiCGStab (KSPFBCGS) which tolerates a nonlinear
   preconditioner (like KSPFGMRES).
-  Added improved flexible BiCGStab (KSPIFBCGS) which tolerates a
   nonlinear preconditioner and performs one reduction every other
   iteration (like KSPIBCGS).

.. rubric:: SNES:

-  Added SNESGetSNESLineSearch
-  Changed default max_its and max_funcs for non-newton SNES solvers
   to 10000 and 30000 respectively
-  Changed options and command-line arguments for SNESFAS to be in
   line with PCMG
-  Added quasi-Newton (SNESQN), Nonlinear GMRES (SNESNGMRES),
   nonlinear conjugate gradients (SNESNCG), and multi-stage methods
   (SNESMS, used as a smoother for nonlinear multigrid).
-  Support for Full Approximation Scheme nonlinear multigrid
   (SNESFAS) moved from DMMG to SNES and made composable with the
   methods above.
-  SNES line search type should be set by name with
   SNESLineSearchSetType rather than with SNESLineSearchSet, see
   below.

.. rubric:: SNESLineSearch:

-  SNESLineSearch object added
-  The default SNESLineSearch of a SNES may be gotten with
   SNESGetSNESLineSearch(SNES snes, SNESLineSearch \*linesearch)
-  The linesearch type may be set with SNESLineSearchSetType() or
   -snes_linesearch_type
-  The line search (and pre and post checks) is applied using
   SNESLineSearchApply()
-  Pre/Post-check methods may be set with
   SNESLineSearchSetPre/PostCheck()
-  The previous steplength may be accessed through
   SNESLineSearchSetLambda()
-  The damping parameter may be set through
   SNESLineSearchSetDamping() or -snes_linesearch_damping
-  Success of the line search is determined using
   SNESLineSearchGetSuccess()
-  Custom linesearches may be built through
   SNESLINESEARCHSHELL,("shell") or by registering a new linesearch
   type with SNESLineSearchRegisterDynamic()
-  SNESLINESEARCHBT,("bt") replaces SNES_LS_CUBIC and
   SNES_LS_QUADRATIC, and order may be set with
   SNESLineSearchSetOrder() or -snes_linesearch_order
-  SNESLINESEARCHBASIC,("basic") replaces SNES_LS_BASIC and
   SNES_LS_BASICNONORMS. Norms may be turned off with
   SNESLineSearchSetComputeNorms() or -snes_linesearch_norms 0
-  SNESLineSearchSetTolerances() replaces SNESLSSetParams(), with the
   former alpha parameter set with SNESLineSearchBTSetAlpha() or
   -snes_linesearch_alpha
-  Added Line Search type SNESLINESEARCHL2,("l2") as the default for
   NRICHARDSON
-  SNESLINESEARCHCP,("cp") added as the default line search method
   for SNESNCG and SNESQN

.. rubric:: TS:

-  -ts_max_time changed to -ts_final_time
-  TSDefaultComputeJacobian() and TSDefaultComputeJacobianColor()
   have been removed. Configure TS to use coloring with
   SNESSetJacobian().
-  Added TSROSW for Rosenbrock-W methods.
-  Added a common, extensible system for adaptive controllers, see
   TSGetAdapt().

.. rubric:: DM/DA:

-  Added DMCreateDecomposition(DM,PetscInt,char*[]*,IS[]*,DM[]*) for
   use with PCFIELDSPLIT,PCASM,PCGASM
-  Added DMCreateDecompositionDM(DM,const char*,DM*) to create a
   version of the DM encapsulating a named decomposition; use with
   DMCreateDecomposition()
-  Added DMRedundant for managing globally coupled degrees of
   freedom.
-  Removed DMCompositeAddArray(), use DMRedundantCreate() and
   DMCompositeAddDM().
-  Renamed DMGetMatrix(), DMGetInterpolation(), DMGetInjection(), and
   DMGetColoring() to DMCreateMatrix(), etc for semantic consistency.
-  The communicator argument to DMRefine() and DMCoarsen() can be
   MPI_COMM_NULL, but not PETSC_NULL, because the latter may not be
   the correct type.
-  Added DMCoarsenHookAdd() and DMRefineHookAdd() for shepherding
   persistent resolution-dependent data between levels.
-  Added DMGetNamedGlobalVector() for storing persistent
   resolution-dependent data.
-  DMDASNESSetFunctionLocal() and DMDASNESSetJacobianLocal() can be
   used for convenient local evaluation; these routines will
   eventually replace DMDASetLocalFunction() and
   DMDASetLocalJacobian().

.. rubric:: DMMG:

-  DMMG is now completely removed from PETSc. Equivalent (and better)
   functionality can now be obtained by calling SNESSetDM() or
   KSPSetDM(). Make sure to avoid resolution-dependent data in the
   user context. Use SNESGetDM() or KSPGetDM() in the function
   evaluation context to obtain the grid. DMGetNamedGlobalVector(),
   DMCoarsenHookAdd(), and DMRefineHookAdd() can be used to manage
   persistent resolution-dependent data.

.. rubric:: PetscViewer:

-  A VTK binary viewer was added, see PETSCVIEWERVTK.

.. rubric:: SYS:

-  PetscBagLoad() now requires you previously created and registered
   all the records in the PETSc bag, allows loading on systems with
   different struct layout/endianness.
-  PetscSF added as a type-generic graph communication mechanism. The
   current implementation requires MPI-2 one-sided and the interface
   is currently optional.

.. rubric:: Fortran:

-  PETSC_NULL_TRUTH is now PETSC_NULL_BOOL
-  PetscOptionsGetEnum() now available from Fortran

.. rubric:: ExternalPackages:

-  The Hypre interface was updated to 2.8.0b and now supports 64-bit
   integers.
-  SuperLU_DIST interface updated to 3.1.
-  SuperLU interface updated to 4.3.
-  Sundials interface updated to 2.5.0.
-  FFTW interface updated to 3.3.2.
-  ParMetis updated to 4.0.2 and split from Metis 5.0.2 which is now
   separate.

.. rubric:: Build:

-  If Python 2.7 is available, the config/builder2.py is now
   available for a complete build, including dependency tracking.

.. rubric:: Examples:

-  SNES ex62 illustrates the use of DMComplex to solve the Stokes
   equation on an unstructured mesh. The Python tests show how to use
   block preconditioning strategies from the command line.
-  SNES ex52 illustrates the use of CUDA for FEM integration