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
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright (c) 2003-2018 by The University of Queensland
% http://www.uq.edu.au
%
% Primary Business: Queensland, Australia
% Licensed under the Apache License, version 2.0
% http://www.apache.org/licenses/LICENSE-2.0
%
% Development until 2012 by Earth Systems Science Computational Center (ESSCC)
% Development 2012-2013 by School of Earth Sciences
% Development from 2014 by Centre for Geoscience Computing (GeoComp)
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Changes from previous releases}
\label{app:changes}
\subsection*{5.6}
\begin{itemize}
\item Added support for Trilinos 12.8+
\item Added support for Boost 1.72+
\item Discovered bugs in the function interpolateFromTable and added a warning
\item Modified str(Data) for Jupyter
\item New functions to extend Jupyter support: getTVTK, getConnectivity
\item Improved install guide
\item Userguide now includes instructions on how to use Trilinos
\item Many bug fixes.
\end{itemize}
\subsection*{5.5}
\begin{itemize}
\item New classes for Magnetic, Gravity, 2DMT, Seismic (frequency domain). See doc/examples for documentation.
\item Extended escript support for numpy with several new functions (getNumpyX, convertToNumpy).
\item The getX function now works on Data objects.
\item Finley, Ripley and Speckley now allow integration over Dirac Delta Data objects.
\item Finley and Dudley now allow users to interpolate from Reduced Function Data to Function Data.
\item Added complex version of Scalar, Vector and Tensor objects (ComplexScalar, ComplexVector, ComplexTensor).
\item Added a new function, ComplexData, that returns a Complex Data object.
\item Speckley has a new assembler that allows a user to assembled a lumped matrix with complex values.
\item Lumping is now the default setting when solving PDEs using Speckley.
\item Added support for Gmsh MSH4.1 files in Finley readGmsh.
\item The Finley readGmsh function is now much faster.
\item Added several functions to aid plotting Data objects in Jupyter notebooks.
\item Added support for Trilinos 12.12.
\item Added Trilinos section to the userguide.
\item Added Scons options files for Python 3 builds.
\item The Install guide now lists the Python 3 versions of packages.
\item More complete API.
\item Bug fixes.
\end{itemize}
\subsection*{5.4}
\begin{itemize}
\item New deployment options: Flatpak, Docker, Anaconda (Linux)
\item More efficient interpolation in the line search in the LBFGS minimizer
\item Changes to default settings in the Solverbuddy
\item \escript now uses Trilinos by default
\item \escript now uses direct solvers by default when solving 2-dimensional problems
\item Removed all references to (deprecated) matplotlib.griddata in the examples
\item Numerous bug fixes
\item All unit tests are now working
\end{itemize}
\subsection*{5.3}
\begin{itemize}
\item Improvements to saveDataCSV, including support for \speckley and the ability to output reference IDs
\item Support for the Python numpy module, including the ability to output Data objects as numpy arrays
\item Both \finley and \dudley now support GMSH version 4.0 MSH files
\item Improved inversion in downunder.
\item \escript no longer supports CUDA
\item \escript no longer supports boomerAMG
\item \escript can now be compiled using gcc 8 or clang++ 3.8.1
\item Numerous bug fixes
\end{itemize}
\subsection*{5.1}
\begin{itemize}
\item Improvements to maths using complex values.
Note: Use the \texttt{promote()} method on Data objects (added in 5.0) to convert them to complex.
This does not change the value itself, (eg $7 \rightarrow 7+0j$) but matters for operations like \emph{sqrt} which behave differently with complex inputs.
\item Added \texttt{phase} operation to return the angular part/phase/arg of values.
\item Improved inversion.
\item Corrections to $\cdot\_transpose\_product$ operations.
\item Improved ``integration'' testing.
\item NetCDF support (if enabled), can now be built with support for netcdf-4 formatted files.\\
See \texttt{scons/templates/README_FIRST} for the options.
\item Support for lazy expressions with complex values.
\item Solving PDEs with complex coefficients requires Trilinos support.
Since escript requires features which are not
compiled in by default, please consult the install guide if you wish to make use of
this feature.
\item Note that in the $4.2.0.1$ release, the license for the escript source code was changed to ``Apache2''.
This should be less restrictive than the previous license.
\end{itemize}
\subsection*{5.0}
\begin{itemize}
\item Minimum Python version is now 2.7.
\item Remaining code switched from C to C++
\item Compilers are now required to support c++11 at minimum.
\item Some support for storing and manipulating complex values in Data objects.
\item Some solver configurations can solve PDEs with complex values.
\item Experimental support for Trilinos solvers and preconditioners.
\item \ripley by default no longer adjusts domain lengths when number of MPI ranks is unsuitable. A new function controls this behaviour.
\item Some C++ exceptions are now translated to equivalent Python exceptions (e.g. ValueError).
\item New \escript feature test function to interrogate build features at runtime.
\item Support for 'long' indices for very large local domains.
\item \escript is now more modular. New options can be used to select what to build.
\end{itemize}
\subsection*{4.0 to 4.1}
\begin{itemize}
\item Added multi-resolution \ripley domains
\item The gmshReader now supports reading with multiple processes
\item Using the help() function on some domains is now more informative
\item User guide updated with information on use of Dirac points
\item Minimizer misfit now available via the callback function
\item Specifying use of a direct solver without a direct solver being available now raises an exception rather than silently default to a non-direct solver
\item Synthetic seismic examples for various wave types now included in the examples distributed
\item Reading NetCDF files when the default value in the file is nan no longer causes issues
\item Various documentation updates and fixes in user guide, install guide, and code documentation
\item Various compatibility fixes with Python3
\item HTI and VTIWave models now support setting a q value for custom boundary conditions
\item Using a MPI-enabled gmsh with an MPI build of \escript should now reliably wait for gmsh to end
\item Added an example for voxet reading with \ripley
\end{itemize}
\subsection*{3.4.2 to 4.0}
\begin{itemize}
\item New spectral element domain, \speckley
\item CUDA-based solvers and block-diagonal system matrices in \ripley
\item DC Resistivity forward modeling
\item New build options:
\begin{itemize}
\item 'domains': allows only the specified domains to be built
\item 'prelaunch', 'launcher', 'postlaunch': allows build-time
customization of escript launcher
\item 'cuda', 'nvcc', 'nvccflags', 'thrust_prefix': path and flags for
CUDA compiler and thrust headers
\end{itemize}
\item Gmsh reader now \MPI parallelised
\item cycle and timestamp support for saveSilo and saveVTK
\item PDEs using \ripley now have per-PDE assemblers to allow domains to have
multiple PDEs of different types without conflict
\item General documentation updates, both guides and code commenting
\item Test framework compatible with older versions of Python
\item Removed BASHisms from \escript launcher
\item Data objects now have hasNaN() and replaceNaN() methods
\item readBinaryGrid() now supports scaling and 64-bit floats in non-native
byte order
\item Now compiles with Cray compiler
\item Wave models corrected
\item Equality checks on Data objects now throw exceptions
\item General changes to help compilers with \OPENMP parallelisation
\item Intel-based \OPENMP flavours now have proper thread binding
\item \ripley dirac points no longer get lost in domains with enormous
elements
\item lots of improvements in inversion toolbox \downunder and symbolic
toolbox
\end{itemize}
\subsection*{3.4.1 to 3.4.2}
\begin{itemize}
\item Changes to SolverOptions: Most of this is under the hood at this point
but any code which accesses parameters from a SolverOptions object like this:
\begin{python}
variable.getSolverOptions().DIRECT
\end{python}
will need to be modified to:
\begin{python}
SolverOptions.DIRECT
\end{python}
\item Data objects can be created using smoothed random data.
\item Support for OSX10.9
\item Support for additional problem types in downunder.
\item More efficient ripley domains for large compute clusters
\item Added symbolic toolbox and associated documentation
\item Ripley now supports Dirac delta functions.
\item Improved reading of netCDF files
\item Paso is now in its own namespace
\item Examples have been updated to use Python 3 behaviour (with future imports for Python 2).
\item Ripley supports reading from gzipped files.
\item Fixed fault in documentation generation
\item Fixes to keep clang++ happy
\end{itemize}
\subsection*{3.4 to 3.4.1}
\begin{itemize}
\item Renamed design.Design to design.AbstractDesign as a more explicit/descriptive name, {\bf this will break any existing custom implementation} until changed to match.
\item Efficiency improvements in esys.downunder inversions.
\item Implemented more CF conventions for the netCDF datasource and added GDAL support.
\item Strongly coupled joint inversion added.
\item Preliminary work on seismic modelling.
\item Added support for more input data types in ER Mapper files.
\item Improved stability for long MPI runs.
\item Added timeStepFormat option to \texttt{esys.escript.saveESD}.
\item Document generation process more stable.
\item Added support for smoothed random 2D data.
\item Documentation updated.
\item Improved read support for grid-reading.
\item Removed last usages of C compiler.
\item Efficiency improvements in \texttt{esys.downunder}.
\item Removed support for VSL random (\texttt{boost::random} is sufficient).
\item Fixes related to compatibility with Intel compiler.
\item Simplified module structure.
\item Various code cleanup and bug fixes.
\end{itemize}
\subsection*{3.3.1 to 3.4}
\begin{itemize}
\item This release does not use the support bundles from $3.0$ so building from source will be required in more cases.
\item In Debian and Ubuntu, there are now two packages. One containing escript itself and the other containing documentation.
This fits better with the way Debian does things.
\item esys.weipa can now write Voxet files for data on ripley.
\item All support for OpenDX has been dropped.
\item Improved documentation HTML API documentation.
\item Improvements to inversion module.
\end{itemize}
\subsection*{3.3 to 3.3.1}
\begin{itemize}
\item Source packages for Debian and Ubuntu can now be made directly by dpkg-source from the source tree\footnote{For this to work, you will need to place a file called \texttt{svn_version} containing the revision number in the root of the source.}.
\item non-uniform 1D interpolation (see Section~\ref{sec:interpolation}).
\item The minimum version of python required for escript is now $2.6$.
\item saveVTK and saveDX (previously deprecated) have been removed from the main escript module.
Please see the \module{weipa} documentation for export functionality.
\item The \module{downunder} inversion module is included.
\begin{itemize}
\item The documentation includes an inversion cookbook to get you started.
\item Most operations are possible with \escript's existing dependencies but some \emph{may} require \module{pyproj} or \module{gdal}
but \escript will let you know if that happens.
\end{itemize}
\end{itemize}
\subsection*{3.2.1 to 3.3}
\begin{itemize}
\item Experimental support for \pythonthree.
\item Parameter order for the table interpolation methods has changed to be consistent.
Please test your scripts if you use these functions.
\item setX on \finley and \dudley domains will now only accept coordinates from ContinuousFunction spaces.
This is to avoid some potentially nasty behaviour when using periodic boundary conditions.
You can still use setX, just make sure that you interpolate first.
\end{itemize}
\subsection*{3.1 to 3.2}
\begin{itemize}
\item The deprecated name for the launcher has been removed. To run scripts use
\emph{run-escript} not \emph{escript}.
\item \escript is no longer automatically imported by importing \finley.
You will need to import escript explicitly. (All of our example scripts do this anyway.)
\item An experimental version of the new Dudley domain is now available.
\item Various bug fixes and optimisations.
\item New algorithms for gmsh support.
\item Improvements to the AMG solver. AMG is the recommended solver for symmetric problems.
\item Fixed compilation issues using netcdf.
\item Redesigned configuration files to make it easier to compile from source
without finding the locations of all your libraries.
\item Faster rendering of documentation.
\item Documentation is now hyperlinked.
\item New data export module \weipa. The \texttt{saveVTK} functionality has
been moved into this module, and while calling \texttt{saveVTK} from the
\escript module still works it is discouraged and will be removed in a
future release.
\item New \texttt{esys.escript.DataManager} class for convenient checkpointing
and exporting of escript data.
\item \VisIt simulation interface for online data access and visualization.
\item Simpler interpolation and support for interpolation from 3D vectors.
\item HRZ lumping has been added and some clarification on how to use it.
\item Data objects populated with ``random'' values can be created.
\end{itemize}
\subsection*{3.0 to 3.1}
\begin{itemize}
\item The \emph{escript} launcher has been renamed to \emph{run-escript}. The
old name will still work in this version but will be removed in the future.
\item Lazy evaluation features have been improved and documented (see \Sec{sec:lazy}).
\item The \emph{escript} documentation now includes a new Cookbook which
demonstrates how to solve sample problems using escript.
\item Macro elements have been introduced.
\item The \var{saveDataCSV} method allows one or more \Data objects to be
exported in CSV format (see \Sec{sec:savedatacsv}).
\item \Data objects can be populated by interpolating from values in a table.
\item The new \var{getInfLocator} and \var{getSupLocator} functions in
\pdetools return Locators to a minimal/maximal point over the
data.
\item There is a new class to model fault systems (\var{esys.escript.faultsystems.FaultSystem}).
\item A beta version of an Algebraic Multigrid (AMG) solver is included.
\item Inverting square matrices larger than 3x3 is now permitted if escript is
compiled with Lapack support.
\item If escript is compiled with a modern compiler, then inf/sup/Lsup will now
report NaN, +/-inf as appropriate if those values appear in the data.
\item Data.setTags will take tag names as well as tag numbers.
\item The Scalar, Vector, Tensor, Tensor3, Tensor4 factory methods can now take
arrays/nested sequence like objects as their initial values.
\item escript.util.mkDir can now take a list of directories to create.
\item Behind the scenes, \PYTHON docstrings have been rewritten from epydoc to
restructured text.
\item Various other bug fixes and performance tweaks.
\end{itemize}
\subsection*{2.0 to 3.0}
\begin{itemize}
\item The major change here was replacing \module{numarray} with \numpy.
%% I've removed the link since it is no longer valid
% For general instructions on converting scripts to use numpy see\\
% \url{http://www.stsci.edu/resources/software_hardware/numarray/numarray2numpy.pdf}.\\
The specific changes to \escript are:
\begin{itemize}
\item getValueOfDataPoint() which returned a \module{numarray}.array has been
replaced by getTupleForDataPoint() which returns a \PYTHON tuple
containing the components of the data point. In the case of matrices or
higher ranked data, the tuples will be nested.
Use \numpy.array(data.getTupleForDataPoint()) if a \numpyNDA object is
required.
\item getValueOfGlobalDataPoint() has similarly been replaced by
getTupleForGlobalDataPoint().
\item \code{integrate(data)} now returns a \numpyNDA instead of a
\module{numarray}.array.
\end{itemize}
Any python methods which previously accepted \module{numarray} objects now
accept \numpy objects instead.
\item The way to define solver options for \LinearPDE objects has changed.
There is now a \SolverOptions object attached to the \LinearPDE
object which handles the options of solvers used to solve the PDE.
The following changes apply:
\begin{itemize}
\item The \method{setTolerance} and \method{setAbsoluteTolerance} methods
have been removed. Instead use \method{setTolerance} and
\method{setAbsoluteTolerance} on the \SolverOptions object. For example:
\method{getSolverOptions().setTolerance(\ldots)}
\item The \method{setSolverPackage} and \method{setSolverMethod} methods have
been removed. Instead use the methods \method{setPackage},
\method{setSolverMethod} and \method{setPreconditioner}. For example:
getSolverOptions().setPackage(\ldots).
\item The static class variables defining packages, solvers and
preconditioners have been removed and are now accessed via the
corresponding static class variables in \SolverOptions.
For instance use \method{SolverOptions.PCG} instead of
\method{LinearPDE.PCG} to select the preconditioned conjugate gradient
method.
\item The \method{getSolution} now takes no argument. Use the corresponding
methods of the\\ \SolverOptions object returned by
\method{getSolverOptions()} to set values,\\ e.g. use
\method{getSolverOptions().setVerbosityOn()} instead of argument
\code{verbose=True} and \method{getSolverOptions().setIterMax(1000)}
instead of argument \code{iter_max=1000}.
\end{itemize}
\end{itemize}
|