pyruqt 0.9.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pyruqt-0.9.0/.github/workflows/publish.yml +94 -0
- pyruqt-0.9.0/.gitmodules +3 -0
- pyruqt-0.9.0/CHANGELOG.md +30 -0
- pyruqt-0.9.0/KEYWORD_GUIDE.md +110 -0
- pyruqt-0.9.0/LICENSE +674 -0
- pyruqt-0.9.0/PKG-INFO +26 -0
- pyruqt-0.9.0/README.md +87 -0
- pyruqt-0.9.0/SC_NEGF/Readme +3 -0
- pyruqt-0.9.0/SC_NEGF/negf_scf.py +882 -0
- pyruqt-0.9.0/WBL_RUQT/README.md +39 -0
- pyruqt-0.9.0/WBL_RUQT/RUQT.f90 +290 -0
- pyruqt-0.9.0/WBL_RUQT/RUQT_IntRoutines.f90 +1306 -0
- pyruqt-0.9.0/WBL_RUQT/TypeMod.f90 +40 -0
- pyruqt-0.9.0/examples/Old_Examples/exmol_example/atoms.rc +117 -0
- pyruqt-0.9.0/examples/Old_Examples/exmol_example/ben/.RUNTMP +0 -0
- pyruqt-0.9.0/examples/Old_Examples/exmol_example/ben/MolEl.dat +112473 -0
- pyruqt-0.9.0/examples/Old_Examples/exmol_example/ben/ben.SymInfo +215 -0
- pyruqt-0.9.0/examples/Old_Examples/exmol_example/ben.err +0 -0
- pyruqt-0.9.0/examples/Old_Examples/exmol_example/ben.inp +38 -0
- pyruqt-0.9.0/examples/Old_Examples/exmol_example/ben.out +6944 -0
- pyruqt-0.9.0/examples/Old_Examples/exmol_example/ben.rasscf.h5 +0 -0
- pyruqt-0.9.0/examples/Old_Examples/exmol_example/ben.sh +19 -0
- pyruqt-0.9.0/examples/Old_Examples/exmol_example/ben_birad.xyz +20 -0
- pyruqt-0.9.0/examples/Old_Examples/exmol_example/elec_example/au_elec/.RUNTMP +0 -0
- pyruqt-0.9.0/examples/Old_Examples/exmol_example/elec_example/au_elec/MolEl.dat +19411 -0
- pyruqt-0.9.0/examples/Old_Examples/exmol_example/elec_example/au_elec/au_elec.SymInfo +91 -0
- pyruqt-0.9.0/examples/Old_Examples/exmol_example/elec_example/au_elec.err +0 -0
- pyruqt-0.9.0/examples/Old_Examples/exmol_example/elec_example/au_elec.inp +35 -0
- pyruqt-0.9.0/examples/Old_Examples/exmol_example/elec_example/au_elec.out +2138 -0
- pyruqt-0.9.0/examples/Old_Examples/exmol_example/elec_example/au_elec.rasscf.molden +8220 -0
- pyruqt-0.9.0/examples/Old_Examples/exmol_example/elec_example/au_elec.scf.molden +8220 -0
- pyruqt-0.9.0/examples/Old_Examples/exmol_example/elec_example/au_elec.sh +18 -0
- pyruqt-0.9.0/examples/Old_Examples/exmol_example/elec_example/au_elec.status +1 -0
- pyruqt-0.9.0/examples/Old_Examples/exmol_example/elec_example/au_elec.xyz +6 -0
- pyruqt-0.9.0/examples/Old_Examples/exmol_example/test +105380 -0
- pyruqt-0.9.0/examples/Old_Examples/sie_negf_molcas/ref_data/sie_1.con +41 -0
- pyruqt-0.9.0/examples/Old_Examples/sie_negf_molcas/ref_data/sie_1.iv +41 -0
- pyruqt-0.9.0/examples/Old_Examples/sie_negf_molcas/ref_data/sie_1.out +22 -0
- pyruqt-0.9.0/examples/Old_Examples/sie_negf_molcas/ref_data/sie_1.trans +4002 -0
- pyruqt-0.9.0/examples/Old_Examples/sie_negf_molcas/test_run.py +8 -0
- pyruqt-0.9.0/examples/Old_Examples/sie_negf_pyscf/li_wire.xyz +16 -0
- pyruqt-0.9.0/examples/Old_Examples/sie_negf_pyscf/pyscf_mcpdft_example.py +22 -0
- pyruqt-0.9.0/examples/Old_Examples/wbl_negf/fort_ruqt +30 -0
- pyruqt-0.9.0/examples/Old_Examples/wbl_negf/fort_ruqt.negf_dat +401 -0
- pyruqt-0.9.0/examples/Old_Examples/wbl_negf/test_run.py +7 -0
- pyruqt-0.9.0/examples/Old_Examples/wbl_negf/wbl_example.out +841 -0
- pyruqt-0.9.0/examples/Old_Examples/wbl_negf/wbl_example_trans.png +0 -0
- pyruqt-0.9.0/examples/h6.xyz +8 -0
- pyruqt-0.9.0/examples/run_pyRUQT.py +61 -0
- pyruqt-0.9.0/meson.build +68 -0
- pyruqt-0.9.0/pyproject.toml +50 -0
- pyruqt-0.9.0/pyruqt/__init__.py +0 -0
- pyruqt-0.9.0/pyruqt/pyruqt.py +690 -0
- pyruqt-0.9.0/pyruqt/ruqt.py +1040 -0
- pyruqt-0.9.0/tools/esc_molcas4.py +142 -0
- pyruqt-0.9.0/tools/old_subroutines/Build_B0_CISD.f90 +45 -0
- pyruqt-0.9.0/tools/old_subroutines/Build_G_SD_Invert.f90 +436 -0
- pyruqt-0.9.0/tools/old_subroutines/InterfaceMod.f90 +208 -0
- pyruqt-0.9.0/tools/old_subroutines/RUQT_backup.f90 +1201 -0
- pyruqt-0.9.0/tools/old_subroutines/old_ruqt.py +406 -0
- pyruqt-0.9.0/tools/xyz_sorter.py +24 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
name: Build and Publish pyruqt
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
# Run tests on every push or pull request to the main branch
|
|
5
|
+
push:
|
|
6
|
+
branches: [ main ]
|
|
7
|
+
pull_request:
|
|
8
|
+
branches: [ main ]
|
|
9
|
+
# Automatically publish to PyPI when you create a GitHub Release
|
|
10
|
+
release:
|
|
11
|
+
types: [published]
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
build_wheels:
|
|
15
|
+
name: Build wheels on ${{ matrix.os }}
|
|
16
|
+
runs-on: ${{ matrix.os }}
|
|
17
|
+
strategy:
|
|
18
|
+
matrix:
|
|
19
|
+
# Starting with Linux. (macOS and Windows require separate Fortran/MKL compiler setups)
|
|
20
|
+
os: [ubuntu-latest]
|
|
21
|
+
|
|
22
|
+
steps:
|
|
23
|
+
- uses: actions/checkout@v4
|
|
24
|
+
|
|
25
|
+
- name: Build wheels
|
|
26
|
+
uses: pypa/cibuildwheel@v2.17.0
|
|
27
|
+
env:
|
|
28
|
+
# Use manylinux_2_28 (AlmaLinux 8 based) for modern compiler support
|
|
29
|
+
CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28
|
|
30
|
+
|
|
31
|
+
# Install gfortran inside the manylinux docker container before building
|
|
32
|
+
CIBW_BEFORE_ALL_LINUX: >
|
|
33
|
+
dnf install -y gcc-gfortran epel-release pkgconfig &&
|
|
34
|
+
dnf install -y openblas-devel &&
|
|
35
|
+
dnf install -y lapack-devel
|
|
36
|
+
|
|
37
|
+
# Skip PyPy, 32-bit architecture, and older Python versions (<3.9)
|
|
38
|
+
CIBW_SKIP: "cp36-* cp37-* cp38-* pp* *-musllinux* *i686"
|
|
39
|
+
|
|
40
|
+
# Optional: Test the wheel after it is built to ensure it works
|
|
41
|
+
CIBW_TEST_REQUIRES: pytest
|
|
42
|
+
CIBW_TEST_COMMAND: "pytest {project}/tests || true"
|
|
43
|
+
|
|
44
|
+
- name: Upload Wheels as Artifacts
|
|
45
|
+
uses: actions/upload-artifact@v4
|
|
46
|
+
with:
|
|
47
|
+
name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }}
|
|
48
|
+
path: ./wheelhouse/*.whl
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
build_sdist:
|
|
52
|
+
name: Build source distribution
|
|
53
|
+
runs-on: ubuntu-latest
|
|
54
|
+
steps:
|
|
55
|
+
- uses: actions/checkout@v4
|
|
56
|
+
|
|
57
|
+
# Fixes the 'Dependency lapack not found' error during sdist build
|
|
58
|
+
- name: Install system dependencies for sdist
|
|
59
|
+
run: |
|
|
60
|
+
sudo apt-get update
|
|
61
|
+
sudo apt-get install -y gfortran libopenblas-dev liblapack-dev pkg-config
|
|
62
|
+
|
|
63
|
+
- name: Build sdist
|
|
64
|
+
run: pipx run build --sdist
|
|
65
|
+
|
|
66
|
+
- name: Upload sdist as Artifact
|
|
67
|
+
uses: actions/upload-artifact@v4
|
|
68
|
+
with:
|
|
69
|
+
name: cibw-sdist
|
|
70
|
+
path: dist/*.tar.gz
|
|
71
|
+
|
|
72
|
+
publish-to-pypi:
|
|
73
|
+
name: Publish to PyPI
|
|
74
|
+
# Only run this job if the workflow was triggered by a GitHub Release
|
|
75
|
+
if: github.event_name == 'release' && github.event.action == 'published'
|
|
76
|
+
needs: [build_wheels, build_sdist]
|
|
77
|
+
runs-on: ubuntu-latest
|
|
78
|
+
environment:
|
|
79
|
+
name: pypi
|
|
80
|
+
url: https://pypi.org/p/pyruqt
|
|
81
|
+
permissions:
|
|
82
|
+
id-token: write # Required for Trusted Publishing
|
|
83
|
+
contents: read
|
|
84
|
+
|
|
85
|
+
steps:
|
|
86
|
+
- name: Download all artifacts
|
|
87
|
+
uses: actions/download-artifact@v4
|
|
88
|
+
with:
|
|
89
|
+
pattern: cibw-*
|
|
90
|
+
path: dist
|
|
91
|
+
merge-multiple: true
|
|
92
|
+
|
|
93
|
+
- name: Publish package to PyPI
|
|
94
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
pyruqt-0.9.0/.gitmodules
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
List of all updates to pyRUQT
|
|
2
|
+
(8/2026): Main branch updated to debugged PyPI release version with integrated WBL libraries and major sie_negf fixes.
|
|
3
|
+
Version 0.9 (beta) released on Github and PyPI.
|
|
4
|
+
|
|
5
|
+
(7/2026): WBL calculations are fully debugged and code restructured for PyPi distribution. Will replace the main branch with this version soon.
|
|
6
|
+
|
|
7
|
+
(4/2026): Initial 0.9 PyPi package released on TestPyPI. WBL calculations are still being debugged for this release and have been disabled. Use main branch and compile RUQT separately to use WBL calculations.
|
|
8
|
+
|
|
9
|
+
(1/2026): Preparing package for upload to PyPi and version 0.9 release.
|
|
10
|
+
|
|
11
|
+
(12/23/2025): Improved PBC calculator for NEGF-DFT calculations. New run_pyRUQT.py example script which can be used to access all pyRUQT calculations. All other examples are outdated and moved to Old_Examples. We recommend using the run_pyRUQT.py for all pyRUQT calculations. Check out our youtube channel for tutorials on how to use pyRUQT: https://www.youtube.com/@hoyresearchgroup
|
|
12
|
+
|
|
13
|
+
(12/4/2025): Added support for changing DF auxbasis, charge, and spin for pyscf calculations.
|
|
14
|
+
|
|
15
|
+
(6/29/2025): Added support for excited state calculations using MC-PDFT.
|
|
16
|
+
|
|
17
|
+
(5/21/2025): Updated PySCF calculator to allow for far more SCF/MC-PDFT calculation options to be set (particularly SCF and active space optimization options) and added support for restarts and orbital visualization (creates a molden file). Modified all supercell calculations to use the "num_elec_atoms" keyword to set the number of atoms in the electrode (the program now calculates the # of orbitals based on your chosen exmol_prog). Added new es_calc module for running separate electronic structure calculations with PySCF (MOLCAS not supported) which generates both chk files and MolEl.dat files for restarts and separate transport calculations respectively.
|
|
18
|
+
|
|
19
|
+
(4/28/2025): New prototype self-consistent NEGF code based on PySCF added in the new SC_NEGF folder. Once debugging is complete it will be merged with main codebase. Feedback is appreciated!
|
|
20
|
+
|
|
21
|
+
(4/7/2025): Added ability to run MC-PDFT calculations using PySCF. Created new pyscf_settings keyword (see pyscf_mcpdft_example.py script in examples folder for details on how to use). Currently requires installing pyscf-forge in addition to PySCF: https://github.com/pyscf/pyscf-forge
|
|
22
|
+
|
|
23
|
+
(7/1/2024): Added ability to run PySCF calculations with periodic boundary conditions through pyRUQT and added the ability to use PySCF (without PBC) as a calculator for the wbl_negf module, a new KEYWORD file with detailed explanations of all sie_negf keywords, this changelog file, and minor bugfixes/updates to wbl_negf.
|
|
24
|
+
|
|
25
|
+
(4/30/2024): Added tools folder with additional calculators for pyRUQT
|
|
26
|
+
|
|
27
|
+
(8/25/2023): Support added for supercell calculations which removes the need for a separate electrode calculation when using sie_negf class. Activate using elec_prog="supercell" and include the number of orbitals in each electrode in the supercell via the elec_size=[X1,X2] keyword where X1 and X2 is the number of orbitals in left and right electrodes respectively.
|
|
28
|
+
|
|
29
|
+
(5/8/2023): General bug fixs/improvements. New Current Calculator and support for non-identical electrodes
|
|
30
|
+
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
##Parameters for semi-infinite electrode calculation using ASE##
|
|
2
|
+
*Additional PySCF and wbl_negf keywords To be added in future*
|
|
3
|
+
Format= Keyword : {Default Value,Type} : Explaination of Keyword : Options/Context
|
|
4
|
+
|
|
5
|
+
***Keywords That Generaly Need Be Defined Each Calculation***
|
|
6
|
+
|
|
7
|
+
output : {pyruqt_results,str} : Sets the filename to be used for all calculation outputfiles : Define uniquely for each new calculation to avoid overwriting data
|
|
8
|
+
|
|
9
|
+
exmol_dir : {None,str} : Defines location of extended molecular region geometry xyz file for pySCF or MolEl.dat for MOLCAS : Always needed
|
|
10
|
+
|
|
11
|
+
elec_dir : {None,str} : Defines location of the left electrode xyz file or MolEl.dat : If using a supercell, can still be given and used to calculate the Fermi level
|
|
12
|
+
|
|
13
|
+
elec2_dir : {None,str} : Defines location of right electrode xyz/MolEl.dat if not same as left electrode : Can be omitted if electrodes are superimposable mirror images of each other
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
***Calculation Dependent or Optional Keywords***
|
|
17
|
+
|
|
18
|
+
**Keywords that define the electronic structure programs to be used**
|
|
19
|
+
|
|
20
|
+
exmol_prog : {"pyscf",str} : Defines what electronic structure program is used for the extended molecular region : Options are currently "molcas" or "pyscf"
|
|
21
|
+
|
|
22
|
+
elec_prog : {"supercell",str} : Same as exmol_prog but for the left and right electrodes : Default option of "supercell" activates the supercell method (no separate electrode calc required)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
**pyRUQT transport keywords**
|
|
26
|
+
|
|
27
|
+
*Transport Keywords
|
|
28
|
+
|
|
29
|
+
min_trans_energy : {-2.0,float} : Lowest transmission energy to be calculated in eV :
|
|
30
|
+
|
|
31
|
+
max_trans_energy : {2.0,float} : Highest transmission energy to be calculated in eV :
|
|
32
|
+
|
|
33
|
+
delta_energy : {0.01,float} : Energy difference between transmission points to be calculated in eV :
|
|
34
|
+
|
|
35
|
+
min_bias : {-2.0,float} : Lowest voltage bias to be calculated in Volts : Not needed for transmission calculations
|
|
36
|
+
|
|
37
|
+
max_bias : {2.0,float} : Highest bias voltage to be calculated in Volts : Not needed for transmission calculations
|
|
38
|
+
|
|
39
|
+
delta_bias : {0.1,float} : Difference between bias voltage points in Volts : Not needed for transmission calculations
|
|
40
|
+
|
|
41
|
+
spin_pol : {False,logical} : Sets the current to 2*value when using data from 1-electron spin orbitals : Use if input data is from single electron orbitals vs double electron (standard for MOLCAS)
|
|
42
|
+
|
|
43
|
+
dos_calc : {False,bool} : Generates the density of states using ASE :
|
|
44
|
+
|
|
45
|
+
fd_change : {0.001,float} : Finite difference to be used when calculating the difference conductance :
|
|
46
|
+
|
|
47
|
+
ase_current : {False,bool} : Use ASE's inbuilt current calculator instead of pyRUQT : Recommended to keep False as pyRUQT routine uses an improved numerical integration technique over ASE
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
*Alignment/Electrode Keywords
|
|
51
|
+
|
|
52
|
+
full_align : {True,bool} : Uses improved wieghed average alignment routine in pyRUQT over ASE's default alignment (align_elec) : Recommended to always use unless using ASE's align_elec instead
|
|
53
|
+
|
|
54
|
+
align_elec : {0,int} : Default ASE alignment routine to align electrode/extended molecular regions based a selected element : Not recommended, replaced by "full_align"
|
|
55
|
+
|
|
56
|
+
coupling_calc : {None,str} : Improve coupling interactions defining coupling elements in off-diagonal paritioned Green's functions set to zero in ASE : Use "Fock_EX" value to activate
|
|
57
|
+
|
|
58
|
+
coupled : {"molecule",str} : Defines how much of the extended molecular region should receive the additional Fock_EX coupling with electrode : Options are "molecule" or "extended_molecule"
|
|
59
|
+
|
|
60
|
+
n_elec_units : {2,int} : Number of repeating electrode units in the electrode regions : Only default of 2 currently supported
|
|
61
|
+
|
|
62
|
+
fixed_fermi : {0.0, int} : Used to define the fermi level if an electro_geo is not given
|
|
63
|
+
|
|
64
|
+
*Supercell Calculations
|
|
65
|
+
|
|
66
|
+
num_elec_atoms : {0,int} : Number of atoms to be to be placed in the electrode regions for a supercell calculation. Be sure to double-check the program's calculated number of electrode orbitals in .out file when using this option.: Required to be non-zero if elec_prog="supercell"
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
**Excited States"**
|
|
70
|
+
|
|
71
|
+
state_num : {1,int} : Select number of CI states to be used for transport calculations : If more than 1 invokes state averaging for PySCF calculations
|
|
72
|
+
trans_state : {1,int} : Select excited CI state to be used for transport calculations : If state_num is greater than 1 this determines the state weighting
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
**PySCF specific keywords, Use if either exmol_prog or elec_prog equal "pyscf"**
|
|
76
|
+
|
|
77
|
+
exmol_geo : {None,str} : Define the full xyz file name for extended molecular region : Be sure to include any extensions in name (ex. exmol_geo="geo_file.xyz")
|
|
78
|
+
|
|
79
|
+
elec_geo : {None,str} : Define the full xyz file name for left electrode : If elec_prog="supercell" and exmol_prog="pyscf" can be given to calculate fermi level (otherwise a fixed_fermi value should be defined)
|
|
80
|
+
|
|
81
|
+
elec2_geo : {None,str} : Define the full xyz file name for right electrode (if not same as left electrode) : Can be omitted if electrodes are superimposable mirror images of each other
|
|
82
|
+
|
|
83
|
+
dft_functional : {"pbe",str} : Defines the DFT functional to be used by PySCF : See pySCF manual for a full list of options
|
|
84
|
+
|
|
85
|
+
basis_set : {None,str} : Defines basis set to be used by PySCF : See PySCF manual for full list of keywords
|
|
86
|
+
|
|
87
|
+
ecp : {None,str} : If your basis set has an ECP (or auxbasis for PBC PySCF) it must be defined separately using this keyword : Can be left empty for non-ECP Gaussian basis like 6-31G
|
|
88
|
+
|
|
89
|
+
aux_basis : {"df_default",str} : Density fitting basis set to use (default to PySCF default)
|
|
90
|
+
|
|
91
|
+
pyscf_pbc : {False,logical} : Uses periodic basis set for pySCF calculations instead of Gaussian orbitals : Requires "lattice_v" to be defined with a list of the 3 lattice vectors, [a1,b2,c3]
|
|
92
|
+
|
|
93
|
+
conv_tol : {1E-7,float} : Defines the SCF convergence of PySCF in Hartees :
|
|
94
|
+
|
|
95
|
+
max_iter : {100,int} : Max number of PySCF iterations allowed before SCF termination :
|
|
96
|
+
|
|
97
|
+
charge : {0,int} : Charge of transport system
|
|
98
|
+
|
|
99
|
+
spin : {0,int} : Total spin value for transport system
|
|
100
|
+
|
|
101
|
+
*PySCF Keywords when using Periodic Boundary Conditions (Along X-Axis)
|
|
102
|
+
|
|
103
|
+
pyscf_pbc : {False,logical} : Use periodic basis set for pySCF calculations instead of Gaussian orbitals : Requires "lattice_v" to be defined with a list of the 3 lattice vectors: [a1,a2,a3]
|
|
104
|
+
|
|
105
|
+
lattice_v : {None,float} : List of the 3 lattice vectors in 1-D list format of [a1,a2,a3] : Required to be Defined for PBC pySCF
|
|
106
|
+
|
|
107
|
+
meshum : {10,float} : # of mesh points used by pySCF per lattice vector : Highly recommended to adjust from default
|
|
108
|
+
verbosity : {4,int} : Degree of pySCF output : Recommended to use 2 for no output and 4 for useable output (must pipe script output to file via command line)
|
|
109
|
+
|
|
110
|
+
|