File: 2028.html

package info (click to toggle)
petsc 2.2.0-4
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 64,404 kB
  • ctags: 284,528
  • sloc: ansic: 223,999; python: 11,758; makefile: 7,707; fortran: 6,327; cpp: 4,104; sh: 3,387; csh: 41; asm: 6
file content (212 lines) | stat: -rw-r--r-- 12,934 bytes parent folder | download | duplicates (2)
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
<html>
<body BGCOLOR="FFFFFF">

    <h1> Docs:&nbsp;Changes: 2.0.28</h1>
    

    <p align="center"><font color="#FF0000" size="5"><a
    name="CHANGES">CHANGES</a> in PETSc 2.0.28 (see new <a href="#Features">features</a>)</font></p>
    <p><font size="4"><strong><u>General:</u></strong></font> <ul>
      <li>No longer support PETSC_ARCH=sun4</li>
      <li>The macros in petscconf.h now begin with PETSC_</li>
      <li><strong>PetsReal()</strong> and <strong>PetscImaginary()</strong> are now <strong>PetscRealPart()</strong>
        <strong>PetscImaginaryPart()</strong></li>
      <li>-optionstable -&gt; -options_table -optionsleft -&gt; -options_left but old left for
        compatibility</li>
    </ul>
    <p><font size="4"><strong><u>AO (Application Orderings):</u></strong></font></p>
    <p><font size="4"><strong><u>TS (Timestepping Solvers):</u></strong></font> <ul>
      <li><strong>TSSetMonitor()</strong> now takes an additional final optional argument that
        will destroy the<br>
        monitor context.
      </li>
    </ul>
    <p><font size="4"><strong><u>SNES (Nonlinear Solvers): </u></strong></font><ul>
      <li>SNES_EQ_LS etc changed to drop _, for example SNESEQLS</li>
      <li>nged calling sequence of SNES monitoring routines to add an additional output
        parameter indicating<br>
        why it converged or diverged.</li>
      <li>Added additional final argument to <strong>SNESSetMonitor()</strong> an optional destroy
        routine for the <br>
        monitor context.</li>
      <li>Changed calling sequence of <strong>MatSNESMFAddNullSpace()</strong> to take <strong>PCNullSpace</strong>
        object rather than <br>
        array of vectors.</li>
    </ul>
    <ul>
      <li>Added final ctx argument to <strong>SNESGetFunction()</strong>, S<strong>NESGetGradient()</strong>
        and S<strong>NESGetMinimizationFunction()</strong><br>
      </li>
    </ul>
    <p><font size="4"><strong><u>SLES (Linear Solvers):</u></strong></font> <ul>
      <li>See PC and KSP </li>
      <li><strong>SLESSolveTrans()</strong> is now <strong>SLESSolveTranspose()</strong></li>
      <li><strong>SLESSolve()</strong> now ALWAYS returns a 0 or positive iteration count. Call <strong>KSPGetConvergedReason()</strong><br>
        to see if converged or diverged and why. </li>
    </ul>
    <p><font size="4"><strong><u>KSP (Krylov Subspace Methods):</u></strong></font> <ul>
      <li>Added additional final argument to <strong>KSPSetMonitor()</strong> an optional destroy
        routine for the <br>
        monitor context.</li>
      <li><strong>KSPSolvetrans()</strong> is now <strong>KSPSolveTranspose()</strong></li>
      <li>Added flexible gmres (use fgmres or KSPFGMRES as the type) see <strong>KSPFGMRESSetModifyPC()</strong>
        for<br>
        one way to change PC at each iteration.</li>
    </ul>
    <p><font size="4"><strong><u>PC (Preconditioners): </u></strong></font><ul>
      <li><strong>MGSetRestriction</strong>() and <strong>MGSetInterpolation</strong>() now accept
        either the appropriate matrix or its transpose;<br>
        PETSc figures out which one it is based on the number of rows and columns. Now you don't
        need to use<br>
        the Shell matrices if you computed it &quot;the other way then PETSc use to expect&quot;.</li>
      <li><strong>PCApplyTrans()</strong> is now <strong>PCApplyTranspose()</strong></li>
      <li>options -pc_ilu_mat_ordering_type &lt;nd,...&gt; and -pc_lu_mat_ordering_type
        &lt;nd,...&gt; now set <br>
        the ordering type.
        <br>
      </li>
    </ul>
    <p><font size="4"><strong><u>MAT (Matrices): </u></strong></font><ul>
      <li>Added two additional arguments to <strong>MatCreate(</strong>MPI_Comm comm,int m,int
        n,int M,int N,Mat *)<br>
        where m and n are the local ownership sizes. To get the effect of the old <strong>MatCreate()</strong><br>
        use m and n equal to PETSC_DECIDE</li>
      <li>Changed <strong>MatSetLocalToGlobalMappingBlocked()</strong> to <strong>MatSetLocalToGlobalMappingBlock()</strong>
        so that it would be less then 32 characters long.</li>
      <li><strong>MatSolveTrans() </strong>and <strong>MatSolveTransAdd()</strong> are now <strong>MatSolveTransposeXXX()</strong><br>
        <strong>MatMultTrans()</strong> and <strong>MatMultTransAdd() </strong>are now <strong>MatMultTransposeXXX()</strong></li>
      <li><strong>MatCreateMPIAdj()</strong> changed to <strong>MatCreateMPICSR()</strong>; <strong>MatCreateSeqAdj()</strong>
        dropped.</li>
      <li>  Another <b>MatSetOption</b>(), <b> MAT_IGNORE_ZERO_ENTRIES</b> for AIJ matrices with
        <b>ADD_VALUES</b>.</li>
      <li>added matrix option <b> MAT_KEEP_ZEROED_ROWS</b> causes <b> MatZeroRows()</b> to keep the original nonzero
        data structure and just put 0.0 into the elements that are to be zeroed. Without this option
        it removes the locations from the nonzero structure.</li>
    </ul>
    <p><font size="4"><strong><u>DA (Distributed Arrays): </u></strong></font>
    <p><font size="4"><strong><u>VEC (Vectors):</u></strong></font> <ul>
      <li>Added VecGetArray2d() and VecRestoreArray2d()&nbsp;<br>
      </li>
    </ul>
    <p><font size="4"><strong><u>IS (Index Sets): </u></strong></font></p>
    <ul>
      <li> Added second argument to <b>ISInvertPermutation</b>() that indicates how many indices are to be  stored on that processor; ignored for one processor code. If you use
        <b>ISInvertPermutation</b>()  simply add a second argument of <b>PETSC_DECIDE</b>.
      </li>
    </ul>
    <p><font size="4"><strong><u>Draw (Graphics):</u></strong></font> <ul>
      <li>DrawHistxxx changed to DrawHGxxx</li>
    </ul>
    <p><font size="4"><strong><u>Viewers: </u></strong></font>
    <p><font size="4"><strong><u>System:</u></strong></font> <ul>
      <li>Routines XXXRegister() are now XXXRegisterDynamic() used for registering new object
        types<br>
        in dynamic libraries and XXXRegister_Private() is now XXXRegister() used to register new
        object<br>
        types whose definitions are in the exectuable.</li>
      <li>The final argument to <strong>OptionsHasName()</strong> and <strong>OptionsGetXXX()</strong>
        is a PetscTruth * instead<br>
        of an int*</li>
      <li>PETSc functions and objects that began with Table now begin with PetscTable</li>
      <li>Changed these routines to return an error code.<br>
        extern int PetscStrchr(const char[],char,char **);<br>
        extern int PetscStrrchr(const char[],char,char **);<br>
        extern int PetscStrstr(const char[],const char[],char **);<br>
        extern int PetscStrtok(const char[],const char[],char **); <br>
        extern int PetscStrlen(const char[],int *);<br>
        added PetscStrallocpy(const char[],char **);<br>
        PetscStrncmp() and PetscStrcasecmp() now return PETSC_TRUE as a final argument<br>
        if the strings match else PETSC_FALSE. Note this means removing ! from your current<br>
        tests and adding it where you don't have it.</li>
      <li>PetscMemcmp() now has a final argument of true for matching memories.</li>
      <li>The Fortran versions of the PetscStrxxx() and PetscMemxxx() routines also now <br>
        have the error flag as the final argument</li>
    </ul>
    <ul>
      <li>PetscFree() now always returns an error code that may be checked with CHKERRQ(). <br>
        On systems where free() returns a void (and the user has no access to an error<br>
        condition in free(), PetscFree() returns 0 i.e. no error; on other systems it <br>
        returns the error number from free.</li>
      <li>The BT bitarray macros are now prefixed with PetscBT</li>
    </ul>
    <p><font size="4"><strong><u>Error Handling:</u></strong></font></p>
    <p><font size="4"><strong><u>Event Logging:</u></strong></font></p>
    <p><font size="4"><strong><u>Fortran Interface:</u></strong></font> </p>
    <p>&nbsp;</p>
    <p align="center"><font color="#FF0000" size="5">New <a name="Features">Features</a> in
    PETSc 2.0.28 (see <a href="#CHANGES">changes</a> above)</font></p>
    <p><font size="4"><strong><u>General:</u></strong></font> <ul>
      <li>   When doing string substitutions in library directory paths etc one must use ${PETSC_DIR} ${BOPT} etc now
        instead of $PETSC_DIR etc. Also you can put anything in {anything} as long as it is an environmental variable or
        passed in the options database with  -anything</li>
      <li>  Added PetscEmacsclientErrorHandler() -on_error_emacs [machinename] to allow emacs to jump to error; can be used<br>
        with any other error handler.</li>
      <li>  So long as you have defined the macro __FUNC__ "main" before your main C/C++ subroutine you can<br>
        use SETERRQ() and CHKERRQ() instead of SETERRA(), CHKERRA().
      </li>
    </ul>
    <p><font size="4"><strong><u>AO (Application Orderings):</u></strong></font> 
    <p><font size="4"><strong><u>TS (Timestepping Solvers):</u></strong></font> 
    <p><font size="4"><strong><u>SNES (Nonlinear Solvers): </u></strong></font><ul>
      <li>Added <strong>SNESSetLineSearchParams()</strong> and <strong>SNESGetLineSearchParams()</strong>,
        contributed by Matt Knepley.</li>
      <li>Added <strong>SNESGetConvergedReason()</strong> to find out if a <strong>SNESSolve()</strong>
        has converged/diverged and why</li>
      <li>Added <strong>SNESVecViewMonitorUpdate()</strong> and -snes_vecmonitor_update to display
        the Newton update at each iteration. </li>
    </ul>
    <p><font size="4"><strong><u>SLES (Linear Solvers):</u></strong></font> <ul>
      <li>See PC and KSP </li>
    </ul>
    <p><font size="4"><strong><u>KSP (Krylov Subspace Methods):</u></strong></font> <ul>
      <li>Added -ksp_gmres_krylov_monitor and <strong>KSPGMRESKrylovMonitor()</strong> to allow
        one to view the vectors<br>
        in the Krylov space.</li>
    </ul>
    <p><font size="4"><strong><u>PC (Preconditioners): </u></strong></font><ul>
      <li>We now provide a drop tolerance based ILU for SeqAIJ matrix format via Yousef Saad's
        SPARSEKIT2<br>
        software. Use -pc_ilu_use_drop_tolerance &lt;dt,dtcol,rowmax&gt; or<br>
        <strong>PCILUSetUseDropTolerance</strong>(pc,dt,dtcol,rowmax).</li>
    </ul>
    <p><font size="4"><strong><u>MAT (Matrices): </u></strong></font>
    <p><font size="4"><strong><u>DA (Distributed Arrays): </u></strong></font>
    <p><font size="4"><strong><u>VEC (Vectors):</u></strong></font> 
    <p><font size="4"><strong><u>IS (Index Sets): </u></strong></font>
    <p><font size="4"><strong><u>Draw (Graphics):</u></strong></font><ul>
      <li><strong>DrawCreate(</strong>) and <strong>DrawOpenX()</strong> now can take
        DRAW_FULL_SIZE, DRAW_HALF_SIZE, DRAW_THIRD_SIZE ... as arguments for w and or h.</li>
    </ul>
    <p><font size="4"><strong><u>Viewers: </u></strong></font><ul>
      <li>Added <strong>ViewerASCIIUseTabs() </strong>to allow turning off tabbing during certain
        viewer operations.</li>
      <li>Added <strong>ViewerGetSingleton()</strong>, ViewerRestoreSingleton() to allow managing
        the calling a a sequential viewer from within a parallel viewer.</li>
      <li>Added <strong>ViewerASCIISynchronizedPrintf</strong>(viewer,....)</li>
      <li>Binary and ASCII viewers can create compressed files by simply appending a .gz on the <br>
        filename.</li>
      <li>PETSc now has a new viewer that generates rudimentary Postscript.<br>
        Improvements, additions may be added as needed.<br>
        <strong>DrawOpenPS()</strong>, or <strong>DrawSetType(,DRAW_PS);</strong> or -draw_type ps<br>
        <br>
      </li>
    </ul>
    <p><font size="4"><strong><u>System:</u></strong></font><ul>
      <li>using -trdump with PETSC_USE_STACK compile option (default for BOPT=g*) will print the
        entire<br>
        stack for each malloc, allow one to more easily track down where mallocs where made that
        where not<br>
        freed.</li>
      <li>Added PetscSum_Op to replace MPI_SUM for reductions with MPIU_SCALAR</li>
      <li>Added PetscMaxSum_Op to do max on first half of entries and sum on second half.</li>
      <li>Added CHKMEMQ and CHKMEMA macros to help track down memory corruption.<br>
      </li>
    </ul>
    <p><font size="4"><strong><u>Error Handling:</u></strong></font></p>
    <p><font size="4"><strong><u>Event Logging:</u></strong></font></p>
    <p><font size="4"><strong><u>Fortran Interface:</u></strong></font> <ul>
      <li>Added Fortran 90 interface support for HP Convex&nbsp; and Solaris.machine.<br>
      </li>
    </ul>
    </body>
</html>