{"id":17791899,"url":"https://github.com/twesterhout/spin-ed","last_synced_at":"2025-09-04T09:31:41.038Z","repository":{"id":114170004,"uuid":"303225771","full_name":"twesterhout/spin-ed","owner":"twesterhout","description":"User-friendly exact diagonalization package written in Haskell. Can treat systems of up to 𝒪(42) spins! ","archived":false,"fork":false,"pushed_at":"2023-01-09T14:41:39.000Z","size":2402,"stargazers_count":19,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-01T23:12:49.099Z","etag":null,"topics":["exact-diagonalization","haskell","high-performance","many-body","numerical-methods","quantum"],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/twesterhout.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-10-11T22:42:04.000Z","updated_at":"2025-01-03T01:27:21.000Z","dependencies_parsed_at":null,"dependency_job_id":"512613ae-776f-41d6-8bf5-e906076c2ed5","html_url":"https://github.com/twesterhout/spin-ed","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/twesterhout/spin-ed","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twesterhout%2Fspin-ed","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twesterhout%2Fspin-ed/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twesterhout%2Fspin-ed/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twesterhout%2Fspin-ed/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/twesterhout","download_url":"https://codeload.github.com/twesterhout/spin-ed/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twesterhout%2Fspin-ed/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273582748,"owners_count":25131644,"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","status":"online","status_checked_at":"2025-09-04T02:00:08.968Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["exact-diagonalization","haskell","high-performance","many-body","numerical-methods","quantum"],"created_at":"2024-10-27T10:56:28.173Z","updated_at":"2025-09-04T09:31:40.178Z","avatar_url":"https://github.com/twesterhout.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SpinED\n\n[![GitHub CI](https://github.com/twesterhout/spin-ed/workflows/CI/badge.svg)](https://github.com/twesterhout/spin-ed/actions)\n[![GitHub Release](https://img.shields.io/github/v/release/twesterhout/spin-ed?include_prereleases)](https://github.com/twesterhout/spin-ed/releases)\n[![BSD-3-Clause license](https://img.shields.io/badge/license-BSD--3--Clause-blue.svg)](LICENSE)\n\nUser-friendly exact diagonalization package for quantum many-body systems.\n\n\n## :wrench: Installing\n\nWe provide pre-built static executables for Linux. Go to\n[Releases](https://github.com/twesterhout/spin-ed/releases) page and download the\nexecutable to your location of choice. That's it! :partying_face:\n\n\u003e :information_source: **Note:** executables are currently tagged by git\n\u003e commits from which they were built. It is suggested that after downloading\n\u003e the application you create a symbolic link to it:\n\u003e\n\u003e ~~~~~~~sh\n\u003e ln --symbolic SpinED SpinED-8b0138b # the commit hash may differ in your case\n\u003e ~~~~~~~\n\n\n\n## 📝 Usage\n\nUsing `SpinED` is quite simple. Just feed it your input [yaml\nfile](https://en.wikipedia.org/wiki/YAML). For example:\n\n```sh\n./SpinED my_system.yaml\n```\n\nwhere `my_system.yaml` looks like this:\n\n```yaml\nbasis:\n  number_spins: 4\n  symmetries: []\nhamiltonian:\n  name: \"Heisenberg Hamiltonian\"\n  terms:\n    - matrix: [[1,  0,  0,  0],\n               [0, -1,  2,  0],\n               [0,  2, -1,  0],\n               [0,  0,  0,  1]]\n      sites: [[0, 1], [1, 2], [2, 3], [3, 0]]\nobservables: []\n```\n\nThis will create a file `exact_diagonalization_result.h5` which will contain\nthe ground state of the Hamiltonian.\n\n```console\n$ h5dump -H exact_diagonalization_result.h5\nHDF5 \"exact_diagonalization_result.h5\" {\nGROUP \"/\" {\n   GROUP \"basis\" {\n      DATASET \"representatives\" {\n         DATATYPE  H5T_STD_U64LE\n         DATASPACE  SIMPLE { ( 16 ) / ( 16 ) }\n      }\n   }\n   GROUP \"hamiltonian\" {\n      DATASET \"eigenvalues\" {\n         DATATYPE  H5T_IEEE_F64LE\n         DATASPACE  SIMPLE { ( 1 ) / ( 1 ) }\n      }\n      DATASET \"eigenvectors\" {\n         DATATYPE  H5T_IEEE_F64LE\n         DATASPACE  SIMPLE { ( 16, 1 ) / ( 16, 1 ) }\n      }\n      DATASET \"residuals\" {\n         DATATYPE  H5T_IEEE_F64LE\n         DATASPACE  SIMPLE { ( 1 ) / ( 1 ) }\n      }\n   }\n}\n}\n```\n\nAnd we can check that it computed the correct energy:\n```console\n$ h5dump -d /hamiltonian/eigenvalues exact_diagonalization_result.h5\nHDF5 \"exact_diagonalization_result.h5\" {\nDATASET \"/hamiltonian/eigenvalues\" {\n   DATATYPE  H5T_IEEE_F64LE\n   DATASPACE  SIMPLE { ( 1 ) / ( 1 ) }\n   DATA {\n   (0): -8\n   }\n}\n}\n```\n\nThis was a very simple example! Have a look at [`template.yaml`](./template.yaml)\nwhich describes all supported fields. [`example/`](./example/) folder also\ncontains various usage examples.\n\n\n## Contributing and support\n\nIf you use this package for your research and have questions or suggestions,\nplease, don't hesitate to contact me on Github or\n[email](https://www.ru.nl/tcm/about-us/phd-students/westerhout/).\n\nAlso, if the fact that most code here is written in Haskell doesn't scare you,\nfeel free to create a pull request implementing new features or fixing bugs!\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwesterhout%2Fspin-ed","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftwesterhout%2Fspin-ed","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwesterhout%2Fspin-ed/lists"}