/
ChangeLog
341 lines (333 loc) · 19.6 KB
/
ChangeLog
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
Mon Mar 25 16:36:19 PDT 2019 Jeffrey Johnson <jeffjohnson@pobox.com>
* polymec: versin 2.5.1
* Fixed a compile error on Mac and a glitch in field_metadata.
Wed Mar 20 15:55:02 PDT 2019 Jeffrey Johnson <jeffjohnson@pobox.com>
* polymec: version 2.5.0
* New distributed mesh type: blockmesh
- This is an EXPERIMENTAL multi-block structured mesh. It passes basic
smoke tests, but hasn't been fully verified yet.
- Blockmesh fields are available on all centerings relevant to unimeshes.
* Build/configure system enhancements
- Added support for Ninja to the build system.
- Added support for parallel unit testing to the build system.
- Added various optimizations to speed up builds.
* Field enhancements
- Fields now have metadata objects that store information about physical
considerations, scalars, vectors, tensors.
- Exchangers can now aggregate values from multiple sources and reduce
them using MPI's operators.
- Implemented field exchanges for the colmesh on all centerings.
- Implemented field exchanges for edge-centered polymesh fields.
* Other parallelism enhancements
- Added a blob_exchanger for exchanging variable-sized binary objects.
(Not for use in environments with heterogeneous CPUs, at least not those
with mixed endian-ness)
* Interpreter enhancements
- sp_func and st_func objects can now be implemented in Lua.
- Improved support for Lua-implemented models and probes.
- Added a dl module for dynamic library loading configuration.
* Other features
- Added log_flush, which writes data to a log synchronously.
- Loggers no longer close system file descriptors.
- Dynamic load libraries are now sought in the installation path by
default.
- xxx_verify_yyy() functions have been replaced with xxx_is_valid()
functions that return internal strings explaining issues, instead of
relying on handler functions.
* Maintenance and tech debt
- Bumped third-party libraries to their latest versions, with the
exception of Sundials 4.1, which requires a rewrite of the solvers
library.
- Added a thirdparty Lua module that contains information about our
third-party libraries. This module replaces the older 3rdparty.cfg file.
- Removed the Fortran special functions library.
- Removed unused code from the model library.
- Travis CI builds are now much faster (they use a polymec-specific Docker
image, and tests run in parallel).
- Countless bugfixes, and a lot of cleanup.
Fri Nov 23 00:01:09 PDT 2018 Jeffrey Johnson <jeffjohnson@pobox.com>
* polymec: version 2.4.0
* New distributed mesh type: colmesh, a semi-structured extruded
polygonal mesh.
* New planar polygonal (2D) mesh type, useful for constructing a colmesh.
* Improved support for 2D points and vectors.
* Reintroduced polygon and polyhedron classes.
* Silo files can now include colmesh and planar_polyesh data.
* Probes can now run postprocessing, and can even stream acquired data
over UDP or Unix sockets.
* Enumerables: generator expressions with quantifiers, for easier
testing.
* Lua interpreter and model_run/model_advance now intercept SIGINT and
SIGTERM, provide uninterruptible steps and clean exits.
* Added more type-generic math functions.
* Added exchanger_proc_map class to eliminate boilerplate code when
constructing exhangers.
* Updated third-party libraries: cmocka, Sundials, HDF5, zlib.
* Improved code documentation.
* More features exposed to lua.
* Added partition_graph_n_ways and partition_points_n_ways for
single-process decomposition.
* Exchangers can now perform local copies.
* Added MPI_COMPLEX_T type for exchanging complex numbers.
* Reworked older Lua classes: they now use the new type system.
* Reworked managed C memory in terms of refcounting, not garbage collection.
* Serializers are now owned by their global registry.
* "Garbage collection" C allocation functions have been renamed to
reflect that they actually perform reference counting.
* x_unordered_map_clone() and x_table_clone() now do deep copies.
* Added Silo 4.10 user guide to the repo.
* Python tool scripts now work with Python 3.
* Various bugfixes--too many to list.
Thu Jul 26 20:03:08 PDT 2018 Jeffrey Johnson <jeffjohnson@pobox.com>
* polymec: version 2.3.0
* Lua type system now just uses classes (no more record types).
* It's easier to add fields (with getters/setters) to classes and to modules.
* The Lua interface is a bit more comfortable, since objects can have
fields now, and not just methods.
* Added a "doc" target that generates API documentation with Doxygen.
Tue Jul 24 09:57:53 PDT 2018 Jeffrey Johnson <jeffjohnson@pobox.com>
* polymec: version 2.2.5
* Fixed various installation-related glitches.
* The lua dir() function is better:
- When called with no arguments, it lists the members of the global
namespace.
- It alphabetizes the members it returns.
Fri Jul 6 10:22:24 PDT 2018 Jeffrey Johnson <jeffjohnson@pobox.com>
* polymec: version 2.2.4
* Fixed a bug in x_array_reorder.
* Added unimesh_patch_box and other unimesh_patch creature comforts.
* Added an "easy" alternative for constructing unimesh_patch_bc types.
* More improved build instructions.
Wed Jul 4 16:48:41 PDT 2018 Jeffrey Johnson <jeffjohnson@pobox.com>
* polymec: version 2.2.3
* Fixed a bug in unimesh observer calls.
* Fixed a bug in parsing the pause=X argument.
* Added CL support for enhanced MPI error handling.
* Added scoping to ASSERTs.
* Added support for Address Sanitizer.
* Improved comments and docs for building.
* Other minor bugfixes included.
Thu May 24 20:00:12 PDT 2018 Jeffrey Johnson <jeffjohnson@pobox.com>
* polymec: version 2.2.2
* Switched Travis CI Docker image to Ubuntu 18.04 LTS from 16.04 LTS.
* Added a couple of Valgrind suppressions.
* Refined polymec_atinit and polymec_atexit.
* Fixed a minor cleanup issue with Silo compression.
* Bumped HDF5 version to 1.10.2.
* Replaced 'make config' system with a simpler bootstrap process.
* Replaced update_version_h and generate_headers Python scripts with
* scripts, easing a build dependency.
Sun May 13 21:53:54 PDT 2018 Jeffrey Johnson <jeffjohnson@pobox.com>
* polymec: version 2.2.1
* Removed remaining contents of 3rdparty/silo/ directory.
* HYPRE library discovery/error checking is improved.
* Bumped Sundials version to 3.1.1.
* Number of physical cores is now detected and used to run MPI tests.
Thu May 3 6:29:35 PDT 2018 Jeffrey Johnson <jeffjohnson@pobox.com>
* polymec: version 2.2.0
* A low-level partitioning interface has been added.
* Existing partitioning interfaces for point_cloud and polymesh are
simpler than before.
* The migrator class is gone.
* PETSc and HYPRE solvers are more robust, and are enabled for static
builds.
* Polymec now uses Dockerenabled Travis CI builds.
* Adopted the abandonware Silo library for the moment (usilo).
* Bumped the Sundials library to version 3.1.
* Numerous bugfixes.
Sat Apr 7 17:35:33 PDT 2018 Jeffrey Johnson <jeffjohnson@pobox.com>
* polymec: version 2.1.1
* Fixed bugs in edge-centered unimesh_field exchanges.
* Fixed a bug that caused excessive memory usage for unimesh_fields.
* Added a fancy license badge to README.md.
Mon Apr 2 00:07:19 PDT 2018 Jeffrey Johnson <jeffjohnson@pobox.com>
* polymec: version 2.1.0
* Added structured mesh classes unimesh, unimesh_field, unimesh_patch.
* Added silo_file support for unimesh_*.
* Various bugfixes and enhancements to core data structures.
* Updated Python tools for Python 3.
* Filled out the mpi_serial stub library.
* Added a directory stack to silo_file.
* Enhanced code coverage for existing assets.
* Minor enhancements and bugfixes to kd-trees.
Thu Nov 30 13:38:42 PST 2017 Jeffrey Johnson <jeffjohnson@pobox.com>
* polymec: version 2.0.1
* Fixed a bug in garbage collection.
* Added diagnostic modes for models to control whether time steps
are affected by plots and/or probe measurements.
* The io library now depends on all other libraries. Silo features
have been consolidated into this library.
* Removed MPI tag arguments from silo_file_new, silo_file_open. This
breaks compatibility, strictly speaking, but remains a very minor
change.
Sun Nov 19 14:41:52 PST 2017 Jeffrey Johnson <jeffjohnson@pobox.com>
* polymec: version 2.0.0
* Implemented a proper Lua interpreter for writing input scripts.
- Added types and functions for defining records and objects that
represent polymec data structures.
- Implemented logic for interactive interpreter, including accommodations
for parallel I/O.
- Added Lua representations of all fundamental data types.
- Added help() and document(), an interactive docstring-based help
system.
- Provided lua_driver, which handles startup and provides a Lua
interpreter inside which input is executed.
* Added signed distance function classes: sd_func and sdt_func.
* Added vectorized forms for sp_func and st_func.
* Replaced model observations with probes, making data acquisition
available to the Lua interpreter.
* Added complex_t and corresponding functions for manipulating complex
numbers.
* Implemented several special functions (real- and complex-valued).
* Renamed integrators library to solvers and moved several classes there.
* Added an io library that contains the silo_file class.
* Streamlined the silo_file interface.
* Renamed mesh to polymesh and moved it to the geometry library.
* Removed the meshless library.
* Improved defaults for parameters in the model class.
* Fixed several significant bugs and added several new unit tests.
* Bumped third-party library versions.
* Added support for code coverage using lcov/gcov.
- Increased code coverage from ~50% to ~75%.
Mon Dec 5 22:56:33 PST 2016 Jeffrey Johnson <jeffjohnson@pobox.com>
* polymec: version 1.4.0
* Added model_get_vtable and model_set_vtable to allow vtable overrides within a model instance.
* Added functions for stencil <-> neighbor_pairing conversions, etc.
* Fixed several typos and oversights in documentation.
* Cleaned up the newton_solver interface, breaking out fixed point iteration and Picard iteration into separate constructors.
* Added a new polyhedron class.
* Added support for generating project files for several programming IDEs (Xcode, CodeBlocks, CodeLite, Kate, Sublime).
* Timer reports now contain timing data for all MPI ranks(!).
* Builds now can be named and referred to, replacing lists of config options.
* We added support for HYPRE_ext, an upcoming dynamically-loadable library that provides some extensions to HYPRE (and is licensed appropriately outside of Polymec).
* We made some inroads into understanding the LIS solvers in the context of poor performance with INK solvers, though a lot remains to study.
* Removed LIS solvers.
* HYPRE and PETSc solvers are now enabled with serial (mpi=0) configurations.
* Disabled XCode IDE when building with MPI.
Sat Nov 19 20:21:58 PST 2016 Jeffrey Johnson <jeffjohnson@pobox.com>
* polymec: version 1.3.2
* Added a "min_dt" option for halting simulations whose stable dt falls below a given threshold.
* Arrays of non-field data are now stored in Silo files in a slightly more streamlined fashion.
* Fixed a minor glitch in the installation of generated header files.
* Added model_get_vtable and model_set_vtable to allow vtable overrides within a model instance.
* Added functions for stencil <-> neighbor_pairing conversions, etc.
* Fixed several typos and oversights in documentation.
* Cleaned up the newton_solver interface, breaking out fixed point iteration and Picard iteration into separate constructors.
* Added a new polyhedron class.
* Added support for generating project files for several programming IDEs (Xcode, CodeBlocks, CodeLite, Kate, Sublime).
* Timer reports now contain timing data for all MPI ranks(!).
Fri Oct 28 17:49:38 PDT 2016 Jeffrey Johnson <jeffjohnson@pobox.com>
* polymec: version 1.3.1
* Added support for a minimum time step in models.
* Streamlined array variable representations in Silo files.
* Names of generated headers need to be cached.
* Added first-class support for garbage collection in allocators.
* Fixed problems with untraced memory allocations (which cause failure to
collect objects tracked within).
* Fixed problems involving use of standard malloc/free, mixed with
polymec's allocators.
* Removed explicit use of the Boehm garbage collector from the library.
* Surrogates for system functions now use regular allocators.
* Removed a Valgrind suppression that is no longer needed.
Fri Oct 14 18:08:47 PDT 2016 Jeffrey Johnson <jeffjohnson@pobox.com>
* polymec: version 1.3.0
* Added some more compiler warning suppressants.
* Eliminated fabs() calls from the code, using reals_equal() and reals_nearly_equal() instead.
* Changed a call to gethostname() to a call to MPI_Get_process_name().
* Added model_run_files to run several simulations at once
* Added "batch" command to model main functions to invoke model_run_files
* Models now have their own global communicators that can differ from MPI_COMM_WORLD.
* Added unit tests for model and text_buffer, fixed bugs in each.
* Updated LIS library to 1.6.2.
* Single precision is now formally supported by the build system.
* Fixed several compilation errors related to using doubles in single precision.
* Fixed several bugs related to using doubles in single precision.
* Added type-generic math functions.
* Linux compilers are updated to GCC 5, Clang 3.6.
* Mac compilers are updated to those in a more recent XCode.
* Eliminated SuperLU and local_matrix abstractions, since those preconditioners weren't productive.
* Added a Full Approximation Storage (FAS) multigrid solver for nonlinear problems.
* Added generic interfaces for constructing BDF/DAE/ARK integrators and Newton solvers.
* Added Inexact Newton-Krylov implementations for these integrators/solvers that use the krylov_solver interface (LIS, PETSc, HYPRE all supported).
* Added various features to krylov_solver interface, including copy in/out methods, diagonal scaling, scaled solves, more vector norms, etc.
* Updated Sundials to v2.7.0.
* Updated CMocka to v1.1.0.
* Patched LIS to add a new convergence criterion.
* DAE integrator now has more descriptive IC correction options.
* Cleaned up tests for these integrators and solvers, using C99 multidimensional arrays instead of C89-style macros for the discretizations.
* Migrator/exchanger destructors are no longer needed, as these types are garbage-collected.
* The migrator/exchanger relationship is no longer expressed as part of the API.
Mon Aug 15 20:10:58 PDT 2016 Jeffrey Johnson <jjphatt@gmail.com>
* polymec: version 1.2.1
* Improved OpenMP detection.
* Added the ability to suppress OpenMP.
* Enabled more serious static analysis via compiler warnings/errors.
* Fixed several minor issues uncovered by static analysis.
* Added floating-point comparison functions
* reals_equal - true/false if two reals are equal/not equal
* set_real_epsilon - sets threshold for equality of reals
* reals_nearly_equal - true/false if two reals are within a given tolerance.
Thu Aug 4 15:53:04 PDT 2016 Jeffrey Johnson <jjphatt@gmail.com>
* polymec: version 1.2
* Fixed a minor problem in HDF5 library location with polyglot.
* Fixed ordering of the HDF5 libraries.
* Disallowing serial builds on Edison/Cori, fixing some HDF5 settings.
* Exchangers/migrators are now garbage collected. Their destructor
functions are now deprecated.
* Set up a more formal mechanism for supporting builds on specific
machines. Machine files are stored in a polymec-machines repo.
* Adding Valgrind support for Travis CI via 'make memcheck'.
* Adding support for testing on batch systems via ctest.
* Machine files are now updated if they are already present.
* Fixed all outstanding issues reported by Valgrind.
* Added simple mesh-free kernels and functions back into Polymec.
* Removed halo stencil for unstructured grids.
Fri Jun 24 21:25:33 2016 Jeffrey Johnson <jjphatt@gmail.com>
* polymec: version 1.1
* The implementation of the distance_based_neighbor_pairing_new function,
bundled with the neighbor_pairing class, had a bug in its parallel
implementation, which has been fixed.
* Added support for LIS Krylov solvers (no block matrix support yet).
* Implemented parallel_sort.
* Implemented dynamic repartitioning of point clouds.
* Added interface support for variable-sized block krylov matrices.
* Added logging mode for output to all ranks.
* Various little enhancements for the build system.
* Removed support for NERSC hopper.
* Point cloud dynamic repartitioning now works.
* Also, there's a new migrator type that is distinct from the exchanger
type, since having the latter do both exchanges and transfers was
confusing.
* The Krylov matrix/vector classes no longer include assembly methods in their interfaces.
* Numerous bugs were fixed in the HYPRE Krylov solver. The PCG, GMRES, and BICGSTAB solvers now correctly solve the 1D Laplace equation.
* LIS now builds with debugging symbols (and without optimization) under Debug builds.
* HYPRE error reporting is now improved.
* All interfaces (LIS, PETSc, HYPRE) use 64-bit integers to store global indices.
* Reworked the Krylov solver unit test to be thorough for PETSc/HYPRE
interfaces.
* New methods have been added to the krylov_matrix class for adding and
inserting/getting blocks.
* Variable and fixed block matrices are now supported in all Krylov
solver implementations.
* Polymec's versioning information now doesn't include diffs in tests.
* The build system is more selective about generating headers and version
information, resulting in considerable build savings when debugging
small numbers of files.
* Travis CI now builds PETSc/HYPRE libraries where they are to be tested.
* Bumped Lua to 5.3.3.
* Bumped HDF5 to 1.10.0-patch1.
* Added missing migrator methods, which allow us to use the migrator
interface and avoid the deprecated portion of the exchanger interface.
* Simplified the logic behind the determination of HDF5 library names in
the 3rd-party build system in order for successful builds on NERSC
Edison/Cori.
* The Lua interpreter's functions are now documented.
* Enhanced logging features like log_mode(), more flexible ordering of log-related command line args.
* Failed assertions now report MPI ranks.
* Exchangers now support int64_t via MPI_INT64_T, and serialization/deserialization code has been tidied up.
* Dynamic mesh partitioning works in all test cases. We'll see.
* Also fixed a bug in the initial partitioning of rectilinear meshes.
Mon Mar 21 18:39:00 2016 Jeffrey Johnson <jjphatt@gmail.com>
* polymec: version 1.0 (initial release)
A set of high-performance software libraries that can be used to construct
models for physical systems.