Changelog#
Unreleased#
Added#
New
kruskal_maxalgorithm for computing the size of vacancy clusters.
Changed#
The catalogues’
reconstruct_implnow returns the transformation matrix.DetectVacaciesclass interface changed and minimum distance introduced.New hinting process for saddle point searches
Removed#
Bugfixes#
Meta#
Version 0.9.0#
The is the first semi-complete version of openFLY that adds support for superbasins and running OLKMC simulations.
Added#
New
viewSoAalias.Supercellhas aset_boxmethod.New
SKMCclass for running OLKMC simulations.New
SuperBasinclass for managing a collection of basins.New
SuperCacheclass for managing a collection of superbasins.New
min_delta_maxoption forCatalogue.Dimerhas ause_historyoption.Dimer’sfind_spaccepts the number of frozen atoms.Hessianexposes aMatrixmember type and methods to calculate eigen vectors.New
centoidandcentroid_alignfunctions in the lattice namespace.New
DetectVacaciesclass for explicitly detecting vacancies.Cataloguecounts false positives and has anoptimisemethod.
Changed#
Dimerfixes the COM of the cell during SP searches by projection translational components out.During SP searches reconstruction we deterministically chose the dimer to axis to improve reproducibility.
During SP searches we utilise the fixed COM in the SP comparison step.
Potential’s hessian function is specified as non-mass weighted and a mass-weight function is included.
Increased default
MAX_GHOST_RATIOforneigh::List.Changed catalogue to write in Cereal’s portable_binary format.
Split poisoned mechanisms into SP/Minima poisoned.
Renamed
xisetossize!New options for EAM parsing to support debugging and alternative tabulations.
Bugfixes#
EAM Hessian bug fixed (was calculating slightly wrong Hessians!).
EAM potential parser handles tabulations with
numP != numRcorrectly.EAM potential does not require the same number of types in-use/available just that in-use is a subset of available.
Meta#
Cmake’s DOWNLOAD_EXTRACT_TIMESTAMP Warnings fixed.
Removed CI macOS builds due to openMP bug on on GitHub actions runners.
Version 0.8.0#
First release to actually do any KMC! This release introduces the Basin class for performing N-fold way KMC as well as: serialisation support for the catalogue; an adaptive catalogue and a Master s API changed (again!).
Added#
New
Basinclass for performing KMC simulationsNew lattice functions:
add_atoms(),motif_to_lattice(),remove_atoms(),remove_sphere().New
refine_tol()function in Catalogue.New
reconstruct()method in Catalogue.New
dprintutility function.Catalogue has serialisation support (hence all serialised members of the catalogue do to).
Catalogue environments expose their delta_max.
Catalogue has a method to calculate the (approximate) symmetries a geometry has.
Dimer::Exithas a new return code.Many new options in
Master::Options.New
Xoshiroconstructor to properly seed fromstd::random_device.Boxhas a new min_image calculator method.
Changed#
template_for()enhanced.Catalogue now sets delta_max of environments as minimum of Options.delta_max and the appropriate function of Fingerprint.r_min() enabling a more general default.
Catalogue environment’s
set_mechfunction moved to a Catalogue method.Mechanism’s members tweaked to encode more reconstruction info.
Hessians now contain zeros for frozen atoms instead of only being n_active x n_active to facilitate future conditioning and make them more like gradients.
Master’s default option mech_tol increased.
Master’s API has changed to facilitate new features + MPI.
Changed the base type of Hash
Bugfixes#
Typo in SoA::operator=
SoA::rebind made const correct.
Environments in the catalogue are allowed to have no mechanisms.
Catalogue works correctly on the second pass (memoization bug).
Meta#
New dependency Cereal
Now uses ccache in developer mode.
Fixed openMP compilation in MacOS cloud.
Version 0.7.0#
Overhauled saddle-point finding including: returning the new Mechanism class, automatic mechanisms symmetry identification and discovery and history dependant dimer searches.
Added#
New
Mechanismclass.New
rebuild_geo_from_nl()geometry function.The
Masterclass added which is an improved version of theMasterFinderclass.
Changed#
Dimer’s interface changed.Generalised some geometry functions:
rmsd(),grmsd().Potentials now compute mass weighted Hessians.
EAM hessian computation made more cache efficient.
Removed#
The
MasterFinderclass was removed.
Bugfixes#
Return wrong value in
examples/env/geometry.cpp.Fix EAM parser bug not reading masses correctly.
Fix bug in finder which forgot to
std::swaptwo states.
Version 0.6.0#
This release introduces local environments, the catalogue and implementation of our invariant and tolerant matching algorithm.
Added#
New
Catalogueclass.New
Fingerprintclass.New
canon_hash()function.New geometry functions:
centroid(),rmsd(),grmsd(),for_equiv_perms().New
ortho_onto()function.New
Colourproperty.New
Geometryclass.New property
Hash.New meta programming utility
is_narrowing_conversion_v.Atomhas a default constructor.VoS::atom_texposes the underlying atom type.New internal graph class.
Meta#
New dependencies Nauty and xxHash
Version 0.5.0#
This release introduce saddle-point finding and min->sp->min pathway finding. The concept of a generic potential was made more concrete to prevent a template explosion.
Added#
New
Dimersaddle-point finder.New
Rotorclass.New
perturb()functionNew
MasterFinderclass.SoAhas a new rebind method.
Changed#
Generalised
StepLBFGS’s.newton_step().Genericpotential API + constructor changesUnified minimiser, saddle finder and dimer return codes to follow C conventions (truthy on failure);
Splinemethods clamp input.
Removed#
LBFGSno longer has special handling for dimer classes.
Bugfixes#
Const-corrected
Generic::gradient.Padded spline with terminator to fix-up floating point rounding errors.
Version 0.4.0#
This release introduces generic potentials and the first concrete potential into openFLY, EAM. The EAM implementation includes support for analytic Hessians and is fully openMP parallelised. Additionally, an efficient parallel implementation of the LBFGS minimiser is included.
Added#
New
Deltaproperty.New
StepLBFGSclass.New
Splineutility class.New
DataEAMclass with eam/fs parsing.New
potential::Genericclass.New
EAMclass.New
xizeutility function.New
LBFGSclass.New
Hessianclass.Frozenproperty has a tag to enable GSD IO.
Changed#
fly::near()now has customizable tolerances.neigh::List’supdate()API changed.SoA’s converting constructors are now SFINE friendly.SoA’s base classes are now public.TypeMap’s converting constructor is now SFINE friendly.De-generalised
SoA’s converting constructors to allow implicit casts.Read methods on
BinaryFileareconst.LBFGSforce tolerance default tightened.Splineclamps interval.
Bugfixes#
Box (Ortho and Triclinic, valid bounds now include zero).
Version 0.3.0#
The second alpha version of openFLY, this release brings neighbour-list support to libFLY.
Added#
Neighbour-list support via the
neigh::Listclass.Internal
Vectorclass to replacestd::vector.Xoshiroclass as the PRNG.Boxhas a newget()method to fetch the underlyingstd::variant.visitutility function.neighbour::sortfunction to optimise ordering for neighbour operations.operator=for theAtomclassNew
template_forutility function.Added
min_widthmember to crystal specialisations.
Changed#
Property’sarray_ref_tis now anEigen::Mapto disallow resizing ofSoA’s individual arrays.SoA’sdestructive_resizenow returns a boolean.Allow zero length
SoAs.BinaryFileinternals reworked to support clang.VoSuses theVectorclass.
Removed#
Removed the
Orthorombic’s deprecated member min-image.Removed
Boxdefault constructor.
Bugfixes#
Crystal systems
gen_imagemarkedconst.Fixes to test and examples that assumed 3D.
SoA’soperator()was broken.SoA’sresizewas broken.
Meta#
vcpkg + gsd are now submodules so all dependencies are tracked by Dependabot!
Many documentation enhancements.
Version 0.2.0#
The first released alpha version of openFLY! This is a minimal feature-set release with just the base classes that underpin openFLY as well as binary IO.
Added#
Binary IO using the GSD format through the
BinaryFileclass.Propertybase class template.TypeMapclass template.Supercellclass template.SoAclass template.VoSclass template.Atomclass template.Boxclass and specialised crystal systems that it is built on.The utility.hpp file containing many utilities.
New CI workflow now includes C++20 and Intel compilers, MSVC removed due to compiler bug.
Changed#
GPL-2.0 -> GPL-3.0-or-later.
Meta#
Hdoc is no longer used to build the documentation.
Version 0.1.0 pre-release#
Continuous pre-release, not currently in a usable state.