{"id":22674927,"url":"https://github.com/dineshpinto/pythermal","last_synced_at":"2025-07-04T13:04:22.704Z","repository":{"id":124331321,"uuid":"44757886","full_name":"dineshpinto/pythermal","owner":"dineshpinto","description":"High performance simulation of the thermal equilibrium of hard-core bosons on a 2D crystal lattice","archived":false,"fork":false,"pushed_at":"2016-07-08T19:25:23.000Z","size":553,"stargazers_count":5,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-12T13:49:43.816Z","etag":null,"topics":["high-performance","python","quantum-mechanics","simulation"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dineshpinto.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2015-10-22T16:20:17.000Z","updated_at":"2023-06-03T01:08:00.000Z","dependencies_parsed_at":"2023-04-29T08:31:18.921Z","dependency_job_id":null,"html_url":"https://github.com/dineshpinto/pythermal","commit_stats":{"total_commits":150,"total_committers":4,"mean_commits":37.5,"dds":0.6133333333333333,"last_synced_commit":"acf1422e97af191236cdd5cce269e5e7988333bd"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/dineshpinto/pythermal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dineshpinto%2Fpythermal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dineshpinto%2Fpythermal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dineshpinto%2Fpythermal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dineshpinto%2Fpythermal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dineshpinto","download_url":"https://codeload.github.com/dineshpinto/pythermal/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dineshpinto%2Fpythermal/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263548434,"owners_count":23478760,"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":["high-performance","python","quantum-mechanics","simulation"],"created_at":"2024-12-09T17:19:26.760Z","updated_at":"2025-07-04T13:04:22.673Z","avatar_url":"https://github.com/dineshpinto.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"PyThermal - Thermal equilibrium of hard-core bosons on a 2D crystal lattice\n---------------------------------------------------------------------------\nPyThermal v2.2.0\n\n\n**Thermalization and Quantum Entanglement Project Group, St. Stephen's Centre for Theoretical Physics**\n\n*Project Mentor - Dr. A. Gupta*   \n*Project Students - A. Kumar, D. Pinto and M. Ghosh*\n\n## Current Status\nPyThermal has been branched. The [cython](https://github.com/dkpinto/PyThermal/tree/cython) aims to significantly improve performance. Currently in beta.\n\n[Open issues](https://github.com/dkpinto/PyThermal/issues) has further details.\n\n\n## Programmers Notes \n\n*Documentation by D. Pinto*\n\nThe code is centered around the main functions (main_time() \u0026 main_states()). From which the entire program can be controlled. It derives data from a class which is used to store (and process) initial values. \n\nThe source code consists of:\n\n1. main.py - Overall control of program, program execution begins and ends here\n2. routines.py - Set of 19 functions for simulating the hard-core bosons on a 2D lattice\n3. output.py - Set of 8 functions to control Input/Output for files (csv) and images (png)\n4. about.py - Set of 4 functions to check hardware, dependencies and test OpenBLAS, NumPy and SciPy\n5. gui.py (Alpha) - Set of 3 functions forming a graphical interface for PyThermal\n\nThis code requires the following modules:\n\n1. NumPy \u0026 SciPy (Recommended build against Fortran OpenBLAS libraries for parallel processing)\n2. Matplotlib \n3. Multiprocessing\n4. Tqdm\n5. Tkinter(Py2) or tkinter(Py3) (for graphical interface)\n\nExecute without graphical interface: `python3 main.py`\n\nExecute with graphical interface: `python3 gui.py`\n\nTo manually control the threads used by OpenBLAS, call OpenMP when running the program:\n\n        OMP_NUM_THREADS=16 python3 main.py \n\nor  \n\n        OMP_NUM_THREADS=16 python3 gui.py \n        \n\n**Note:** the code was designed on Python 2.7 and will not work with versions older than Python 2.6. Care has been taken to make it fully compatible with Python 3.x (no modifications necessary). [PEP8](https://www.python.org/dev/peps/pep-0008/) styling guidelines have been strictly followed throughout the code.  \n\n\n## Previous build(s)\n\nAll further changelogs are shifted to [commit logs](https://github.com/dkpinto/pythermal/commits/master).\n\n### Changelog (21/1/2015)\n1. Function eigenstates() rewritten to account for missing lattice sites, site deletion controlled by [lat_del_pos]\n2. Function nos() deprecated, nos replaced with len(c) in eigenstates()\n3. Changed Hamiltonian, using if conditions to place 1's(on numpy.zeros matrix)\n\n### Changelog (15/2/2015)\n\n4. Parallel processing of hamiltonian() governed by distribution function distribute()\n5. Parallel processing carried out using Process function from multiprocessing library\n6. multiprocessing.queue to store output of each process and clear(optional, improves stability) it afterwards\n\n### Changelog (1/3/2015)\n\n7. Replaced math.fabs() with abs()\n8. Added elif and else statements\n\n### Changelog (16/4/2015)\n\n9. la.eig replaced with la.eigh to exploit symmetry of Hamiltonian matrix\n10. Original (la.eig)eigenvalvec() deprecated, replaced with (la.eigh)eigenvalvec()\n\n### Changelog (23/15/2015)\n\n11. Separate timers for hamiltonian() and eigenvalvec()\n12. Sizes of all arrays printed\n13. Output printed to file(\"LOG.txt\") using tabulate\n\n### Changelog (26/6/2015)\n\n14. OpenBLAS(/opt/OpenBLAS) linkage of Numpy(and consequently Scipy) in virtualenv \"pyenv\" [for SSCTP workstation]\n15. Program down-dated to work with Python 2.x\n16. Functions ncr(), sum_ncr(), relabel() and denmatrix() added\n17. la.eigh deprecated, la.eig reinstated to generate complex eigenvectors\n18. Hamiltonian np.zeros switched to np.float32 data type\n19. else condition(in hamiltonian_2d) now with continue statements\n\n### Changelog (6/7/2015)\n\n20. Direct call to hamiltonian_2d deprecated\n21. Output made more verbose\n22. Function ncr() deprecated\n\n### Changelog (19/8/2015)\n\n23. Parallel processing of Von-Neumann entropy calculation and time-evolution (using OpenBLAS linkage with OpenMP for multiple threads sidesteps Python GIL)\n24. Trace of density matrix B = 1.95 (almost constant, only observed under 1D time evolution), instead of 1.00\n\n### Changelog (13/9/2015)\n\n25. Recursion time temporary fix using inverse of |least eigenvalue|\n26. recursion_time(), gcd(), lcm(), lcm_call() added\n\n### Changelog (1/10/2015)\n\n27. Complete program structure redesign\n28. class System created to store variables(defined in documentation)\n29. Extensive documentation added \n\n### Changelog (15/12/2015)\n\n30. Error checking for trace of density matrix (Permitted error = 1.0e-4) \n31. Write output to disk (.csv) during program run\n32. Large eigenvalue problem fixed (within Main.py)\n\n### Changelog (16/12/2015)\n\n33. tqdm reinstated for measuring progress of time-evolution and entropy [loop counter tqdm.tqdm]\n34. Error checking for trace of density matrix made non-fatal [program execution uninterrupted]\n35. Verbose output to disk\n\n### Changelog (16-12-2015) \n\n36. **eigenstates()** function shifted to SubRoutine1\n37. Recursion time calculation added *[Beta]*\n38. Full forward compatibility with both Python 3\n39. Error checking now outputs to **stderr**\n\n### Changelog (30-12-2015)\n\n40. Lattice site deletion automated\n41. Error checking for particles in sub lattice A\n42. Von Neumann entropy output returned as 'real'\n43. Function **write_file()** for saving to disk\n44. Writing output made more verbose\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdineshpinto%2Fpythermal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdineshpinto%2Fpythermal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdineshpinto%2Fpythermal/lists"}