{"id":17737757,"url":"https://github.com/tdegeus/frictionqpotspringblock","last_synced_at":"2026-01-21T01:01:59.244Z","repository":{"id":37497629,"uuid":"311660336","full_name":"tdegeus/FrictionQPotSpringBlock","owner":"tdegeus","description":"Spring-block friction model with local disordered potential energy landscape","archived":false,"fork":false,"pushed_at":"2024-02-23T16:55:40.000Z","size":953,"stargazers_count":0,"open_issues_count":5,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-04-16T06:53:13.361Z","etag":null,"topics":["cpp","depinning","finite-difference","friction","python"],"latest_commit_sha":null,"homepage":"https://tdegeus.github.io/FrictionQPotSpringBlock","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tdegeus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-10T13:03:57.000Z","updated_at":"2024-04-16T06:53:13.361Z","dependencies_parsed_at":"2024-10-26T05:53:31.391Z","dependency_job_id":"2cad1548-fb1e-4e2c-abba-933c5ac65672","html_url":"https://github.com/tdegeus/FrictionQPotSpringBlock","commit_stats":null,"previous_names":[],"tags_count":55,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tdegeus%2FFrictionQPotSpringBlock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tdegeus%2FFrictionQPotSpringBlock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tdegeus%2FFrictionQPotSpringBlock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tdegeus%2FFrictionQPotSpringBlock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tdegeus","download_url":"https://codeload.github.com/tdegeus/FrictionQPotSpringBlock/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247631832,"owners_count":20970069,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","depinning","finite-difference","friction","python"],"created_at":"2024-10-26T01:42:38.579Z","updated_at":"2026-01-21T01:01:59.217Z","avatar_url":"https://github.com/tdegeus.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FrictionQPotSpringBlock\n\n[![CI](https://github.com/tdegeus/FrictionQPotSpringBlock/actions/workflows/ci.yml/badge.svg)](https://github.com/tdegeus/FrictionQPotSpringBlock/actions/workflows/ci.yml)\n[![Doxygen -\u003e gh-pages](https://github.com/tdegeus/FrictionQPotSpringBlock/workflows/gh-pages/badge.svg)](https://tdegeus.github.io/FrictionQPotSpringBlock)\n[![Conda Version](https://img.shields.io/conda/vn/conda-forge/frictionqpotspringblock.svg)](https://anaconda.org/conda-forge/frictionqpotspringblock)\n\nSpring-block friction model with local disordered potential energy landscape.\n\n# Python module\n\n## Using conda\n\n```bash\nconda install -c conda-forge python-frictionqpotspringblock\n```\n\nNote that *xsimd* and hardware optimisations are **not enabled**.\nTo enable them you have to compile on your system, as is discussed next.\n\n## From source\n\n\u003e   You need *xtensor*, *xtensor-python* and optionally *xsimd* as prerequisites.\n\u003e   Additionally, Python needs to know how to find them.\n\u003e   The easiest is to use *conda* to get the prerequisites:\n\u003e\n\u003e   ```bash\n\u003e   conda install -c conda-forge xtensor-python\n\u003e   conda install -c conda-forge xsimd\n\u003e   ```\n\u003e\n\u003e   If you then compile and install with the same environment\n\u003e   you should be good to go.\n\u003e   Otherwise, a bit of manual labour might be needed to\n\u003e   treat the dependencies.\n\n```bash\n# Download FrictionQPotSpringBlock\ngit checkout https://github.com/tdegeus/FrictionQPotSpringBlock.git\ncd FrictionQPotSpringBlock\n\n# Only if you want to use hardware optimization:\nexport CMAKE_ARGS=\"-DUSE_SIMD=1\"\n\n# Compile and install the Python module\n# (-vv can be omitted as is controls just the verbosity)\npython -m pip install . -vv\n```\n\n# Change-log\n\n## v0.17.0\n\n*   Adding smooth and semi-smooth potentials\n*   [docs] Using default doxygen theme\n\n## v0.16.0\n\n### API Changes\n\n*   [BREAKING CHANGE] `minimise_nopassing`: unifying return\n*   [BREAKING CHANGE] `minimise`: changing the return value\n*   [BREAKING CHANGE] `timeStepsUntilEvent`: no throw if convergence was not reached\n*   [BREAKING CHANGE] `timeSteps`: adding `nmargin` option (note that the default of 1 implies the breaking change)\n*   [BREAKING CHANGE] [Python] To guide the user: use functions instead of properties when a computation is involved\n*   [BREAKING CHANGE] Removing: `yieldDistanceRight` / `yieldDistanceLeft`. Adding: `y_right` / `y_left`\n*   [BREAKING CHANGE] Removing: `triggerWeakest`\n\n### Bug Fixes\n\n*   `set_t`: ensure proper round\n\n### Internal Changes\n\n*   Internal code-style updates\n*   Fixing typo in CMakeLists\n*   [docs] Readme: fixing minor typos\n*   Merging \"version.h\" in \"config.h\"\n*   Adding version test\n\n## v0.13.0\n\n### API Changes\n\n*   Python API: converting many functions to properties\n*   Pre-processor switch FRICTIONQPOTSPRINGBLOCK_USE_XTENSOR_PYTHON to using xtensor-python instead of xtensor\n*   Remove unused class for maintainability\n\n## Internal changes\n\n*   Fixing compiling warnings\n*   Upgrading to Catch2.v3\n*   Remove MSC work-around\n\n## v0.12.0\n\n### API changes\n\n*   [BREAKING CHANGE] The constructor overloads with default `istart = zeros` are removed\n    to enhance maintainability.\n    See [#51](https://github.com/tdegeus/FrictionQPotSpringBlock/pull/51).\n\n*   [BREAKING CHANGE] Allowe the use of `minimise_timeactivity` with chunked storage.\n    See [#53](https://github.com/tdegeus/FrictionQPotSpringBlock/pull/53).\n\n*   Adding function to advance to a fixed force.\n    See [#52](https://github.com/tdegeus/FrictionQPotSpringBlock/pull/52).\n\n## v0.11.0\n\n*   Adding `SystemThermalRandomForcing`: thermal system under external forcing\n    (i.e. constant force, without a 'driving frame').\n\n## v0.10.1\n\n### Internal changes\n\n*   Changing `xt::xtensor` -\u003e `xt::pytensor`.\n    An alias `xt::pytensor == xt::xtensor` is created for compiling without xtensor-python.\n\n## v0.10.0\n\n### Changes\n\n*   [BREAKING CHANGE] Integrating `boundscheck` in API of `minimise`.\n\n## v0.9.0\n\n### Bugfixes \u0026 extensions\n\n*   Fixing ``nopassing`` algorithm for overdamped dynamics.\n*   Increasing the default maximum number of iterations.\n*   Adding `ymax` overload.\n\n### Internal\n\n*   Optimization: precompute `1 / m`.\n\n### Documentation\n\n*   Chuncked example: avoid costly search.\n\n## v0.8.0\n\n### Bugfixes \u0026 extensions\n\n*   Calculating instantaneous temperature.\n*   Temporarily work around xtensor#2510.\n*   Adding SystemThermalRandomForcing.\n\n## v0.7.0\n\n## Bugfixes \u0026 extensions\n\n*   Resolving segmentation fault windows.\n*   Updating deps\n*   [BREAKING CHANGE] Making `advanceElastic` private\n*   Adding `minimise_nopassing` with fully overdamped dynamics\n*   [BREAKING CHANGE] Renaming `y` -\u003e `refChunked`. Adding array interfaces\n*   [BREAKING CHANGE] Cleaning API of separate functions to set parameters\n*   Fixing minor typos.\n*   [Python] Adding missing imports\n\n### Documentation\n\n*   Simplifying example.\n*   Removing matplotlib from test runs.\n*   Simplifying example (historic data `txt` -\u003e `h5`, does not lead to change, this was checked).\n*   Updating badges in readme.\n*   Adding full Python example.\n\n## v0.6.8\n\n*   [Python] Using scikit-build.\n\n## v0.6.7\n\n*   Avoiding setuptools_scm dependency if SETUPTOOLS_SCM_PRETEND_VERSION is defined\n\n## v0.6.6\n\n*   Python: passing `CMAKE_ARGS` environment variable.\n\n## v0.6.5\n\n*   Adding time (#33)\n*   Allowing for extra iterations\n\n## v0.6.4\n\n*   Using simple stop criterion in event driven read (#32)\n\n## v0.6.3\n\n*   Run a series of time-steps until the next plastic event (#31)\n\n## v0.6.2\n\n*   Switching to xtensor-python (no API change).\n\n## v0.6.1\n\n*   Fixing bug in triggering.\n\n## v0.6.0\n\n*   Updating Python API. Minor style updates. (#26)\n*   Fixing bug in event driven code. (#26)\n*   Adding advanceElastic.\n*   Adding debug assertions.\n*   Renaming \"advanceRightElastic\" -\u003e \"advanceEventRightElastic\" (#24)\n\n## v0.5.0\n\n*   Adding function to trigger weakest.\n*   Adding function to time avalanche.\n*   Recomputing forces after quench.\n*   Adding Python test (#21).\n*   Updating readme.\n\n## v0.4.0\n\n*   Switch to QPot/Chunked and prrng. Drawing the energy landscape is now done manually externally, but it allows much easier reproducibility and customisation.\n\n## v0.3.3\n\n*   Wrapping some QPot::RedrawList function for Python API that has a mysterious bug using the reference (#16)\n\n## v0.3.2\n\n*   Reconstruction using new QPot features (#14)\n\n## v0.3.0\n\n*   Adding redraw customization (#12)\n\n## v0.2.0\n\n*   Updating to new QPot\n*   Various minor updates\n*   Using doxygen docs (publishing GH Action)\n*   Recover configuration to make random simulations deterministic: C++ and Python example\n*   Updating appropriate forces at the appropriate instances\n*   Added output \"Load\" example for future checking\n*   Adding Python API\n*   Using setuptools_scm for versioning\n*   Improving CI\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftdegeus%2Ffrictionqpotspringblock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftdegeus%2Ffrictionqpotspringblock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftdegeus%2Ffrictionqpotspringblock/lists"}