Carbon Chain (Part 1)

This example demonstrates the calculations of density of states (DOS) and transmission values for a two-probe carbon chain.

Import Necessary Libraries

import matplotlib.pyplot as plt
import numpy as np
import junpy as jp
from junpy.factory import nanodcal
%config InlineBackend.figure_formats = ['svg']
%config InlineBackend.rc = {'font.size': 12}

Load Device

We use the nanodcal.load_nanodcal_device function to load the structures and Hamiltonians from the results of Nanodcal.

filename = (
    'jpdataset/nanodcal/twoprobe_carbon_chain/'
    'LDA_SP_dC-3.0-ang/sys_6C-vac5ang-6C/v0.00/NanodcalStructObject.mat')
device = nanodcal.load_nanodcal_device(filename)

Calculate Density of States

The jp.DensityOfStates class is used to contruct a DOS calculation. We set the device parameter to input the loaded nanodcal object. energies specifies the energies points to be computed. etaSigma and etaGF set the infinitesimal imaginay number for the electrode self-energy and central Green’s function, respectively. Next, we use jp.run to start the calculation. Users can set the value of savefile to save the results, which can be loaded via the jp.load function.

calcr_dos = jp.DensityOfStates(
    device=device,
    energies=np.linspace(-4, 6, 101),
    etaSigma=0.01,
    etaGF=0.01)
jp.run(calcr_dos, savefile=False)
Hide code cell output
JunPy version---------------------------: 0.15.0.post29+ga5b3260
Parallelization information
    BLAS Vendor-----------------------------: MKL
    Total number of MPI processes-----------: 1
    OMP_NUM_THREADS-------------------------: 1
    MKL_NUM_THREADS-------------------------: unset
    OPENBLAS_NUM_THREADS--------------------: unset
