{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Simple Metallic Chain\n",
"\n",
"This notebook demonstrates a quantum transport calculation using the JunPy package. The goal is to compute the density of states and transmission values for a two-probe device. We manually construct the tight-binding Hamiltonian by setting the onsite energies and hopping parameters.\n",
"\n",
"## Import Necessary Libraries\n",
"\n",
"We use the built-in module `junpy.factory.stack` to create a simple two-probe device and its tight-binding Hamiltonian."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import junpy as jp\n",
"from junpy.factory import stack\n",
"%config InlineBackend.figure_format = 'svg'\n",
"%config InlineBackend.rc = {'font.size': 12}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Build Device\n",
"\n",
"For demonstration, we assume there are 3 sites in the central region and 1 site in each of the left and right electrode unit cells. The spin-polarized onsite energies for each site are set to `np.array([[-0.5, 0], [0, 0.5]])`, where `-0.5` corresponds to spin-up and `0.5` corresponds to spin-down. The hopping energies are set to `-1`. The spin polarization angles are aligned along the $z$ direction, with values set to `0` radians."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# on-site energy\n",
"eA = np.array([[-0.5, 0], [0, 0.5]])\n",
"eB = np.array([[-0.5, 0], [0, 0.5]])\n",
"eC = np.array([[-0.5, 0], [0, 0.5]])\n",
"\n",
"# hopping energy\n",
"t = np.array([[-1, 0], [0, -1]])\n",
"\n",
"# spin polarization angle in unit of radian\n",
"sA, sB, sC, = 0, 0, 0"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We first create an empty builder using `stack.TwoProbeDeviceBuilder()` to construct the device:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"builder = stack.TwoProbeDeviceBuilder()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The following statements construct the Hamiltonian parameters for the two-probe device. Here, `builder.L`, `builder.C`, and `builder.R` represent the left, central, and right regions, respectively. The left and right regions are semi-infinite electrodes. To construct the Fermi function, we need to set the reservoir chemical potential and temperature. In this example, the reservoir chemical potentials are set to `0`, and the temperatures are set to `100` K. For each region, the `add(energy, hopping, nsites, spin, bias)` function is used to create a layer containing the Hamiltonian parameters. Here, `energy` refers to the onsite energy, `hopping` specifies the hopping energy, `nsites` is the number of sites in the layer, `spin` is the spin polarization angle in radians, and `bias` represents the energy shift of the onsite energy."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"# left electrode\n",
"builder.L.set(chemicalPotential=0, temperature=100)\n",
"builder.L.add(eA, t, nsites=1, spin=sA, bias=0)\n",
"\n",
"# central region\n",
"builder.C.add(eA, t, nsites=1, spin=sA, bias=0)\n",
"builder.C.add(eB, t, nsites=3, spin=sB, bias=0)\n",
"builder.C.add(eC, t, nsites=1, spin=sC, bias=0)\n",
"\n",
"# right electrode\n",
"builder.R.set(chemicalPotential=0, temperature=100)\n",
"builder.R.add(eC, t, nsites=1, spin=sC, bias=0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The coupling energies between the layers also need to be specified. We assume that all coupling energies are set to `t`."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"# define coupling between layers\n",
"builder.set_layer_coupling(all=t)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The default transport direction is the $z$ direction. To construct a 2D or 3D device, we can set the translation symmetry in the $x$ and $y$ directions. In this example, we construct a simple 1D two-probe device, so the translation symmetry is disabled."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"# define translation symmetry\n",
"builder.set_translationSymmetry(x=False, y=False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Once the construction is finished, use `create_device` to build the device."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"# create device\n",
"device = builder.create_device()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Calculate Density of States"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"tags": [
"hide-output"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"JunPy version---------------------------: 0.15.0.post29+ga5b3260\n",
"Parallelization information\n",
" BLAS Vendor-----------------------------: MKL\n",
" Total number of MPI processes-----------: 1\n",
" OMP_NUM_THREADS-------------------------: 1\n",
" MKL_NUM_THREADS-------------------------: unset\n",
" OPENBLAS_NUM_THREADS--------------------: unset\n",
"Calculating density of states... (2024-08-14 20:01:57)\n",
" Device information\n",
" bias (mu2-mu1)--------------------------: 0\n",
" central.numberOfSites-------------------: 5\n",
" central.spinType------------------------: SpinType.GeneralSpin\n",
" lead1.numberOfSites---------------------: 1\n",
" lead1.spinType--------------------------: SpinType.GeneralSpin\n",
" lead1.direction-------------------------: -3\n",
" lead1.temperature-----------------------: 100\n",
" lead1.chemicalPotential-----------------: 0\n",
" lead2.numberOfSites---------------------: 1\n",
" lead2.spinType--------------------------: SpinType.GeneralSpin\n",
" lead2.direction-------------------------: 3\n",
" lead2.temperature-----------------------: 100\n",
" lead2.chemicalPotential-----------------: 0\n",
" Energy sampling\n",
" samplingName----------------------------: CustomSampling\n",
" range-----------------------------------: [-3.0000e+00, 3.0000e+00]\n",
" number----------------------------------: 61\n",
" K-space sampling\n",
" samplingName----------------------------: SymmetryKspaceSampling\n",
" gridNumber------------------------------: (1, 1, 1)\n",
" isTimeReversalSymmetry------------------: True\n",
" numReducedKpoints-----------------------: 1\n",
" Runtime message\n",
" Integrate over energy and k-space...\n",
" Start MPI execution...\n",
" --> 6.6% finished (Elapsed time: 0:00:00.004573)\n",
" --> 11.5% finished (Elapsed time: 0:00:00.001699)\n",
" --> 16.4% finished (Elapsed time: 0:00:00.001630)\n",
" --> 21.3% finished (Elapsed time: 0:00:00.001487)\n",
" --> 26.2% finished (Elapsed time: 0:00:00.001480)\n",
" --> 31.1% finished (Elapsed time: 0:00:00.001430)\n",
" --> 36.1% finished (Elapsed time: 0:00:00.001932)\n",
" --> 41.0% finished (Elapsed time: 0:00:00.001499)\n",
" --> 45.9% finished (Elapsed time: 0:00:00.001404)\n",
" --> 50.8% finished (Elapsed time: 0:00:00.001315)\n",
" --> 55.7% finished (Elapsed time: 0:00:00.001314)\n",
" --> 60.7% finished (Elapsed time: 0:00:00.001766)\n",
" --> 65.6% finished (Elapsed time: 0:00:00.001617)\n",
" --> 70.5% finished (Elapsed time: 0:00:00.001195)\n",
" --> 75.4% finished (Elapsed time: 0:00:00.001387)\n",
" --> 80.3% finished (Elapsed time: 0:00:00.001412)\n",
" --> 85.2% finished (Elapsed time: 0:00:00.001434)\n",
" --> 90.2% finished (Elapsed time: 0:00:00.001451)\n",
" --> 95.1% finished (Elapsed time: 0:00:00.001334)\n",
" --> 100.0% finished (Elapsed time: 0:00:00.001556)\n",
" Wait for other processes...\n",
" --> finished (Elapsed time: 0:00:00.000186)\n",
" Gather results from other processes...\n",
" --> finished (Elapsed time: 0:00:00.000293)\n",
" Density of states report\n",
" Energy_eV D_up-up D_dn-dn D_Re-up-dn D_Im-up-dn\n",
" -3.000000e+00 1.256112e-03 9.353190e-05 0.000000e+00 0.000000e+00\n",
" -2.900000e+00 2.050678e-03 1.113836e-04 0.000000e+00 0.000000e+00\n",
" -2.800000e+00 3.807053e-03 1.340980e-04 0.000000e+00 0.000000e+00\n",
" -2.700000e+00 8.907812e-03 1.634881e-04 0.000000e+00 0.000000e+00\n",
" -2.600000e+00 3.611755e-02 2.022652e-04 0.000000e+00 0.000000e+00\n",
" -2.500000e+00 5.699298e+00 2.546209e-04 0.000000e+00 0.000000e+00\n",
" -2.400000e+00 2.635411e+00 3.272927e-04 0.000000e+00 0.000000e+00\n",
" -2.300000e+00 1.839267e+00 4.316354e-04 0.000000e+00 0.000000e+00\n",
" -2.200000e+00 1.511842e+00 5.879337e-04 0.000000e+00 0.000000e+00\n",
" -2.100000e+00 1.326195e+00 8.352035e-04 0.000000e+00 0.000000e+00\n",
" -2.000000e+00 1.203896e+00 1.256112e-03 0.000000e+00 0.000000e+00\n",
" -1.900000e+00 1.115984e+00 2.050678e-03 0.000000e+00 0.000000e+00\n",
" -1.800000e+00 1.049216e+00 3.807053e-03 0.000000e+00 0.000000e+00\n",
" -1.700000e+00 9.966793e-01 8.907812e-03 0.000000e+00 0.000000e+00\n",
" -1.600000e+00 9.544100e-01 3.611755e-02 0.000000e+00 0.000000e+00\n",
" -1.500000e+00 9.199549e-01 5.699298e+00 0.000000e+00 0.000000e+00\n",
" -1.400000e+00 8.916953e-01 2.635411e+00 0.000000e+00 0.000000e+00\n",
" -1.300000e+00 8.685007e-01 1.839267e+00 0.000000e+00 0.000000e+00\n",
" -1.200000e+00 8.495421e-01 1.511842e+00 0.000000e+00 0.000000e+00\n",
" -1.100000e+00 8.341881e-01 1.326195e+00 0.000000e+00 0.000000e+00\n",
" -1.000000e+00 8.219456e-01 1.203896e+00 0.000000e+00 0.000000e+00\n",
" -9.000000e-01 8.124258e-01 1.115984e+00 0.000000e+00 0.000000e+00\n",
" -8.000000e-01 8.053250e-01 1.049216e+00 0.000000e+00 0.000000e+00\n",
" -7.000000e-01 8.004137e-01 9.966793e-01 0.000000e+00 0.000000e+00\n",
" -6.000000e-01 7.975308e-01 9.544100e-01 0.000000e+00 0.000000e+00\n",
" -5.000000e-01 7.965804e-01 9.199549e-01 0.000000e+00 0.000000e+00\n",
" -4.000000e-01 7.975308e-01 8.916953e-01 0.000000e+00 0.000000e+00\n",
" -3.000000e-01 8.004137e-01 8.685007e-01 0.000000e+00 0.000000e+00\n",
" -2.000000e-01 8.053250e-01 8.495421e-01 0.000000e+00 0.000000e+00\n",
" -1.000000e-01 8.124258e-01 8.341881e-01 0.000000e+00 0.000000e+00\n",
" 0.000000e+00 8.219456e-01 8.219456e-01 0.000000e+00 0.000000e+00\n",
" 1.000000e-01 8.341881e-01 8.124258e-01 0.000000e+00 0.000000e+00\n",
" 2.000000e-01 8.495421e-01 8.053250e-01 0.000000e+00 0.000000e+00\n",
" 3.000000e-01 8.685007e-01 8.004137e-01 0.000000e+00 0.000000e+00\n",
" 4.000000e-01 8.916953e-01 7.975308e-01 0.000000e+00 0.000000e+00\n",
" 5.000000e-01 9.199549e-01 7.965804e-01 0.000000e+00 0.000000e+00\n",
" 6.000000e-01 9.544100e-01 7.975308e-01 0.000000e+00 0.000000e+00\n",
" 7.000000e-01 9.966793e-01 8.004137e-01 0.000000e+00 0.000000e+00\n",
" 8.000000e-01 1.049216e+00 8.053250e-01 0.000000e+00 0.000000e+00\n",
" 9.000000e-01 1.115984e+00 8.124258e-01 0.000000e+00 0.000000e+00\n",
" 1.000000e+00 1.203896e+00 8.219456e-01 0.000000e+00 0.000000e+00\n",
" 1.100000e+00 1.326195e+00 8.341881e-01 0.000000e+00 0.000000e+00\n",
" 1.200000e+00 1.511842e+00 8.495421e-01 0.000000e+00 0.000000e+00\n",
" 1.300000e+00 1.839267e+00 8.685007e-01 0.000000e+00 0.000000e+00\n",
" 1.400000e+00 2.635411e+00 8.916953e-01 0.000000e+00 0.000000e+00\n",
" 1.500000e+00 5.699298e+00 9.199549e-01 0.000000e+00 0.000000e+00\n",
" 1.600000e+00 3.611755e-02 9.544100e-01 0.000000e+00 0.000000e+00\n",
" 1.700000e+00 8.907812e-03 9.966793e-01 0.000000e+00 0.000000e+00\n",
" 1.800000e+00 3.807053e-03 1.049216e+00 0.000000e+00 0.000000e+00\n",
" 1.900000e+00 2.050678e-03 1.115984e+00 0.000000e+00 0.000000e+00\n",
" 2.000000e+00 1.256112e-03 1.203896e+00 0.000000e+00 0.000000e+00\n",
" 2.100000e+00 8.352035e-04 1.326195e+00 0.000000e+00 0.000000e+00\n",
" 2.200000e+00 5.879337e-04 1.511842e+00 0.000000e+00 0.000000e+00\n",
" 2.300000e+00 4.316354e-04 1.839267e+00 0.000000e+00 0.000000e+00\n",
" 2.400000e+00 3.272927e-04 2.635411e+00 0.000000e+00 0.000000e+00\n",
" 2.500000e+00 2.546209e-04 5.699298e+00 0.000000e+00 0.000000e+00\n",
" 2.600000e+00 2.022652e-04 3.611755e-02 0.000000e+00 0.000000e+00\n",
" 2.700000e+00 1.634881e-04 8.907812e-03 0.000000e+00 0.000000e+00\n",
" 2.800000e+00 1.340980e-04 3.807053e-03 0.000000e+00 0.000000e+00\n",
" 2.900000e+00 1.113836e-04 2.050678e-03 0.000000e+00 0.000000e+00\n",
" 3.000000e+00 9.353190e-05 1.256112e-03 0.000000e+00 0.000000e+00\n",
"Calculation of density of states finished (2024-08-14 20:01:57)\n",
"Elapsed time----------------------------: 0:00:00.054571\n"
]
}
],
"source": [
"calcr_dos = jp.DensityOfStates(\n",
" device=device,\n",
" energies=np.linspace(-3, 3, 61),\n",
" kpoints=jp.SymmetryKspaceSampling((1,1,1)),\n",
" etaSigma=0.01)\n",
"jp.run(calcr_dos, savefile=False)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# shape: (#kpoints, #energies, #spin)\n",
"dos = calcr_dos.densityOfStates(spin='diag')\n",
"\n",
"plt.plot(calcr_dos.energies, dos[0,:,0], '.-', label='spin-up')\n",
"plt.plot(calcr_dos.energies, dos[0,:,1], '.-', label='spin-down')\n",
"plt.xlabel('Energy (eV)')\n",
"plt.ylabel('DOS (1/eV)')\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Calculate Transmission"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"tags": [
"hide-output"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"JunPy version---------------------------: 0.15.0.post29+ga5b3260\n",
"Parallelization information\n",
" BLAS Vendor-----------------------------: MKL\n",
" Total number of MPI processes-----------: 1\n",
" OMP_NUM_THREADS-------------------------: 1\n",
" MKL_NUM_THREADS-------------------------: unset\n",
" OPENBLAS_NUM_THREADS--------------------: unset\n",
"Calculating transmission... (2024-08-14 20:02:20)\n",
" Device information\n",
" bias (mu2-mu1)--------------------------: 0\n",
" central.numberOfSites-------------------: 5\n",
" central.spinType------------------------: SpinType.GeneralSpin\n",
" lead1.numberOfSites---------------------: 1\n",
" lead1.spinType--------------------------: SpinType.GeneralSpin\n",
" lead1.direction-------------------------: -3\n",
" lead1.temperature-----------------------: 100\n",
" lead1.chemicalPotential-----------------: 0\n",
" lead2.numberOfSites---------------------: 1\n",
" lead2.spinType--------------------------: SpinType.GeneralSpin\n",
" lead2.direction-------------------------: 3\n",
" lead2.temperature-----------------------: 100\n",
" lead2.chemicalPotential-----------------: 0\n",
" Energy sampling\n",
" samplingName----------------------------: CustomSampling\n",
" range-----------------------------------: [-3.0000e+00, 3.0000e+00]\n",
" number----------------------------------: 61\n",
" K-space sampling\n",
" samplingName----------------------------: SymmetryKspaceSampling\n",
" gridNumber------------------------------: (1, 1, 1)\n",
" isTimeReversalSymmetry------------------: True\n",
" numReducedKpoints-----------------------: 1\n",
" Runtime message\n",
" Integrate over energy and k-space...\n",
" Start MPI execution...\n",
" --> 6.6% finished (Elapsed time: 0:00:00.003585)\n",
" --> 11.5% finished (Elapsed time: 0:00:00.001882)\n",
" --> 16.4% finished (Elapsed time: 0:00:00.001779)\n",
" --> 21.3% finished (Elapsed time: 0:00:00.002063)\n",
" --> 26.2% finished (Elapsed time: 0:00:00.001690)\n",
" --> 31.1% finished (Elapsed time: 0:00:00.001729)\n",
" --> 36.1% finished (Elapsed time: 0:00:00.002109)\n",
" --> 41.0% finished (Elapsed time: 0:00:00.002407)\n",
" --> 45.9% finished (Elapsed time: 0:00:00.001634)\n",
" --> 50.8% finished (Elapsed time: 0:00:00.001618)\n",
" --> 55.7% finished (Elapsed time: 0:00:00.001521)\n",
" --> 60.7% finished (Elapsed time: 0:00:00.001520)\n",
" --> 65.6% finished (Elapsed time: 0:00:00.001730)\n",
" --> 70.5% finished (Elapsed time: 0:00:00.002024)\n",
" --> 75.4% finished (Elapsed time: 0:00:00.001649)\n",
" --> 80.3% finished (Elapsed time: 0:00:00.001612)\n",
" --> 85.2% finished (Elapsed time: 0:00:00.001697)\n",
" --> 90.2% finished (Elapsed time: 0:00:00.002344)\n",
" --> 95.1% finished (Elapsed time: 0:00:00.001554)\n",
" --> 100.0% finished (Elapsed time: 0:00:00.001243)\n",
" Wait for other processes...\n",
" --> finished (Elapsed time: 0:00:00.000009)\n",
" Gather results from other processes...\n",
" --> finished (Elapsed time: 0:00:00.000113)\n",
" Transmission report\n",
" Energy_eV T_up-up T_dn-dn T_Re-up-dn T_Im-up-dn\n",
" -3.000000e+00 7.716049e-12 5.451332e-15 0.000000e+00 0.000000e+00\n",
" -2.900000e+00 2.559462e-11 9.265870e-15 0.000000e+00 0.000000e+00\n",
" -2.800000e+00 1.073804e-10 1.618547e-14 0.000000e+00 0.000000e+00\n",
" -2.700000e+00 6.715972e-10 2.915862e-14 0.000000e+00 0.000000e+00\n",
" -2.600000e+00 1.020449e-08 5.441482e-14 0.000000e+00 0.000000e+00\n",
" -2.500000e+00 4.826224e-01 1.057711e-13 0.000000e+00 0.000000e+00\n",
" -2.400000e+00 1.000000e+00 2.156665e-13 0.000000e+00 0.000000e+00\n",
" -2.300000e+00 1.000000e+00 4.655865e-13 0.000000e+00 0.000000e+00\n",
" -2.200000e+00 1.000000e+00 1.077732e-12 0.000000e+00 0.000000e+00\n",
" -2.100000e+00 1.000000e+00 2.723300e-12 0.000000e+00 0.000000e+00\n",
" -2.000000e+00 1.000000e+00 7.716049e-12 0.000000e+00 0.000000e+00\n",
" -1.900000e+00 1.000000e+00 2.559462e-11 0.000000e+00 0.000000e+00\n",
" -1.800000e+00 1.000000e+00 1.073804e-10 0.000000e+00 0.000000e+00\n",
" -1.700000e+00 1.000000e+00 6.715972e-10 0.000000e+00 0.000000e+00\n",
" -1.600000e+00 1.000000e+00 1.020449e-08 0.000000e+00 0.000000e+00\n",
" -1.500000e+00 1.000000e+00 4.826224e-01 0.000000e+00 0.000000e+00\n",
" -1.400000e+00 1.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00\n",
" -1.300000e+00 1.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00\n",
" -1.200000e+00 1.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00\n",
" -1.100000e+00 1.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00\n",
" -1.000000e+00 1.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00\n",
" -9.000000e-01 1.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00\n",
" -8.000000e-01 1.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00\n",
" -7.000000e-01 1.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00\n",
" -6.000000e-01 1.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00\n",
" -5.000000e-01 1.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00\n",
" -4.000000e-01 1.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00\n",
" -3.000000e-01 1.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00\n",
" -2.000000e-01 1.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00\n",
" -1.000000e-01 1.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00\n",
" 0.000000e+00 1.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00\n",
" 1.000000e-01 1.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00\n",
" 2.000000e-01 1.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00\n",
" 3.000000e-01 1.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00\n",
" 4.000000e-01 1.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00\n",
" 5.000000e-01 1.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00\n",
" 6.000000e-01 1.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00\n",
" 7.000000e-01 1.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00\n",
" 8.000000e-01 1.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00\n",
" 9.000000e-01 1.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00\n",
" 1.000000e+00 1.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00\n",
" 1.100000e+00 1.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00\n",
" 1.200000e+00 1.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00\n",
" 1.300000e+00 1.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00\n",
" 1.400000e+00 1.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00\n",
" 1.500000e+00 4.826224e-01 1.000000e+00 0.000000e+00 0.000000e+00\n",
" 1.600000e+00 1.020449e-08 1.000000e+00 0.000000e+00 0.000000e+00\n",
" 1.700000e+00 6.715972e-10 1.000000e+00 0.000000e+00 0.000000e+00\n",
" 1.800000e+00 1.073804e-10 1.000000e+00 0.000000e+00 0.000000e+00\n",
" 1.900000e+00 2.559462e-11 1.000000e+00 0.000000e+00 0.000000e+00\n",
" 2.000000e+00 7.716049e-12 1.000000e+00 0.000000e+00 0.000000e+00\n",
" 2.100000e+00 2.723300e-12 1.000000e+00 0.000000e+00 0.000000e+00\n",
" 2.200000e+00 1.077732e-12 1.000000e+00 0.000000e+00 0.000000e+00\n",
" 2.300000e+00 4.655865e-13 1.000000e+00 0.000000e+00 0.000000e+00\n",
" 2.400000e+00 2.156665e-13 1.000000e+00 0.000000e+00 0.000000e+00\n",
" 2.500000e+00 1.057711e-13 4.826224e-01 0.000000e+00 0.000000e+00\n",
" 2.600000e+00 5.441482e-14 1.020449e-08 0.000000e+00 0.000000e+00\n",
" 2.700000e+00 2.915862e-14 6.715972e-10 0.000000e+00 0.000000e+00\n",
" 2.800000e+00 1.618547e-14 1.073804e-10 0.000000e+00 0.000000e+00\n",
" 2.900000e+00 9.265870e-15 2.559462e-11 0.000000e+00 0.000000e+00\n",
" 3.000000e+00 5.451332e-15 7.716049e-12 0.000000e+00 0.000000e+00\n",
"Calculation of transmission finished (2024-08-14 20:02:20)\n",
"Elapsed time----------------------------: 0:00:00.046322\n"
]
}
],
"source": [
"calcr_trans = jp.Transmission(\n",
" device=device,\n",
" energies=np.linspace(-3, 3, 61),\n",
" kpoints=jp.SymmetryKspaceSampling((1,1,1)),\n",
" etaSigma=1e-4,\n",
")\n",
"jp.run(calcr_trans, savefile=False)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# shape: (#kpoints, #energies, #spin)\n",
"trans = calcr_trans.transmission(spin='diag')\n",
"\n",
"plt.plot(calcr_trans.energies, trans[0,:,0], '.-', label='spin-up')\n",
"plt.plot(calcr_trans.energies, trans[0,:,1], '.-', label='spin-down')\n",
"plt.xlabel('Energy (eV)')\n",
"plt.ylabel('Transmission')\n",
"plt.legend()\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.13"
}
},
"nbformat": 4,
"nbformat_minor": 4
}