forked from velexi-research/LSMLIB
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCHANGE_LOG
380 lines (353 loc) · 18.2 KB
/
CHANGE_LOG
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
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
v1.0.1 2009/05/03)
------------------
* BUG FIXES:
- Fixed minor typo in INSTALL file.
- Fixed function declaration bug in lsm_geometry2d.h.
v1.0.0 (2009/02/15)
-------------------
* ENHANCEMENTS:
- Improved support for localization/narrow-band calculations
- Improved reinitialization via Russo & Smereka subcell fix.
- Added support for second-order accurate Fast Marching Method
calculations:
* computation of signed distance function
* solution of Eikonal equation
- Added support for higher-order delta functions.
- Added support for building single precision version of library
(via --enable-float configure option).
* MINOR CHANGES:
- Updated copyright information throughout library.
- Added many useful helper functions (e.g. curvature calculations,
higher-order delta function approximations, etc.).
- Added support for gfortran compiler (default Fortran compiler) in
configuration scripts.
- Redesigned Fast Marching Method implementation to use generic
programming ideas. The field extension, distance function calculation,
and solution of Eikonal equation are now all "templated" on the
number of dimensions.
* BUG FIXES:
- Fixed the following bugs in findLineInTetrahedron():
* for small tetrahedra, line segment returned occasionally
extend outside of the specified tetrahedron
* occationally the intersection point of the line with the
tetrahedron would be missed if the intersection point lies
on an edge of the tetrahedron.
- Fixed several warnings
v0.9.0 (2006/12/06)
-------------------
* ENHANCEMENTS:
- Added support for building the library outside of the source tree.
- Added installation of documentation during install process.
- Added support for localization/narrow-band method
- Fast Marching Method:
* added support for solution of general Eikonal equations
* added support for setting grid points as being outside of domain
* modified FMM_Core and FMM_Heap to be able to support higher
dimensional problems
- Improved API for Serial LSMLIB Package.
* Added support for masking regions as being outside of
computational domain
- LSMLIB MATLAB Package
* Added support for reinitialization
* Modified entire package so that order of data arrays is the one
generated by the MATLAB meshgrid() function.
- LSMLIB Parallel Package
* Redesigned data usage to reduce memory requirements.
* Level set function data associated with the PatchData handles
returned by getPhiPatchDataHandle() and getPsiPatchDataHandle()
methods now possesses filled ghostcell data.
- Boundary conditions
* Modified parallel and serial API to be more flexible and support
imposing different boundary conditions for different boundary
locations.
* Added support for imposing homogeneous Neumann boundary conditions
for higher order discretizations of spatial derivatives
- New documentation on LSMLIB and level set methods available in the
doc directory.
* MINOR MODIFICATIONS:
- Changed getIntegratorStep() to numIntegrationStepsTaken() to avoid
the ambiguity about whether the integrator step returned is associated
with the beginning or end of a time step.
- Reorganized library archives to remove circular dependencies.
* BUG FIXES:
- Fixed createGridSetGridDims() so that it correctly sets the total
number of grid points in the computational grid.
- Fixed various bugs in example code.
- Fixed configure script so that it correctly generates LSMLIB_config.h
- Fixed configure script so that it correctly handles optimize vs.
debug mode.
- Fixed inclusion of inline source code for Parallel LSMLIB Package.
- Fixed bug in LevelSetMethodToolbox::computeStableAdvectionDt() where
incorrect PatchData handle was used for control volume data.
- Fixed Makefile.config.MATLAB.in so that it correctly sets the directory
where the LSMLIB MATLAB Package should be installed.
v0.8.0 (2006/06/02)
-------------------
* ENHANCEMENTS:
- New support for serial calculations has been added thanks to generous
contributions by Dr. Masa Prodanovic.
- Modified fast marching method algorithm to set ghostcell values by
taking the value of the nearest interior grid point rather than
using a default value of zero. This change was made to avoid the
introduction of spurious zero level sets.
- Changed logic for computation of a stable time step to improve performance.
- MATLAB SUPPORT:
* added support for computation of plus/minus HJ ENO/WENO spatial
derivatives, TVD Runge-Kutta time integration, advancing level set
functions in time using the level set evolution equation.
* added MEX-file support for Linux, Windows, and Solaris platforms.
- SAMRAI is no longer a requirement for LSMLIB. The serial and MATLAB
capabilities of LSMLIB are still available when LSMLIB is not configured
with SAMRAI.
- The FieldExtensionAlgorithm now supports anti-periodic boundary
conditions for the field variable that is being extended off of the
zero level set.
- The user's guide has been expanded (but will continue to grow in
the future releases).
- The configure script now builds object code that is position independent
when the architecture supports it. This makes it possible to link
LSMLIB into shared objects.
* API CHANGES:
- The reinitializeLevelSetFunctions() method for the LevelSetMethodAlgorithm,
LevelSetFunctionIntegratorStrategy, and LevelSetFunctionIntegrator classes
has been changed to take an optional argument that specifies which
level set function (i.e. PHI or PSI) to reinitialize. By default,
PHI is reinitialized, so codimension-one problems will not need to
pass an argument.
- The FieldExtensionAlgorithm constructors now have an optional argument
that may be used to specify that the extension field should use
anti-periodic boundary conditions.
- The LevelSetMethodAlgorithm, ReinitializationAlgorithm,
OrthogonalizationAlgorithm, FieldExtensionAlgorithm,
LevelSetFunctionIntegratorStrategy, and LevelSetFunctionIntegrator
have all been modified so that reinitialization, orthogonalization,
and computation of the extension field all take an optional max_iterations
argument that can be used to override the stopping criterion specified
in the input file.
- The LevelSetMethodAlgorithm, LevelSetFunctionIntegrator, and
LevelSetFunctionIntegratorStrategy classes have been expanded to
include accessor methods for the reinitialization and orthogonalization
interval. These methods are provided to allow software built using
LSMLIB to override values specified via the input file.
- The fast marching method toolbox functions have been modified so that
it is NOT necessary to pass ghostbox/ghostcell width information. At
grid points that border the edge of the computational domain, the values
of the distance function and extension fields are computed using only
the values at interior grid points. This choice could potentially lead
to some errors near the boundaries of the computational domain but should
not be a big issue for problems where the zero level set is sufficiently
far from the boundaries.
* MINOR IMPROVEMENTS:
- Improved AntiPeriodicBoundaryConditionModule to be more robust about
detecting anti-periodic boundary conditions.
- Improved the autoconf set_build_mode.m4 macro.
- Added extern "C" guards around C header files.
- Improved pattern rules in Makefile.config.in to avoid conflicts with
compiler flags set by other software libraries.
* BUG FIXES/INTERNAL SOFTWARE MODIFICATIONS:
- Fixed bug in OrthogonalizationAlgorithm where the wrong data is used
to compute the gradient of fixed field during the orthogonalization
procedure.
- Fixed bugs in numerical kernels for field extension so that they no
longer allow grid cells immediately adjacent (along the coordinate
axes) to the zero level set to be modified during the field extension
algorithm.
- Redesigned OrthogonalizationAlgorithm to internally use
FieldExtensionAlgorithm instead of having redundant code.
- Fixed bug in fast marching method code that caused the front to be
incorrectly initialized when grid points lie exactly on the zero level
set.
- Reorganized the logic for orthogonalization and reinitialization of
level set functions.
- Updated MATLAB MEX files to reflect changes in fast marching method
and spatial derivative function signatures.
- Fixed a minor pointer to integer conversion bug in FMM_Heap that
arises on 64-bit architectures.
- Fixed some bugs in the configure script.
v0.7.2 (2006/03/11)
-------------------
* ADDED FEATURES:
- The library now uses the autoconf system for building the library.
- Modified LSM3D_findLineInTetrahedron() so that it returns the endpoints
of the line segment {phi=0,psi=0} oriented in the same direction as
grad(phi) cross grad(psi)
* REMOVED FEATURES:
- Removed ChomboVisDataWriter class since it is easier to use the VisIt
data writer capabilities provided by SAMRAI.
* BUG FIXES:
- Modified computation of unit normals so that they actually have norm 1
to machine precision (as opposed to having O(dx) error).
- Modified computation of stable time step to avoid division by zero if
the velocity is identically zero throughout the computational domain.
- GCC 4.0 compatibility
* Added explicit qualifier for the SAMRAI tbox::MPI struct.
* Fixed syntax bug in ReinitializationAlgorithm, FieldExtensionAlgorithm
OrthogonalizationAlgorithm
v0.7.1 (2006/02/10)
-------------------
* ADDED FEATURES:
- Added reinitializeLevelSetFunctions() and orthogonalizeLevelSetFunctions()
to the LevelSetMethodAlgorithm class so that users can manually
reinitialize and orthogonalize the level set functions.
- Changed default stopping condition for ReinitializationAlgorithm,
FieldExtensionAlgorithm, and OrthogonalizationAlgorithm to use
the stop distance criterion with the stop distance set to be the
length of the largest dimension of the computational domain.
- Improved verbose mode status output by ReinitializationAlgorithm,
FieldExtensionAlgorithm, and OrthogonalizationAlgorithm.
- Minor improvements to documentation
* API CHANGES:
- Renamed LevelSetMethodToolbox<>::copyDataToScratchSpace() to
copySAMRAIData().
- Reordered arguments to constructors of ReinitializationAlgorithm,
FieldExtensionAlgorithm, and OrthogonalizationAlgorithm because
iteration_stop_tolerance is not a very useful stopping criterion.
NOTE: this stopping criterion may be removed in the future...
* INTERNAL SOFTWARE MODIFICATIONS:
- Moved LEVEL_SET_FCN_TYPE and SPATIAL_DERIVATIVE_TYPE outside of the
LevelSetMethodToolbox class definition to clean up the code. They
are now referred to by using the LSMLIB namespace (e.g. LSMLIB::ENO).
* BUG FIXES:
- Fixed arguments passed to ReinitializationAlgorithm and
OrthogonalizationAlgorithm in the LevelSetFunctionIntegrator class.
- Removed LDFLAG* variables from Makefiles for examples since they were
empty and could potentially override LDFLAG* variables in other included
Makefiles.
- Removed some C++ style comments and variable declarations in FMM_* code
that cause errors on some compilers.
v0.7.0 (2006/02/01)
-------------------
* ADDED FEATURES:
- Added methods in LevelSetMethodAlgorithm to create FieldExtensionAlgorithm
objects.
- Added accessor method for the TVD Runge-Kutta order to the
LevelSetMethodAlgorithm and LevelSetFunctionIntegrator classes.
- Added cfl_number as an input parameter for the FieldExtensionAlgorithm,
ReinitializationAlgorithm, and OrthogonalizationAlgorithm.
- Modified FieldExtensionAlgorithm so that the user can specify
which component of level set function to use in field extension
calculation.
- Improved design and performance of LevelSetFunctionIntegrator,
ReinitializationAlgorithm, and OrthogonalizationAlgorithm by
removing some redundant PatchData and communications. The extra
communication only occurs during vector level set calculations.
- Added some debugging output to LevelSetFunctionIntegrator class
which is activated when verbose_mode is set to true.
- Redesigned LevelSetMethodAlgorithm to limit the requirements on
the LevelSetFunctionIntegratorStrategy class.
- Added BoundaryConditionToolbox class to make it easier to impose
common boundary conditions on level set functions. Support is
currently provided for periodic/anti-periodic boundary conditions.
- Added anti-periodic boundary conditions to LevelSetFunctionIntegrator,
ReinitializationAlgorithm, OrthogonalizationAlgorithm, and
FieldExtensionAlgorithm so that they work correctly at periodic
boundaries (i.e. do not introduce artificial zero level set into
solution).
- Improved doxygen documentation that groups public methods together
by functionality
- Ported to BlueGene/L with XL compilers.
* INTERNAL SOFTWARE MODIFICATIONS
- Added LSM3D_ prefix to findLineInTetrahedron() function.
which is activated when verbose_mode is set to true.
- Added configuration for different versions of HDF5.
- Added use of explicit qualifiers for namespaces in explicit template
instantiation to avoid warnings on some compilers.
- Improved performance of fortran routines by replacing division with
multiplication by inverse when possible. This optimization may not be
useful for all platforms or compiler option settings.
* BUG FIXES:
- Fixed bugs in LevelSetFunctionIntegrator when using vector level sets.
- Fixed bug in computation of stable time step when the external velocity
field depends on the level set functions.
- Fixed bugs in FieldExtensionAlgorithm, ReinitializationAlgorithm, and
OrthogonalizationAlgorithm classes when stop tolerance is not
specified.
- Fixed bugs in computation of ENO3 and WENO5 spatial derivatives in 3d.
- Fixed possible floating-point exception in
lsm*dComputeStableNormalVelDt() functions caused by division by zero
when |grad(phi)| is near zero.
v0.6.3 (2006/01/17)
-------------------
* BUG FIX: computation of volume and surface integrals now correctly returns
the sum reduction across processors.
v0.6.2 (2006/01/13)
-------------------
* Removed unneeded methods from FieldExtensionAlgorithm,
ReinitializationAlgorith, and OrthogonalizationAlgorithm.
* Fixed error reporting in classes in the parallel package.
* Added resetHierarchyConfiguration() method to LevelSetMethodAlgorithm
class.
* Changed default spatial derivative order to depend on the spatial
derivative type for the LevelSetFunctionIntegrator,
ReinitializationAlgorithm, OrthogonalizationAlgorithm, and
FieldExtensionAlgorithm classes.
* Changed LevelSetFunctionIntegrator::computeStableDt() so that it
ignores user-specified dt values when they are zero or negative.
* Fixed several bugs throughout the library.
v0.6.1 (2006/01/09)
-------------------
* Added 2nd- and 4th-order central approximations for spatial derivatives.
* Added some const qualifiers to the classes in the parallel package.
v0.6.0 (2006/01/02)
-------------------
* Reorganized C++ interface so that all classes are in the LSMLIB
namespace.
* Added support for vector level set method computations.
* Added support for extending fields off of the zero level set via
the field extension equation (see Osher & Fedkiw).
* Moved the reinitialization and orthogonalization algorithms to their
own classes (rather than have them embedded within the
LevelSetMethodIntegrator class).
* Renamed methods in the LevelSetMethodPatchStrategy to make their
functionality more apparent.
* Added several accessor methods to LevelSetMethodAlgorithm,
LevelSetMethodIntegratorStrategy, and LevelSetMethodIntegrator:
- spatial derivative type and order used in a level set method calculation
- PatchData handle for control volume data
* Added utility functions to compute integrals over the interior and surface
of the zero level set of the level set function.
* Removed pointer to GridGeometry from the argument list for the
LevelSetMethodAlgorithm and LevelSetMethodIntegrator classes because
it is redundant.
* Added component arguments (with default value 0) to several
LevelSetMethodToolbox methods so that they can be used on PatchData
with multiple components.
* Added support for doxygen source code documentation generation.
* Minor performance enhancements in numerical kernels (e.g. minimizing
divisions, etc.)
* Minor "safety" improvements to the C++ classes.
v0.5.3 (2005/10/25)
-------------------
* Redesigned the LevelSetMethod classes to make level set function data
available to the LevelSetMethodVelocityFieldStrategy class when
computing and initializing the velocity field.
* Added 2d example for LevelSetMethod classes when simulating motion under
a normal velocity.
* Minor bug fixes and corrections in comments/documentation.
* Split the samrai examples into two separate types: advection and normal
velocity motion.
* Added mex files to matlab package
- 3D upwind-HJ spatial derivative calculations
- 3D fast marching method calculations
v0.5.2 (2005/10/20)
-------------------
* Added support for motion resulting from specification of the normal
velocity.
- This changed the LevelSetMethodIntegrator,
LevelSetMethodVelocityFieldStrategy and LevelSetMethodToolBox classes.
* Added 3d example for LevelSetMethod classes.
v0.5.1 (2005/10/12)
-------------------
* Added restart capabilities for the LevelSetMethod classes.
* Added getIntegratorStep() method for LevelSetMethodAlgorithm,
LevelSetMethodIntegratorStrategy, and LevelSetMethodIntegrator
classes to keep track of how many integration time steps have been
taken.
* Added setCurrentTime() method to the LevelSetMethodVelocityFieldStrategy
to make it possible to synchronize the simulation time of the velocity
field strategy with the simulation time of the LevelSetMethodIntegrator.
* Fixed various bugs in the code (primarily parallel bugs).
v0.5 (2005/10/11)
-----------------
* Initial full featured version of parallel, level set method library
for codimension-one problems.