Calculating density of states... (2024-08-15 20:26:10)
    Device information
        bias (mu2-mu1)--------------------------: 0.0
        central.numberOfSites-------------------: 12
        central.spinType------------------------: SpinType.CollinearSpin
        lead1.numberOfSites---------------------: 3
        lead1.spinType--------------------------: SpinType.CollinearSpin
        lead1.direction-------------------------: -3
        lead1.temperature-----------------------: 0.0
        lead1.chemicalPotential-----------------: -0.0
        lead2.numberOfSites---------------------: 3
        lead2.spinType--------------------------: SpinType.CollinearSpin
        lead2.direction-------------------------: -3
        lead2.temperature-----------------------: 0.0
        lead2.chemicalPotential-----------------: -0.0
    Energy sampling
        samplingName----------------------------: CustomSampling
        range-----------------------------------: [-4.0000e+00, 6.0000e+00]
        number----------------------------------: 101
    K-space sampling
        samplingName----------------------------: GammaKspaceSampling
        numReducedKpoints-----------------------: 1
    Runtime message
        Integrate over energy and k-space...
            Start MPI execution...
            -->   5.9% finished (Elapsed time: 0:00:00.157780)
            -->  10.9% finished (Elapsed time: 0:00:00.098970)
            -->  15.8% finished (Elapsed time: 0:00:00.103462)
            -->  20.8% finished (Elapsed time: 0:00:00.107473)
            -->  25.7% finished (Elapsed time: 0:00:00.124568)
            -->  30.7% finished (Elapsed time: 0:00:00.148198)
            -->  35.6% finished (Elapsed time: 0:00:00.155703)
            -->  40.6% finished (Elapsed time: 0:00:00.245130)
            -->  45.5% finished (Elapsed time: 0:00:00.164388)
            -->  50.5% finished (Elapsed time: 0:00:00.164172)
            -->  55.4% finished (Elapsed time: 0:00:00.173248)
            -->  60.4% finished (Elapsed time: 0:00:00.196932)
            -->  65.3% finished (Elapsed time: 0:00:00.176232)
            -->  70.3% finished (Elapsed time: 0:00:00.161262)
            -->  75.2% finished (Elapsed time: 0:00:00.167534)
            -->  80.2% finished (Elapsed time: 0:00:00.157482)
            -->  85.1% finished (Elapsed time: 0:00:00.126943)
            -->  90.1% finished (Elapsed time: 0:00:00.107382)
            -->  95.0% finished (Elapsed time: 0:00:00.112344)
            --> 100.0% finished (Elapsed time: 0:00:00.110355)
            Wait for other processes...
            --> finished (Elapsed time: 0:00:00.000969)
            Gather results from other processes...
            --> finished (Elapsed time: 0:00:00.001050)
    Density of states report
            Energy_eV          D_up          D_dn
        -4.000000e+00  1.127021e-02  1.639869e-02
        -3.900000e+00  1.171425e-02  1.505244e-02
        -3.800000e+00  1.221406e-02  1.395156e-02
        -3.700000e+00  1.277625e-02  1.304498e-02
        -3.600000e+00  1.340886e-02  1.229498e-02
        -3.500000e+00  1.412165e-02  1.167322e-02
        -3.400000e+00  1.492656e-02  1.115805e-02
        -3.300000e+00  1.583837e-02  1.073276e-02
        -3.200000e+00  1.687544e-02  1.038434e-02
        -3.100000e+00  1.806097e-02  1.010255e-02
        -3.000000e+00  1.942461e-02  9.879335e-03
        -2.900000e+00  2.100494e-02  9.708339e-03
        -2.800000e+00  2.285314e-02  9.584567e-03
        -2.700000e+00  2.503874e-02  9.504137e-03
        -2.600000e+00  2.765894e-02  9.464091e-03
        -2.500000e+00  3.085441e-02  9.462258e-03
        -2.400000e+00  3.483763e-02  9.497155e-03
        -2.300000e+00  3.994724e-02  9.567916e-03
        -2.200000e+00  4.676125e-02  9.674247e-03
        -2.100000e+00  5.635972e-02  9.816404e-03
        -2.000000e+00  7.102755e-02  9.995192e-03
        -1.900000e+00  9.656241e-02  1.021198e-02
        -1.800000e+00  1.527801e-01  1.046874e-02
        -1.700000e+00  3.666036e-01  1.076811e-02
        -1.600000e+00  1.080420e+01  1.111347e-02
        -1.500000e+00  7.382336e+00  1.150910e-02
        -1.400000e+00  4.811470e+00  1.196031e-02
        -1.300000e+00  4.347782e+00  1.247368e-02
        -1.200000e+00  4.229036e+00  1.305738e-02
        -1.100000e+00  3.885855e+00  1.372157e-02
        -1.000000e+00  3.466896e+00  1.447896e-02
        -9.000000e-01  3.080558e+00  1.534567e-02
        -8.000000e-01  3.359947e+00  1.634234e-02
        -7.000000e-01  3.996898e+00  1.749580e-02
        -6.000000e-01  1.068751e+01  1.884167e-02
        -5.000000e-01  4.103285e+01  2.042818e-02
        -4.000000e-01  2.729543e+01  2.232256e-02
        -3.000000e-01  2.465248e+01  2.462150e-02
        -2.000000e-01  2.394359e+01  2.746968e-02
        -1.000000e-01  2.723034e+01  3.109440e-02
         0.000000e+00  4.198225e+01  3.587518e-02
         1.000000e-01  6.173473e+01  4.249738e-02
         2.000000e-01  5.084898e+00  5.233560e-02
         3.000000e-01  3.664255e+00  6.858646e-02
         4.000000e-01  3.229684e+00  1.005915e-01
         5.000000e-01  3.003310e+00  1.898167e-01
         6.000000e-01  3.171835e+00  1.001302e+00
         7.000000e-01  3.428784e+00  8.579854e+00
         8.000000e-01  3.875359e+00  5.457506e+00
         9.000000e-01  4.095121e+00  4.081743e+00
         1.000000e+00  3.924991e+00  3.746982e+00
         1.100000e+00  3.811351e+00  3.615943e+00
         1.200000e+00  4.889778e+00  3.398703e+00
         1.300000e+00  8.032514e+00  3.127002e+00
         1.400000e+00  6.371544e+00  2.884156e+00
         1.500000e+00  3.099948e-01  2.854206e+00
         1.600000e+00  1.330055e-01  2.811669e+00
         1.700000e+00  8.461705e-02  2.900643e+00
         1.800000e+00  6.238306e-02  3.134286e+00
         1.900000e+00  4.959117e-02  4.305620e+00
         2.000000e+00  4.123443e-02  6.459996e+01
         2.100000e+00  3.531526e-02  2.722599e+01
         2.200000e+00  3.088445e-02  2.113562e+01
         2.300000e+00  2.743347e-02  2.180168e+01
         2.400000e+00  2.466486e-02  1.891568e+01
         2.500000e+00  2.239253e-02  2.171674e+01
         2.600000e+00  2.049371e-02  2.116281e+01
         2.700000e+00  1.888388e-02  3.265226e+01
         2.800000e+00  1.750276e-02  3.283530e+01
         2.900000e+00  1.630609e-02  6.637641e+00
         3.000000e+00  1.526056e-02  3.041749e+00
         3.100000e+00  1.434060e-02  2.565953e+00
         3.200000e+00  1.352617e-02  2.483527e+00
         3.300000e+00  1.280138e-02  2.749144e+00
         3.400000e+00  1.215340e-02  3.073155e+00
         3.500000e+00  1.157179e-02  3.353360e+00
         3.600000e+00  1.104796e-02  3.386515e+00
         3.700000e+00  1.057474e-02  3.183820e+00
         3.800000e+00  1.014615e-02  3.038609e+00
         3.900000e+00  9.757130e-03  3.489639e+00
         4.000000e+00  9.403365e-03  5.231762e+00
         4.100000e+00  9.081178e-03  7.477820e+00
         4.200000e+00  8.787404e-03  3.371269e+00
         4.300000e+00  8.519308e-03  2.192419e-01
         4.400000e+00  8.274517e-03  1.060757e-01
         4.500000e+00  8.050964e-03  7.045838e-02
         4.600000e+00  7.846843e-03  5.319246e-02
         4.700000e+00  7.660571e-03  4.297442e-02
         4.800000e+00  7.490755e-03  3.618328e-02
         4.900000e+00  7.336172e-03  3.131745e-02
         5.000000e+00  7.195740e-03  2.764516e-02
         5.100000e+00  7.068507e-03  2.476743e-02
         5.200000e+00  6.953630e-03  2.244791e-02
         5.300000e+00  6.850366e-03  2.053728e-02
         5.400000e+00  6.758058e-03  1.893631e-02
         5.500000e+00  6.676129e-03  1.757628e-02
         5.600000e+00  6.604071e-03  1.640793e-02
         5.700000e+00  6.541440e-03  1.539497e-02
         5.800000e+00  6.487852e-03  1.450996e-02
         5.900000e+00  6.442972e-03  1.373179e-02
         6.000000e+00  6.406518e-03  1.304389e-02
