5
$\begingroup$

I want to visualise MPSH (molecular projected self-consistent Hamiltonian) orbitals using SISL package of siesta, is there any manual or guide for it.

I have searched in internet but didn't get any proper information about it.

Thank you

$\endgroup$
1
  • 3
    $\begingroup$ All of your questions that have gotten answers are still left without any check-marks? Would you mind taking a look at all your questions and mark the answers that answers your questions as accepted answer? This is the way this community is driven. $\endgroup$
    – nickpapior
    Mar 10, 2023 at 11:56

1 Answer 1

4
$\begingroup$

Calculating the MPSH in sisl is quite easy.
First recognize that one can calculate the eigenstates of the Hamiltonian as:

eigenstate = H.eigenstate(k=[0, 0, 0]) # at Gamma-point

An MPSH is nothing but the eigenstate of the sub-system of atoms that comprise the molecule. In sisl we can extract a subset like this:

Hsub = H.sub(range(10, 20)) # python is 0-based indexing

which will take out 10 atoms, starting at atom 11 (starting from index 1) up to and including atom 20.

Then subsequently you only need to plot the wavefunction. Please note that this will only work if the geometry contained in the Hamiltonian contains the radial grid information for all orbitals. Generally sisl will be able to read the information if you haven't deleted files.

The complete example is something like this:

import sisl
# read in the hamiltonian and basis set information from the files in the
# output directory, RUN.fdf should be your base fdf input file.
H = sisl.get_sile("RUN.fdf").read_hamiltonian()
# reduce the Hamiltonian to a subset of the atoms/orbitals
Hmolecule = H.sub([atomic indices for the MPSH])
# say H.sub(range(20, 50)) will take the atoms 21-50 as a molecule
# calculate the eigenstate at the Gamma-point
es = Hmolecule.eigenstate()
# initialize the grid we want to plot on
grid = sisl.Grid(0.075, sc=H.sc)
# reduce the eigenstate to only 1 value, it makes little sense to plot multiple eigenstates in one go
es.sub(2).wavefunction(grid)
grid.write("MPHS_3.cube")

This tutorial might be helpful: https://zerothi.github.io/sisl/tutorials/tutorial_es_1.html

Please note that sisl is not restricted to Hamiltonians from Siesta, it can also process user defined TB models, wannier90 Hamiltonians, and hopefully soon OpenMX Hamiltonians.

$\endgroup$
0

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .