CP2K Scanning Probe Microscopy tools.
Project description
CP2K Scanning Probe Microscopy tools
Library and scripts to perform scanning probe microscopy simulations based on a CP2K calculation.
Features include:
- Processing the various output files of CP2K, including the
.wfnfile - Scanning Tunnelling Microscopy and Spectroscopy (STM/STS) analysis
- Fourier-Transformed STS analysis for finite cutouts of periodic systems
- Orbital hybridization analysis for adsorbed systems
- High-resolution STM (HRSTM) simulations
Installation
The package requires an MPI implementation to be available on your system for mpi4py. One option is mpich, which you can install with:
- On Linux: through your package manager (e.g.,
apt install mpichoryum install mpich) - On macOS: through Homebrew (
brew install mpich) - Or via conda, but then it's recommended to install it together with
mpi4py:conda install -c conda-forge mpi4py mpich
Then install the package with pip:
pip install cp2k-spm-tools
Or, for development:
git clone https://github.com/nanotech-empa/cp2k-spm-tools.git
cd cp2k-spm-tools
pip install -e .[dev]
Command Line Tools
The package provides several command-line tools, including:
cp2k-stm-sts-wfn: STM/STS analysis from wavefunction filescp2k-cube-from-wfn: Create cube files from wavefunction filescp2k-bader-bond-order: Bond order analysis based on Bader basins
Use --help with each command to see its options.
Example Usage
When everything is set up correctly, the bash scripts in examples/ folder can be executed without any further input and illustrate the usage of the various scripts. For example example/benzene_stm/run_stm_sts_from_wfn.sh evaluates the STM/STS signatures of isolated benzene at each orbital energy (out/orb/) as well as in an arbitrary energy range (out/stm/). The corresponding CP2K calculation is included in the repository.
NB: In all cases, the underlying DFT calculation has to be performed with the diagonalization algorithm rather than orbital transformation (OT).
Python API Example
Most of the functionality of this library is built on top of the possibility to evaluate the Kohn-Sham orbitals encoded in the .wfn file on an arbitrarily defined grid. This is illustrated by the following script applied for a nanographene adsorbed on a Au(111) slab (total of 1252 atoms and 10512 electrons):
from cp2k_spm_tools.cp2k_grid_orbitals import Cp2kGridOrbitals
### Create the gridding object and load the cp2k data ###
cgo = Cp2kGridOrbitals()
cgo.read_cp2k_input("./cp2k.inp")
cgo.read_xyz("./geom.xyz")
cgo.read_basis_functions("./BASIS_MOLOPT")
cgo.load_restart_wfn_file("./PROJ-RESTART.wfn", n_occ=2, n_virt=2)
### Evaluate the orbitals in the specific region ###
cgo.calc_morbs_in_region(
dr_guess = 0.15, # grid spacing, can change very slightly
x_eval_region = None, # take whole cell in x
y_eval_region = [0.0, cgo.cell_ang[1]/2], # half cell in y
z_eval_region = [19.0, 24.0], # around the molecule in z
)
cgo.write_cube("./homo.cube", orbital_nr=0)
Here's the resulting cube file, illustrating the constrained region of evaluation:
For maintainers:
In order to make a new release of the library and publish to PYPI, run
bumpver update --major/--minor/--patch
This will
- update version numbers, make a corresponding git commit and a git tag;
- push this commit and tag to Github, which triggers the Github Action that makes a new Github Release and publishes the package to PYPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cp2k_spm_tools-1.5.0.tar.gz.
File metadata
- Download URL: cp2k_spm_tools-1.5.0.tar.gz
- Upload date:
- Size: 65.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
beedbc721af8578b1955b112eaeaa10199854587ba3ce7146483ed01b13984cf
|
|
| MD5 |
b678fabb5d29a020c8228c274004ac5b
|
|
| BLAKE2b-256 |
3d0c986434d0964bf988c2d5f266e08ff90ea514f463689a659aed87b2cb80c7
|
File details
Details for the file cp2k_spm_tools-1.5.0-py3-none-any.whl.
File metadata
- Download URL: cp2k_spm_tools-1.5.0-py3-none-any.whl
- Upload date:
- Size: 77.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
29db138dd276e83da5b12b259dd9e3aafe18fd4397f893eb83c0e98339277c48
|
|
| MD5 |
59b0950f575b75cdb9f96bbde0e606c0
|
|
| BLAKE2b-256 |
8101522da58511f033921cce34b687a43feccfe4aa1c71dc8f7930e710d52884
|