Calculation of density of states finished (2024-08-15 20:26:14)
Elapsed time----------------------------: 0:00:03.013240

The [calcr].densityOfStates function returns the calculated DOS values with the shape of (#kpoints, #energies, #spin). Setting spin='diag' indicates that the function will return both spin-up and spin-down values.

# shape: (#kpoints, #energies, #spin)
dos = calcr_dos.densityOfStates(spin='diag')

plt.plot(calcr_dos.energies, dos[0,:,0], '.-', label='spin-up')
plt.plot(calcr_dos.energies, dos[0,:,1], '.-', label='spin-down')
plt.xlabel('Energy (eV)')
plt.ylabel('DOS (1/eV)')
plt.legend()
plt.show()
../../_images/45a645ee920c94d8510995d8bc28a9372549c426207fff6a151141711a503a6c.svg

Calculate Transmission

Similar to the DOS calculation, we use jp.Transmission to construct the transmission calculation.

calcr_trans = jp.Transmission(
    device=device,
    energies=np.linspace(-4, 6, 101),
    etaSigma=0.01,
    etaGF=0.01)
jp.run(calcr_trans, savefile=False)
Hide code cell output
JunPy version---------------------------: 0.15.0.post29+ga5b3260
Parallelization information
    BLAS Vendor-----------------------------: MKL
    Total number of MPI processes-----------: 1
    OMP_NUM_THREADS-------------------------: 1
    MKL_NUM_THREADS-------------------------: unset
    OPENBLAS_NUM_THREADS--------------------: unset
Calculating transmission... (2024-08-15 20:26:28)
    Device information
        bias (mu2-mu1)--------------------------: 0.0
        central.numberOfSites-------------------: 12
        central.spinType------------------------: SpinType.CollinearSpin
        lead1.numberOfSites---------------------: 3
        lead1.spinType--------------------------: SpinType.CollinearSpin
        lead1.direction-------------------------: -3
        lead1.temperature-----------------------: 0.0
        lead1.chemicalPotential-----------------: -0.0
        lead2.numberOfSites---------------------: 3
        lead2.spinType--------------------------: SpinType.CollinearSpin
        lead2.direction-------------------------: -3
        lead2.temperature-----------------------: 0.0
        lead2.chemicalPotential-----------------: -0.0
    Energy sampling
        samplingName----------------------------: CustomSampling
        range-----------------------------------: [-4.0000e+00, 6.0000e+00]
        number----------------------------------: 101
    K-space sampling
        samplingName----------------------------: GammaKspaceSampling
        numReducedKpoints-----------------------: 1
    Runtime message
        Integrate over energy and k-space...
            Start MPI execution...
            -->   5.9% finished (Elapsed time: 0:00:00.179570)
            -->  10.9% finished (Elapsed time: 0:00:00.124961)
            -->  15.8% finished (Elapsed time: 0:00:00.124341)
            -->  20.8% finished (Elapsed time: 0:00:00.130004)
            -->  25.7% finished (Elapsed time: 0:00:00.146647)
            -->  30.7% finished (Elapsed time: 0:00:00.173420)
            -->  35.6% finished (Elapsed time: 0:00:00.187555)
            -->  40.6% finished (Elapsed time: 0:00:00.211225)
            -->  45.5% finished (Elapsed time: 0:00:00.197474)
            -->  50.5% finished (Elapsed time: 0:00:00.187446)
            -->  55.4% finished (Elapsed time: 0:00:00.221113)
            -->  60.4% finished (Elapsed time: 0:00:00.199818)
            -->  65.3% finished (Elapsed time: 0:00:00.212808)
            -->  70.3% finished (Elapsed time: 0:00:00.179722)
            -->  75.2% finished (Elapsed time: 0:00:00.185184)
            -->  80.2% finished (Elapsed time: 0:00:00.186060)
            -->  85.1% finished (Elapsed time: 0:00:00.144540)
            -->  90.1% finished (Elapsed time: 0:00:00.171482)
            -->  95.0% finished (Elapsed time: 0:00:00.173372)
            --> 100.0% finished (Elapsed time: 0:00:00.136908)
            Wait for other processes...
            --> finished (Elapsed time: 0:00:00.000013)
            Gather results from other processes...
            --> finished (Elapsed time: 0:00:00.000059)
    Transmission report
            Energy_eV          T_up          T_dn
        -4.000000e+00  3.568769e-25  1.086498e-23
        -3.900000e+00  5.493207e-25  5.768998e-24
        -3.800000e+00  9.184429e-25  3.357583e-24
        -3.700000e+00  1.655759e-24  2.125167e-24
        -3.600000e+00  3.193358e-24  1.452455e-24
        -3.500000e+00  6.549973e-24  1.064571e-24
        -3.400000e+00  1.424297e-23  8.311436e-25
        -3.300000e+00  3.281372e-23  6.867108e-25
        -3.200000e+00  8.020403e-23  5.968460e-25
        -3.100000e+00  2.085829e-22  5.428753e-25
        -3.000000e+00  5.795699e-22  5.146546e-25
        -2.900000e+00  1.729808e-21  5.070578e-25
        -2.800000e+00  5.582701e-21  5.183081e-25
        -2.700000e+00  1.964410e-20  5.493327e-25
        -2.600000e+00  7.614856e-20  6.038201e-25
        -2.500000e+00  3.295224e-19  6.889433e-25
        -2.400000e+00  1.619688e-18  8.169458e-25
        -2.300000e+00  9.256830e-18  1.008095e-24
        -2.200000e+00  6.356741e-17  1.296021e-24
        -2.100000e+00  5.505632e-16  1.737447e-24
        -2.000000e+00  6.495195e-15  2.430272e-24
        -1.900000e+00  1.195445e-13  3.548076e-24
        -1.800000e+00  4.565681e-12  5.407865e-24
        -1.700000e+00  8.546694e-10  8.607290e-24
        -1.600000e+00  1.911524e-04  1.431190e-23
        -1.500000e+00  9.459319e-04  2.487799e-23
        -1.400000e+00  1.860142e-03  4.525445e-23
        -1.300000e+00  2.543458e-03  8.626567e-23
        -1.200000e+00  2.878037e-03  1.726329e-22
        -1.100000e+00  3.211477e-03  3.634836e-22
        -1.000000e+00  3.744801e-03  8.074156e-22
        -9.000000e-01  4.089340e-03  1.898336e-21
        -8.000000e-01  5.569328e-03  4.742493e-21
        -7.000000e-01  6.286368e-03  1.264843e-20
        -6.000000e-01  6.752022e-03  3.621892e-20
        -5.000000e-01  7.122807e-03  1.121337e-19
        -4.000000e-01  7.547907e-03  3.786295e-19
        -3.000000e-01  8.212986e-03  1.409789e-18
        -2.000000e-01  9.534190e-03  5.871544e-18
        -1.000000e-01  1.160203e-02  2.787783e-17
         0.000000e+00  1.573092e-02  1.548968e-16
         1.000000e-01  1.162909e-02  1.045907e-15
         2.000000e-01  1.138167e-02  9.093653e-15
         3.000000e-01  1.119427e-02  1.121634e-13
         4.000000e-01  1.101313e-02  2.364180e-12
         5.000000e-01  1.099336e-02  1.348291e-10
         6.000000e-01  1.222977e-02  1.981699e-07
         7.000000e-01  1.156938e-02  6.432205e-04
         8.000000e-01  1.052950e-02  1.568219e-03
         9.000000e-01  8.555938e-03  2.749335e-03
         1.000000e+00  6.310701e-03  3.488483e-03
         1.100000e+00  4.503891e-03  3.841601e-03
         1.200000e+00  3.148973e-03  4.278159e-03
         1.300000e+00  1.613886e-03  5.030354e-03
         1.400000e+00  1.236328e-04  6.035115e-03
         1.500000e+00  3.319599e-09  7.614844e-03
         1.600000e+00  3.358661e-11  8.073908e-03
         1.700000e+00  1.430975e-12  8.136489e-03
         1.800000e+00  1.171936e-13  7.877373e-03
         1.900000e+00  1.427212e-14  7.692115e-03
         2.000000e+00  2.287498e-15  7.897747e-03
         2.100000e+00  4.501481e-16  8.721847e-03
         2.200000e+00  1.040753e-16  1.039420e-02
         2.300000e+00  2.743403e-17  1.311429e-02
         2.400000e+00  8.068509e-18  1.672900e-02
         2.500000e+00  2.605106e-18  2.053977e-02
         2.600000e+00  9.118984e-19  2.325163e-02
         2.700000e+00  3.426417e-19  2.532241e-02
         2.800000e+00  1.370907e-19  1.807458e-02
         2.900000e+00  5.801814e-20  1.464895e-02
         3.000000e+00  2.582793e-20  1.282680e-02
         3.100000e+00  1.203745e-20  1.179520e-02
         3.200000e+00  5.849759e-21  1.121240e-02
         3.300000e+00  2.953763e-21  1.189348e-02
         3.400000e+00  1.544954e-21  1.146806e-02
         3.500000e+00  8.348074e-22  1.034134e-02
         3.600000e+00  4.648907e-22  8.438088e-03
         3.700000e+00  2.662484e-22  6.396584e-03
         3.800000e+00  1.565206e-22  4.789009e-03
         3.900000e+00  9.429024e-23  3.695378e-03
         4.000000e+00  5.811813e-23  2.732662e-03
         4.100000e+00  3.660265e-23  1.232044e-03
         4.200000e+00  2.352538e-23  3.872268e-05
         4.300000e+00  1.541371e-23  2.962225e-09
         4.400000e+00  1.028486e-23  5.969100e-11
         4.500000e+00  6.982854e-24  3.774545e-12
         4.600000e+00  4.820343e-24  4.137508e-13
         4.700000e+00  3.380984e-24  6.380405e-14
         4.800000e+00  2.408125e-24  1.249691e-14
         4.900000e+00  1.740903e-24  2.930559e-15
         5.000000e+00  1.276899e-24  7.922661e-16
         5.100000e+00  9.499194e-25  2.405968e-16
         5.200000e+00  7.165752e-25  8.054888e-17
         5.300000e+00  5.480379e-25  2.931281e-17
         5.400000e+00  4.249060e-25  1.146937e-17
         5.500000e+00  3.339619e-25  4.783388e-18
         5.600000e+00  2.660954e-25  2.111488e-18
         5.700000e+00  2.149573e-25  9.807882e-19
         5.800000e+00  1.760756e-25  4.770711e-19
         5.900000e+00  1.462689e-25  2.420031e-19
         6.000000e+00  1.232526e-25  1.275714e-19
Calculation of transmission finished (2024-08-15 20:26:32)
Elapsed time----------------------------: 0:00:03.504264

After the evaluation, the transmission values are retrieved using [calcr].transmission.

# shape: (#kpoints, #energies, #spin)
trans = calcr_trans.transmission(spin='diag')

plt.plot(calcr_trans.energies, trans[0,:,0], '.-', label='spin-up')
plt.plot(calcr_trans.energies, trans[0,:,1], '.-', label='spin-down')
plt.xlabel('Energy (eV)')
plt.ylabel('Transmission')
plt.legend()
plt.show()
../../_images/d490e0d3e2dcbabe97c11c257460047142b09176b86967bd0b71c7c76c94a4cb.svg