frictionqpotspringblock

Spring-block friction model.


Keywords
cpp, depinning, finite-difference, friction, python
License
MIT
Install
conda install -c conda-forge frictionqpotspringblock

Documentation

FrictionQPotSpringBlock

CI Doxygen -> gh-pages Conda Version

Spring-block friction model with local disordered potential energy landscape.

Python module

Using conda

conda install -c conda-forge python-frictionqpotspringblock

Note that xsimd and hardware optimisations are not enabled. To enable them you have to compile on your system, as is discussed next.

From source

You need xtensor, xtensor-python and optionally xsimd as prerequisites. Additionally, Python needs to know how to find them. The easiest is to use conda to get the prerequisites:

conda install -c conda-forge xtensor-python
conda install -c conda-forge xsimd

If you then compile and install with the same environment you should be good to go. Otherwise, a bit of manual labour might be needed to treat the dependencies.

# Download FrictionQPotSpringBlock
git checkout https://github.com/tdegeus/FrictionQPotSpringBlock.git
cd FrictionQPotSpringBlock

# Only if you want to use hardware optimization:
export CMAKE_ARGS="-DUSE_SIMD=1"

# Compile and install the Python module
# (-vv can be omitted as is controls just the verbosity)
python -m pip install . -vv

Change-log

v0.17.0

  • Adding smooth and semi-smooth potentials
  • [docs] Using default doxygen theme

v0.16.0

API Changes

  • [BREAKING CHANGE] minimise_nopassing: unifying return
  • [BREAKING CHANGE] minimise: changing the return value
  • [BREAKING CHANGE] timeStepsUntilEvent: no throw if convergence was not reached
  • [BREAKING CHANGE] timeSteps: adding nmargin option (note that the default of 1 implies the breaking change)
  • [BREAKING CHANGE] [Python] To guide the user: use functions instead of properties when a computation is involved
  • [BREAKING CHANGE] Removing: yieldDistanceRight / yieldDistanceLeft. Adding: y_right / y_left
  • [BREAKING CHANGE] Removing: triggerWeakest

Bug Fixes

  • set_t: ensure proper round

Internal Changes

  • Internal code-style updates
  • Fixing typo in CMakeLists
  • [docs] Readme: fixing minor typos
  • Merging "version.h" in "config.h"
  • Adding version test

v0.13.0

API Changes

  • Python API: converting many functions to properties
  • Pre-processor switch FRICTIONQPOTSPRINGBLOCK_USE_XTENSOR_PYTHON to using xtensor-python instead of xtensor
  • Remove unused class for maintainability

Internal changes

  • Fixing compiling warnings
  • Upgrading to Catch2.v3
  • Remove MSC work-around

v0.12.0

API changes

  • [BREAKING CHANGE] The constructor overloads with default istart = zeros are removed to enhance maintainability. See #51.

  • [BREAKING CHANGE] Allowe the use of minimise_timeactivity with chunked storage. See #53.

  • Adding function to advance to a fixed force. See #52.

v0.11.0

  • Adding SystemThermalRandomForcing: thermal system under external forcing (i.e. constant force, without a 'driving frame').

v0.10.1

Internal changes

  • Changing xt::xtensor -> xt::pytensor. An alias xt::pytensor == xt::xtensor is created for compiling without xtensor-python.

v0.10.0

Changes

  • [BREAKING CHANGE] Integrating boundscheck in API of minimise.

v0.9.0

Bugfixes & extensions

  • Fixing nopassing algorithm for overdamped dynamics.
  • Increasing the default maximum number of iterations.
  • Adding ymax overload.

Internal

  • Optimization: precompute 1 / m.

Documentation

  • Chuncked example: avoid costly search.

v0.8.0

Bugfixes & extensions

  • Calculating instantaneous temperature.
  • Temporarily work around xtensor#2510.
  • Adding SystemThermalRandomForcing.

v0.7.0

Bugfixes & extensions

  • Resolving segmentation fault windows.
  • Updating deps
  • [BREAKING CHANGE] Making advanceElastic private
  • Adding minimise_nopassing with fully overdamped dynamics
  • [BREAKING CHANGE] Renaming y -> refChunked. Adding array interfaces
  • [BREAKING CHANGE] Cleaning API of separate functions to set parameters
  • Fixing minor typos.
  • [Python] Adding missing imports

Documentation

  • Simplifying example.
  • Removing matplotlib from test runs.
  • Simplifying example (historic data txt -> h5, does not lead to change, this was checked).
  • Updating badges in readme.
  • Adding full Python example.

v0.6.8

  • [Python] Using scikit-build.

v0.6.7

  • Avoiding setuptools_scm dependency if SETUPTOOLS_SCM_PRETEND_VERSION is defined

v0.6.6

  • Python: passing CMAKE_ARGS environment variable.

v0.6.5

  • Adding time (#33)
  • Allowing for extra iterations

v0.6.4

  • Using simple stop criterion in event driven read (#32)

v0.6.3

  • Run a series of time-steps until the next plastic event (#31)

v0.6.2

  • Switching to xtensor-python (no API change).

v0.6.1

  • Fixing bug in triggering.

v0.6.0

  • Updating Python API. Minor style updates. (#26)
  • Fixing bug in event driven code. (#26)
  • Adding advanceElastic.
  • Adding debug assertions.
  • Renaming "advanceRightElastic" -> "advanceEventRightElastic" (#24)

v0.5.0

  • Adding function to trigger weakest.
  • Adding function to time avalanche.
  • Recomputing forces after quench.
  • Adding Python test (#21).
  • Updating readme.

v0.4.0

  • Switch to QPot/Chunked and prrng. Drawing the energy landscape is now done manually externally, but it allows much easier reproducibility and customisation.

v0.3.3

  • Wrapping some QPot::RedrawList function for Python API that has a mysterious bug using the reference (#16)

v0.3.2

  • Reconstruction using new QPot features (#14)

v0.3.0

  • Adding redraw customization (#12)

v0.2.0

  • Updating to new QPot
  • Various minor updates
  • Using doxygen docs (publishing GH Action)
  • Recover configuration to make random simulations deterministic: C++ and Python example
  • Updating appropriate forces at the appropriate instances
  • Added output "Load" example for future checking
  • Adding Python API
  • Using setuptools_scm for versioning
  • Improving CI