File: 2017.html

package info (click to toggle)
petsc 3.4.2.dfsg1-8.1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 129,104 kB
  • ctags: 516,422
  • sloc: ansic: 395,939; cpp: 47,201; python: 34,788; makefile: 17,193; fortran: 16,251; f90: 1,592; objc: 954; sh: 822; xml: 621; java: 381; lisp: 293; csh: 241
file content (315 lines) | stat: -rw-r--r-- 11,238 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
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
  <head> <link rel="canonical" href="http://www.mcs.anl.gov/petsc/petsc-current/docs/changes/2017.html" />
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
    <title>Documentation: Changes: 2.0.17</title>
  </head>
  <body bgcolor="#ffffff">
   <div id="version" align=right><b>petsc-3.4.2 2013-07-02</b></div>

    <h1>Documentation: Changes: 2.0.17</h1>

    

    <style type="text/css">
      h2 {
        color: red;
      }

      h4 {
        font-weight: bold;
        text-decoration: underline;
      }
    </style>

    <div id="main">

      <div align="center">
        <h2>NEW FEATURES and <a name="CHANGES">CHANGES</a> in PETSc 2.0.17</h2>
      </div>

      <h4>General:</h4>

      <ul>
        <li>
          Added support for Windows NT/95 using the Microsoft Developers Studio
          Visual C++. See the file 'Installation' for details.
        </li>

        <li>
          Other new machines on which this release has been tested: Cray T3E,
          SGI Origin See the file petsc/Installation for a complete list.
        </li>
      </ul>

      <h4>TS (Timestepping Solvers):</h4>

      <ul>
        <li>Modified the pseudo-transient continuation updates:</li>
        <li>Changed the default update to dt = current_dt*previous_fnorm/current_fnorm.</li>

        <li>
          Added the routine TSPseudoIncrementDtFromInitialDt() and the
          corresponding option -ts_pseudo_increment_dt_from_initial_dt to
          indicate use of the alternative update formula dt
          = initial_dt*initial_fnorm/current_fnorm.
        </li>

        <li>Changed the calling sequence of TSRegister().</li>
      </ul>

      <h4>SNES (Nonlinear Solvers):</h4>

      <ul>
        <li>
          Added support for computing large, sparse Jacobians efficiently via
          finite differences, see Section 5.6 (Finite Difference Jacobian
          Approximations) of the users manual.
        </li>

        <li>
          Added the routines SNESGetNumberLinearIterations() and
          SNESSetConvergenceHistory(). See man pages for details.
        </li>

        <li>
          Activated a counter of function evaluations, which is used in
          convergence tests to terminate solver if the number of function
          evaluations exceeds a given tolerance. Note: Users of matrix-free
          Newton-Krylov methods may need to reset the default allowable maximum
          (1000), via SNESSetTolerances() or -snes_max_func
          &lt;maxfunc&gt;.
        </li>

        <li>Changed the calling sequence of SNESRegister().</li>
      </ul>

      <h4>SLES (Linear Solvers):</h4>

      <ul>
        <li>See PC and KSP</li>
      </ul>

      <h4>KSP (Krylov Subspace Methods):</h4>

      <ul>
        <li>Changed the calling sequence of KSPRegister().</li>
      </ul>

      <h4>PC (Preconditioners):</h4>

      <ul>
        <li>Changed the calling sequence of PCRegister().</li>
        <li>New Additive Schwarz variants (preconditioner type PCASM)</li>

        <li>
          Added the routine PCASMSetType() (and the corresponding option
          -pc_asm_type [basic,restrict,interpolate,none]) for setting the
          variant of the additive Schwarz method.  See the man page and users
          manual for details.
        </li>

        <li>
          Changed the default variant of PCASM from full restriction and
          interpolation to full restriction only, since this version requires
          less communication and for many problems converges faster than the
          basic variant that uses full restriction and interpolation.  Users
          can still employ the basic ASM by calling
          PCASMSetType(pc,PC_ASM_BASIC) or by using the option -pc_asm_type
          basic.
        </li>

        <li>
          Added an interface to the SPAI preconditioner implementation of
          Steven Bernard; see src/contrib/spai. This has undergone little
          testing and optimization; it is intended mainly for
          &quot;hackers&quot;.
        </li>
      </ul>

      <h4>MAT (Matrices):</h4>

      <ul>
        <li>
          Added the matrix option,
          MatSetOption(mat,MAT_NEW_NONZERO_LOCATION_ERROR), that will cause an
          error if a new nonzero is generated in a sparse matrix. (currently
          implemented for AIJ and BAIJ matrices only). This is a useful flag
          when using SAME_NONZERO_PATTERN in calling SLESSetOperators() to
          ensure that the nonzero pattern truely does remain unchanged. For
          examples, see the programs
          petsc/src/snes/examples/tutorials/[ex5.c,ex5f.F].
        </li>

        <li>
          Added the routine MatSetUnfactored(), intended primarily for use with
          in-place ILU(0) factorization as a preconditioner for matrix-free
          Krylov methods. See the manual page for details.
        </li>

        <li>
          Added the routines MatConvertRegisterAll() and MatLoadRegisterAll()
          to allow the restriction of the matrix routines linked into an
          application code. This can decrease the size of your executable and
          the time it takes to link your program. For details, see the manual
          page and petsc/src/snes/examples/tutorials/ex5.c
        </li>

        <li>
          Added the routine MatSetValuesBlocked(), for more efficient assembly
          of block AIJ formatted matrices (MATSEQBAIJ and MATMPIBAIJ).
        </li>

        <li>Changed the calling sequence of MatReorderingRegister();</li>
      </ul>

      <h4>DA (Distributed Arrays):</h4>

      <ul>
        <li>
          Added additional arguments to DACreate1d(), DACreate2d(), and
          DACreate3d() to allow the user to set the distribution of nodes on
          each processor; set these arguments to PETSC_NULL for the standard
          default distribution.
        </li>

        <li>Modified DAGetInfo() to return the type of periodicity.</li>
      </ul>

      <h4>VEC (Vectors):</h4>

      <ul>
        <li>
          Added the routine VecCreateGhost() to create vectors that have ghost
          padding at the end of the local array. This is useful for gathering
          remote values to perform local calculations that involve
          off-processor ghost values. This is often appropriate for codes using
          unstructured grids. See petsc/src/vec/examples/tutorials/ex9.c for
          possible usage.
        </li>
      </ul>

      <h4>IS (Index Sets):</h4>
      <h4>Draw (Graphics):</h4>

      <ul>
        <li>
          Application codes should not need to use #include &quot;draw.h&quot;
          anymore from C/C++, since this file is now included automatically
          when &quot;petsc.h&quot; or any other PETSc include file is included.
        </li>
      </ul>

      <h4>Viewers:</h4>

      <ul>
        <li>VIEWER_DRAWX_WORLD, VIEWER_DRAWX_SELF, VIEWER_MATLAB_WORLD are now supported from Fortran.</li>

        <li>
          Added VIEWER_DRAWX_(MPI_Comm comm) from C. Useful for rapid code
          prototyping without having to declare a Viewer.
        </li>
      </ul>

      <h4>System Routines:</h4>

      <ul>
        <li>
          Since memory leaks and uninitialized memory can be serious problems
          for large-scale application codes, we've added several new tools to
          assist in their diagnosis. These tools are all work in conjunction
          with the PETSc memory allocation (the default for codes that are
          compiled in debug mode with BOPT=[g,g_c++,g_complex]).
        </li>

        <li>
          Added the runtime option -trmalloc_log, which activates logging of
          all calls to malloc via the new routines PetscTrLog() and
          PetscTrLogDump().
        </li>

        <li>
          Added the routine PetscGetResidentSetSize() to determine the total
          memory used by a process (this is activated by -trmalloc_log); see
          the man page for details.
        </li>

        <li>
          Added the option -trmalloc_nan for tracking down allocated memory
          that is used before it has been initialized. This option calls the
          new routines PetscInitializeNans() and PetscInitializeLargeInts(). So
          far these work on the Sun4 system.
        </li>
      </ul>

      <h4>Error Handling:</h4>

      <ul>
        <li>
          The error checking macros SETERRQ() and SETERRA() now have the
          calling sequence SETERRQ(int ierr,int pierr,char *message); where
          pierr is an additional integer error code passed to the error
          handler. Currently you should just set pierr=1.
        </li>

        <li>
          Also, SETERRQ() and SETERRA() now use the macro __FUNC__ to keep
          track of routine names.  Users need not worry about this in their
          application codes, but can take advantage of this feature if desired
          by setting this macro before each user-defined routine that may call
          SETERRQ(), SETERRA(), CHKERRQ(), or CHKERRA(). __FUNC__ should be set
          to a string containing the routine name. For example, #undef __FUNC__
          #define __FUNC__ &quot;MyRoutine1&quot; int MyRoutine1() { /* code
          here */ return 0; } See petsc/src/snes/examples/tutorials/ex3.c for
          an example.
        </li>

        <li>
          PETSc error handlers now take two additional arguments. Consult the
          man page for PetscPushErrorHandler() for more information.
        </li>
      </ul>

      <h4>Event Logging:</h4>

      <ul>
        <li>Changed PLogPrintSummary(MPI_Comm,FILE *) to PLogPrintSummary(MPI_Comm,char *).</li>
        <li>Now the option -log_summary takes [filename] as an optional argument.</li>
      </ul>

      <h4>Fortran Interface:</h4>

      <ul>
        <li>
          Added some limited support for direct use of Fortran90 pointers in
          the routines Vec[Get,Restore]ArrayF90(), Mat[Get,Restore]ArrayF90(),
          IS[Get,Restore]IndicesF90(), ISBlock[Get,Restore]IndicesF90(),
          VecDuplicateVecsF90(), VecDestroyVecsF90(), DAGetGlobalIndicesF90().
          See the man pages and the section 'Fortran90' in the users manal for
          details. Unfortunately, these routines currently work only with the
          NAG F90 compiler.  We hope to support other compilers as well, but we
          will need assistance from the vendors since the Fortran90/C interface
          is not a defined standard.
        </li>

        <li>
          Added the macro PetscDoubleExp(a,b) = a d b (machines where double
          precision arithmetic is used) = a e b (machines where single
          precision arithmetic is used, e.g., Crays) This macro is intended for
          use only if you wish to maintain a Fortran code that is portable to
          both the Cray T3d/T3e and other Unix machines.
        </li>

        <li>
          For mixed Fortran/C users: added the makefile flag FCONF that may be
          used in place of the flag CONF. For an example of usage, see
          src/vec/examples/tutorials/makefile
        </li>
      </ul>

    </div>

    
  </body>
</html>