### Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

### Messages - guojunnan

Pages: [1]
1
##### General Questions and Answers / Re: How to calculate the current after introducing spin-orbit coupling?
« on: March 27, 2024, 09:31 »
Sorry.This colour may not be clear as I've just set it.
# -*- coding: utf-8 -*-
# -------------------------------------------------------------
# Two-probe Configuration
# -------------------------------------------------------------

# -------------------------------------------------------------
# Left Electrode
# -------------------------------------------------------------

# Set up lattice
vector_a = [15.0, 0.0, 0.0]*Angstrom
vector_b = [9.18485099360515e-16, 15.0, 0.0]*Angstrom
vector_c = [0.0, 0.0, 7.0637512743]*Angstrom
left_electrode_lattice = UnitCell(vector_a, vector_b, vector_c)

# Define elements
left_electrode_elements = [Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold,
Gold]

# Define coordinates
left_electrode_coordinates = [[  7.1907375    ,   6.671025     ,   1.17729901125],
[ 10.0745025    ,   6.671025     ,   1.17729901125],
[  5.7488625    ,   9.168435     ,   1.17729901125],
[  8.6326275    ,   9.168435     ,   1.17729901125],
[  5.7488625    ,   7.503495     ,   3.5318775823 ],
[  8.6326125    ,   7.503495     ,   3.5318775823 ],
[  4.3069725    ,  10.000905     ,   3.5318775823 ],
[  7.1907375    ,  10.000905     ,   3.5318775823 ],
[  5.7488625    ,   5.838555     ,   5.88645226305],
[  8.6326125    ,   5.838555     ,   5.88645226305],
[  4.3069725    ,   8.335965     ,   5.88645226305],
[  7.1907375    ,   8.335965     ,   5.88645226305]]*Angstrom

# Set up configuration
left_electrode = BulkConfiguration(
bravais_lattice=left_electrode_lattice,
elements=left_electrode_elements,
cartesian_coordinates=left_electrode_coordinates
)

# -------------------------------------------------------------
# Right Electrode
# -------------------------------------------------------------

# Set up lattice
vector_a = [15.0, 0.0, 0.0]*Angstrom
vector_b = [9.18485099360515e-16, 15.0, 0.0]*Angstrom
vector_c = [0.0, 0.0, 7.063755164599996]*Angstrom
right_electrode_lattice = UnitCell(vector_a, vector_b, vector_c)

# Define elements
right_electrode_elements = [Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold,
Gold]

# Define coordinates
right_electrode_coordinates = [[  6.662341185865,   6.369654444235,   1.17729901125 ],
[  9.546091185865,   6.369654444235,   1.17729901125 ],
[  5.220451185865,   8.867064444235,   1.17729901125 ],
[  8.104216185865,   8.867064444235,   1.17729901125 ],
[  6.662341185865,   8.034594444235,   3.53185813085 ],
[  9.546091185865,   8.034594444235,   3.53185813085 ],
[  5.220451185865,  10.532004444235,   3.53185813085 ],
[  8.104216185865,  10.532004444235,   3.53185813085 ],
[  8.104216185865,   7.202124444235,   5.88645615335 ],
[ 10.987981185865,   7.202124444235,   5.88645615335 ],
[  6.662341185865,   9.699534444235,   5.88645615335 ],
[  9.546091185865,   9.699534444235,   5.88645615335 ]]*Angstrom

# Set up configuration
right_electrode = BulkConfiguration(
bravais_lattice=right_electrode_lattice,
elements=right_electrode_elements,
cartesian_coordinates=right_electrode_coordinates
)

# -------------------------------------------------------------
# Central Region
# -------------------------------------------------------------

# Set up lattice
vector_a = [15.0, 0.0, 0.0]*Angstrom
vector_b = [9.18485099360515e-16, 15.0, 0.0]*Angstrom
vector_c = [3.061616997868383e-15, 3.061616997868383e-15, 38.454696774010465]*Angstrom
central_region_lattice = UnitCell(vector_a, vector_b, vector_c)

# Define elements
central_region_elements = [Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold,
Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold,
Gold, Gold, Gold, Hydrogen, Carbon, Hydrogen, Carbon, Carbon,
Carbon, Carbon, Hydrogen, Carbon, Hydrogen, Hydrogen, Carbon,
Hydrogen, Nitrogen, Hydrogen, Hydrogen, Carbon, Hydrogen, Gold,
Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold,
Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold,
Gold, Gold]

# Define coordinates
central_region_coordinates = [[  7.1907375     ,   6.671025      ,   1.17729901125 ],
[ 10.0745025     ,   6.671025      ,   1.17729901125 ],
[  5.7488625     ,   9.168435      ,   1.17729901125 ],
[  8.6326275     ,   9.168435      ,   1.17729901125 ],
[  5.7488625     ,   7.503495      ,   3.5318775823  ],
[  8.6326125     ,   7.503495      ,   3.5318775823  ],
[  4.3069725     ,  10.000905      ,   3.5318775823  ],
[  7.1907375     ,  10.000905      ,   3.5318775823  ],
[  5.7488625     ,   5.838555      ,   5.88645226305 ],
[  8.6326125     ,   5.838555      ,   5.88645226305 ],
[  4.3069725     ,   8.335965      ,   5.88645226305 ],
[  7.1907375     ,   8.335965      ,   5.88645226305 ],
[  7.1907375     ,   6.671025      ,   8.24105028555 ],
[ 10.0745025     ,   6.671025      ,   8.24105028555 ],
[  5.7488625     ,   9.168435      ,   8.24105028555 ],
[  8.6326275     ,   9.168435      ,   8.24105028555 ],
[  5.7488625     ,   7.503495      ,  10.59560940515 ],
[  8.6326125     ,   7.503495      ,  10.59560940515 ],
[  4.3069725     ,  10.000905      ,  10.59560940515 ],
[  7.1907375     ,  10.000905      ,  10.59560940515 ],
[  5.7488625     ,   5.838555      ,  12.95016852475 ],
[  8.6326125     ,   5.838555      ,  12.95016852475 ],
[  4.3069725     ,   8.335965      ,  12.95016852475 ],
[  7.1907375     ,   8.335965      ,  12.95016852475 ],
[  7.1907375     ,   6.671025      ,  14.66018439715 ],
[  7.5971775     ,   9.163875      ,  16.53717151635 ],
[  7.6306125     ,   7.07118       ,  16.62544219645 ],
[  7.7716125     ,   4.999095      ,  17.08099515545 ],
[  7.7615325     ,   8.356965      ,  17.14323979545 ],
[  7.8641325     ,   5.945415      ,  17.45500763605 ],
[  8.1154275     ,   8.5434        ,  18.49390958055 ],
[  8.2241325     ,   6.14085       ,  18.80163151955 ],
[  8.1996375     ,   9.502425      ,  18.84049551665 ],
[  8.3453025     ,   7.43991       ,  19.35090156465 ],
[  8.3952975     ,   5.313585      ,  19.37848372075 ],
[ 10.6930275     ,   7.5312        ,  20.46784272655 ],
[  8.6974575     ,   7.629105      ,  20.78906397185 ],
[  8.7963525     ,   8.69124       ,  21.03131233015 ],
[ 10.0186125     ,   7.044675      ,  21.06297929075 ],
[  6.6569775     ,   7.51299       ,  21.56377632245 ],
[  7.5273975     ,   5.97462       ,  21.64905147925 ],
[  7.6306125     ,   7.056435      ,  21.75506188175 ],
[ 10.2633675     ,   7.272105      ,  22.02944403545 ],
[  8.104216185865,   7.202124444235,  23.79450848656 ],
[  6.662341185865,   6.369654444235,  25.50452435896 ],
[  9.546091185865,   6.369654444235,  25.50452435896 ],
[  5.220451185865,   8.867064444235,  25.50452435896 ],
[  8.104216185865,   8.867064444235,  25.50452435896 ],
[  6.662341185865,   8.034594444235,  27.85908347856 ],
[  9.546091185865,   8.034594444235,  27.85908347856 ],
[  5.220451185865,  10.532004444235,  27.85908347856 ],
[  8.104216185865,  10.532004444235,  27.85908347856 ],
[  8.104216185865,   7.202124444235,  30.21364259816 ],
[ 10.987981185865,   7.202124444235,  30.21364259816 ],
[  6.662341185865,   9.699534444235,  30.21364259816 ],
[  9.546091185865,   9.699534444235,  30.21364259816 ],
[  6.662341185865,   6.369654444235,  32.56824062066 ],
[  9.546091185865,   6.369654444235,  32.56824062066 ],
[  5.220451185865,   8.867064444235,  32.56824062066 ],
[  8.104216185865,   8.867064444235,  32.56824062066 ],
[  6.662341185865,   8.034594444235,  34.92279974026 ],
[  9.546091185865,   8.034594444235,  34.92279974026 ],
[  5.220451185865,  10.532004444235,  34.92279974026 ],
[  8.104216185865,  10.532004444235,  34.92279974026 ],
[  8.104216185865,   7.202124444235,  37.27739776276 ],
[ 10.987981185865,   7.202124444235,  37.27739776276 ],
[  6.662341185865,   9.699534444235,  37.27739776276 ],
[  9.546091185865,   9.699534444235,  37.27739776276 ]]*Angstrom

# Set up configuration
central_region = BulkConfiguration(
bravais_lattice=central_region_lattice,
elements=central_region_elements,
cartesian_coordinates=central_region_coordinates
)

device_configuration = DeviceConfiguration(
central_region,
[left_electrode, right_electrode],
equivalent_electrode_lengths=[7.0637512743, 7.0637551646]*Angstrom,
transverse_electrode_repetitions=[[1, 1], [1, 1]],
)

device_configuration.addTags('Selection 0', [ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42])
device_configuration.addTags('Selection 1', [43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67])

# -------------------------------------------------------------
# Calculator
# -------------------------------------------------------------
#----------------------------------------
# Basis Set
#----------------------------------------
HydrogenBasis = OpenMXBasisSet(
element=PeriodicTable.Hydrogen,
filename="openmx/pao/H5.0.pao.zip",
atomic_species="s2p1",
hubbard_u=[0.0, 0.0, 0.0]*eV,
dft_half_parameters=Automatic,
filling_method=SphericalSymmetric,
onsite_spin_orbit_split=[0.0, 0.0, 0.0]*eV,
pseudopotential=NormConservingPseudoPotential("normconserving/upf2/H_PBE13.upf.zip"),
)

CarbonBasis = OpenMXBasisSet(
element=PeriodicTable.Carbon,
filename="openmx/pao/C6.0.pao.zip",
atomic_species="s2p2d1",
hubbard_u=[0.0, 0.0, 0.0, 0.0, 0.0]*eV,
dft_half_parameters=Automatic,
filling_method=SphericalSymmetric,
onsite_spin_orbit_split=[0.0, 0.0, 0.0, 0.0, 0.0]*eV,
pseudopotential=NormConservingPseudoPotential("normconserving/upf2/C_PBE13.upf.zip"),
)

NitrogenBasis = OpenMXBasisSet(
element=PeriodicTable.Nitrogen,
filename="openmx/pao/N6.0.pao.zip",
atomic_species="s2p2d1",
hubbard_u=[0.0, 0.0, 0.0, 0.0, 0.0]*eV,
dft_half_parameters=Automatic,
filling_method=SphericalSymmetric,
onsite_spin_orbit_split=[0.0, 0.0, 0.0, 0.0, 0.0]*eV,
pseudopotential=NormConservingPseudoPotential("normconserving/upf2/N_PBE13.upf.zip"),
)

basis_set = [
HydrogenBasis,
CarbonBasis,
NitrogenBasis,
BasisGGAPseudoDojoSO.Gold_Medium,
]

#----------------------------------------
# Exchange-Correlation
#----------------------------------------
exchange_correlation = SOGGA.PBE

#----------------------------------------
# Numerical Accuracy Settings
#----------------------------------------
device_k_point_sampling = MonkhorstPackGrid(
nc=100,
force_timereversal=False,
)
device_numerical_accuracy_parameters = NumericalAccuracyParameters(
k_point_sampling=device_k_point_sampling,
exx_grid_cutoff=75.0*Hartree,
density_mesh_cutoff=75.0*Hartree,
)

#----------------------------------------
# Device Calculator
#----------------------------------------
calculator = DeviceLCAOCalculator(
basis_set=basis_set,
exchange_correlation=exchange_correlation,
numerical_accuracy_parameters=device_numerical_accuracy_parameters,
)

device_configuration.setCalculator(calculator)

# -------------------------------------------------------------
# Initial State
# -------------------------------------------------------------
scaled_spins = [
(0, 1.0, 0.0*Degrees, 0.0*Degrees),
(1, 1.0, 0.0*Degrees, 0.0*Degrees),
(2, 1.0, 0.0*Degrees, 0.0*Degrees),
(3, 1.0, 0.0*Degrees, 0.0*Degrees),
(4, 1.0, 0.0*Degrees, 0.0*Degrees),
(5, 1.0, 0.0*Degrees, 0.0*Degrees),
(6, 1.0, 0.0*Degrees, 0.0*Degrees),
(7, 1.0, 0.0*Degrees, 0.0*Degrees),
(8, 1.0, 0.0*Degrees, 0.0*Degrees),
(9, 1.0, 0.0*Degrees, 0.0*Degrees),
(10, 1.0, 0.0*Degrees, 0.0*Degrees),
(11, 1.0, 0.0*Degrees, 0.0*Degrees),
(12, 1.0, 0.0*Degrees, 0.0*Degrees),
(13, 1.0, 0.0*Degrees, 0.0*Degrees),
(14, 1.0, 0.0*Degrees, 0.0*Degrees),
(15, 1.0, 0.0*Degrees, 0.0*Degrees),
(16, 1.0, 0.0*Degrees, 0.0*Degrees),
(17, 1.0, 0.0*Degrees, 0.0*Degrees),
(18, 1.0, 0.0*Degrees, 0.0*Degrees),
(19, 1.0, 0.0*Degrees, 0.0*Degrees),
(20, 1.0, 0.0*Degrees, 0.0*Degrees),
(21, 1.0, 0.0*Degrees, 0.0*Degrees),
(22, 1.0, 0.0*Degrees, 0.0*Degrees),
(23, 1.0, 0.0*Degrees, 0.0*Degrees),
(24, 1.0, 0.0*Degrees, 0.0*Degrees),
(25, 0.0, 0.0*Degrees, 0.0*Degrees),
(26, 0.0, 0.0*Degrees, 0.0*Degrees),
(27, 0.0, 0.0*Degrees, 0.0*Degrees),
(28, 0.0, 0.0*Degrees, 0.0*Degrees),
(29, 0.0, 0.0*Degrees, 0.0*Degrees),
(30, 0.0, 0.0*Degrees, 0.0*Degrees),
(31, 0.0, 0.0*Degrees, 0.0*Degrees),
(32, 0.0, 0.0*Degrees, 0.0*Degrees),
(33, 0.0, 0.0*Degrees, 0.0*Degrees),
(34, 0.0, 0.0*Degrees, 0.0*Degrees),
(35, 0.0, 0.0*Degrees, 0.0*Degrees),
(36, 0.0, 0.0*Degrees, 0.0*Degrees),
(37, 0.0, 0.0*Degrees, 0.0*Degrees),
(38, 0.0, 0.0*Degrees, 0.0*Degrees),
(39, 0.0, 0.0*Degrees, 0.0*Degrees),
(40, 0.0, 0.0*Degrees, 0.0*Degrees),
(41, 0.0, 0.0*Degrees, 0.0*Degrees),
(42, 0.0, 0.0*Degrees, 0.0*Degrees),
(43, 1.0, 0.0*Degrees, 0.0*Degrees),
(44, 1.0, 0.0*Degrees, 0.0*Degrees),
(45, 1.0, 0.0*Degrees, 0.0*Degrees),
(46, 1.0, 0.0*Degrees, 0.0*Degrees),
(47, 1.0, 0.0*Degrees, 0.0*Degrees),
(48, 1.0, 0.0*Degrees, 0.0*Degrees),
(49, 1.0, 0.0*Degrees, 0.0*Degrees),
(50, 1.0, 0.0*Degrees, 0.0*Degrees),
(51, 1.0, 0.0*Degrees, 0.0*Degrees),
(52, 1.0, 0.0*Degrees, 0.0*Degrees),
(53, 1.0, 0.0*Degrees, 0.0*Degrees),
(54, 1.0, 0.0*Degrees, 0.0*Degrees),
(55, 1.0, 0.0*Degrees, 0.0*Degrees),
(56, 1.0, 0.0*Degrees, 0.0*Degrees),
(57, 1.0, 0.0*Degrees, 0.0*Degrees),
(58, 1.0, 0.0*Degrees, 0.0*Degrees),
(59, 1.0, 0.0*Degrees, 0.0*Degrees),
(60, 1.0, 0.0*Degrees, 0.0*Degrees),
(61, 1.0, 0.0*Degrees, 0.0*Degrees),
(62, 1.0, 0.0*Degrees, 0.0*Degrees),
(63, 1.0, 0.0*Degrees, 0.0*Degrees),
(64, 1.0, 0.0*Degrees, 0.0*Degrees),
(65, 1.0, 0.0*Degrees, 0.0*Degrees),
(66, 1.0, 0.0*Degrees, 0.0*Degrees),
(67, 1.0, 0.0*Degrees, 0.0*Degrees),
]
initial_spin = InitialSpin(scaled_spins=scaled_spins)

device_configuration.setCalculator(
calculator,
initial_spin=initial_spin,
)
device_configuration.update()
nlsave('iv-SOGGA-p-1.hdf5', device_configuration)
nlprint(device_configuration)

# -------------------------------------------------------------
# IV Curve
# -------------------------------------------------------------
biases = [0.000000, 0.200000, 0.400000, 0.600000, 0.800000, 1.000000,
1.200000, 1.400000, 1.600000, 1.800000, 2.000000]*Volt

kpoint_grid = KpointDensity(
density_a=2.38732414638*Angstrom,
density_c=0.0*Angstrom,
force_timereversal=False,
)

iv_curve = IVCurve(
configuration=device_configuration,
biases=biases,
energies=numpy.linspace(-2,2,101)*eV,
kpoints=kpoint_grid,
self_energy_calculator=RecursionSelfEnergy(),
energy_zero_parameter=AverageFermiLevel,
infinitesimal=1e-06*eV,
selfconsistent_configurations_filename_prefix="ivcurve_selfconsistent_configuration_",
log_filename_prefix="ivcurve_"
)
nlsave('iv-SOGGA-p-1.hdf5', iv_curve)
nlprint(iv_curve)

2
##### General Questions and Answers / Re: How to calculate the current after introducing spin-orbit coupling?
« on: March 27, 2024, 09:30 »
Thank you very much for your answer, as I was recently interested in this article (https://journals.aps.org/prb/abstract/10.1103/PhysRevB.108.125419) that's why I wanted to try to find out how to calculate the spin-up and spin-down currents after introducing the spin-orbit coupling,as I wanted to transform the theoretical model into a device model to calculate the transport properties.
The thing that bothers me the most is that I don't know how to project the current up or down in a script.
Here is my script.I'm looking forward to your replies and guidance

# -*- coding: utf-8 -*-
# -------------------------------------------------------------
# Two-probe Configuration
# -------------------------------------------------------------

# -------------------------------------------------------------
# Left Electrode
# -------------------------------------------------------------

# Set up lattice
vector_a = [15.0, 0.0, 0.0]*Angstrom
vector_b = [9.18485099360515e-16, 15.0, 0.0]*Angstrom
vector_c = [0.0, 0.0, 7.0637512743]*Angstrom
left_electrode_lattice = UnitCell(vector_a, vector_b, vector_c)

# Define elements
left_electrode_elements = [Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold,
Gold]

# Define coordinates
left_electrode_coordinates = [[  7.1907375    ,   6.671025     ,   1.17729901125],
[ 10.0745025    ,   6.671025     ,   1.17729901125],
[  5.7488625    ,   9.168435     ,   1.17729901125],
[  8.6326275    ,   9.168435     ,   1.17729901125],
[  5.7488625    ,   7.503495     ,   3.5318775823 ],
[  8.6326125    ,   7.503495     ,   3.5318775823 ],
[  4.3069725    ,  10.000905     ,   3.5318775823 ],
[  7.1907375    ,  10.000905     ,   3.5318775823 ],
[  5.7488625    ,   5.838555     ,   5.88645226305],
[  8.6326125    ,   5.838555     ,   5.88645226305],
[  4.3069725    ,   8.335965     ,   5.88645226305],
[  7.1907375    ,   8.335965     ,   5.88645226305]]*Angstrom

# Set up configuration
left_electrode = BulkConfiguration(
bravais_lattice=left_electrode_lattice,
elements=left_electrode_elements,
cartesian_coordinates=left_electrode_coordinates
)

# -------------------------------------------------------------
# Right Electrode
# -------------------------------------------------------------

# Set up lattice
vector_a = [15.0, 0.0, 0.0]*Angstrom
vector_b = [9.18485099360515e-16, 15.0, 0.0]*Angstrom
vector_c = [0.0, 0.0, 7.063755164599996]*Angstrom
right_electrode_lattice = UnitCell(vector_a, vector_b, vector_c)

# Define elements
right_electrode_elements = [Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold,
Gold]

# Define coordinates
right_electrode_coordinates = [[  6.662341185865,   6.369654444235,   1.17729901125 ],
[  9.546091185865,   6.369654444235,   1.17729901125 ],
[  5.220451185865,   8.867064444235,   1.17729901125 ],
[  8.104216185865,   8.867064444235,   1.17729901125 ],
[  6.662341185865,   8.034594444235,   3.53185813085 ],
[  9.546091185865,   8.034594444235,   3.53185813085 ],
[  5.220451185865,  10.532004444235,   3.53185813085 ],
[  8.104216185865,  10.532004444235,   3.53185813085 ],
[  8.104216185865,   7.202124444235,   5.88645615335 ],
[ 10.987981185865,   7.202124444235,   5.88645615335 ],
[  6.662341185865,   9.699534444235,   5.88645615335 ],
[  9.546091185865,   9.699534444235,   5.88645615335 ]]*Angstrom

# Set up configuration
right_electrode = BulkConfiguration(
bravais_lattice=right_electrode_lattice,
elements=right_electrode_elements,
cartesian_coordinates=right_electrode_coordinates
)

# -------------------------------------------------------------
# Central Region
# -------------------------------------------------------------

# Set up lattice
vector_a = [15.0, 0.0, 0.0]*Angstrom
vector_b = [9.18485099360515e-16, 15.0, 0.0]*Angstrom
vector_c = [3.061616997868383e-15, 3.061616997868383e-15, 38.454696774010465]*Angstrom
central_region_lattice = UnitCell(vector_a, vector_b, vector_c)

# Define elements
central_region_elements = [Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold,
Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold,
Gold, Gold, Gold, Hydrogen, Carbon, Hydrogen, Carbon, Carbon,
Carbon, Carbon, Hydrogen, Carbon, Hydrogen, Hydrogen, Carbon,
Hydrogen, Nitrogen, Hydrogen, Hydrogen, Carbon, Hydrogen, Gold,
Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold,
Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold,
Gold, Gold]

# Define coordinates
central_region_coordinates = [[  7.1907375     ,   6.671025      ,   1.17729901125 ],
[ 10.0745025     ,   6.671025      ,   1.17729901125 ],
[  5.7488625     ,   9.168435      ,   1.17729901125 ],
[  8.6326275     ,   9.168435      ,   1.17729901125 ],
[  5.7488625     ,   7.503495      ,   3.5318775823  ],
[  8.6326125     ,   7.503495      ,   3.5318775823  ],
[  4.3069725     ,  10.000905      ,   3.5318775823  ],
[  7.1907375     ,  10.000905      ,   3.5318775823  ],
[  5.7488625     ,   5.838555      ,   5.88645226305 ],
[  8.6326125     ,   5.838555      ,   5.88645226305 ],
[  4.3069725     ,   8.335965      ,   5.88645226305 ],
[  7.1907375     ,   8.335965      ,   5.88645226305 ],
[  7.1907375     ,   6.671025      ,   8.24105028555 ],
[ 10.0745025     ,   6.671025      ,   8.24105028555 ],
[  5.7488625     ,   9.168435      ,   8.24105028555 ],
[  8.6326275     ,   9.168435      ,   8.24105028555 ],
[  5.7488625     ,   7.503495      ,  10.59560940515 ],
[  8.6326125     ,   7.503495      ,  10.59560940515 ],
[  4.3069725     ,  10.000905      ,  10.59560940515 ],
[  7.1907375     ,  10.000905      ,  10.59560940515 ],
[  5.7488625     ,   5.838555      ,  12.95016852475 ],
[  8.6326125     ,   5.838555      ,  12.95016852475 ],
[  4.3069725     ,   8.335965      ,  12.95016852475 ],
[  7.1907375     ,   8.335965      ,  12.95016852475 ],
[  7.1907375     ,   6.671025      ,  14.66018439715 ],
[  7.5971775     ,   9.163875      ,  16.53717151635 ],
[  7.6306125     ,   7.07118       ,  16.62544219645 ],
[  7.7716125     ,   4.999095      ,  17.08099515545 ],
[  7.7615325     ,   8.356965      ,  17.14323979545 ],
[  7.8641325     ,   5.945415      ,  17.45500763605 ],
[  8.1154275     ,   8.5434        ,  18.49390958055 ],
[  8.2241325     ,   6.14085       ,  18.80163151955 ],
[  8.1996375     ,   9.502425      ,  18.84049551665 ],
[  8.3453025     ,   7.43991       ,  19.35090156465 ],
[  8.3952975     ,   5.313585      ,  19.37848372075 ],
[ 10.6930275     ,   7.5312        ,  20.46784272655 ],
[  8.6974575     ,   7.629105      ,  20.78906397185 ],
[  8.7963525     ,   8.69124       ,  21.03131233015 ],
[ 10.0186125     ,   7.044675      ,  21.06297929075 ],
[  6.6569775     ,   7.51299       ,  21.56377632245 ],
[  7.5273975     ,   5.97462       ,  21.64905147925 ],
[  7.6306125     ,   7.056435      ,  21.75506188175 ],
[ 10.2633675     ,   7.272105      ,  22.02944403545 ],
[  8.104216185865,   7.202124444235,  23.79450848656 ],
[  6.662341185865,   6.369654444235,  25.50452435896 ],
[  9.546091185865,   6.369654444235,  25.50452435896 ],
[  5.220451185865,   8.867064444235,  25.50452435896 ],
[  8.104216185865,   8.867064444235,  25.50452435896 ],
[  6.662341185865,   8.034594444235,  27.85908347856 ],
[  9.546091185865,   8.034594444235,  27.85908347856 ],
[  5.220451185865,  10.532004444235,  27.85908347856 ],
[  8.104216185865,  10.532004444235,  27.85908347856 ],
[  8.104216185865,   7.202124444235,  30.21364259816 ],
[ 10.987981185865,   7.202124444235,  30.21364259816 ],
[  6.662341185865,   9.699534444235,  30.21364259816 ],
[  9.546091185865,   9.699534444235,  30.21364259816 ],
[  6.662341185865,   6.369654444235,  32.56824062066 ],
[  9.546091185865,   6.369654444235,  32.56824062066 ],
[  5.220451185865,   8.867064444235,  32.56824062066 ],
[  8.104216185865,   8.867064444235,  32.56824062066 ],
[  6.662341185865,   8.034594444235,  34.92279974026 ],
[  9.546091185865,   8.034594444235,  34.92279974026 ],
[  5.220451185865,  10.532004444235,  34.92279974026 ],
[  8.104216185865,  10.532004444235,  34.92279974026 ],
[  8.104216185865,   7.202124444235,  37.27739776276 ],
[ 10.987981185865,   7.202124444235,  37.27739776276 ],
[  6.662341185865,   9.699534444235,  37.27739776276 ],
[  9.546091185865,   9.699534444235,  37.27739776276 ]]*Angstrom

# Set up configuration
central_region = BulkConfiguration(
bravais_lattice=central_region_lattice,
elements=central_region_elements,
cartesian_coordinates=central_region_coordinates
)

device_configuration = DeviceConfiguration(
central_region,
[left_electrode, right_electrode],
equivalent_electrode_lengths=[7.0637512743, 7.0637551646]*Angstrom,
transverse_electrode_repetitions=[[1, 1], [1, 1]],
)

device_configuration.addTags('Selection 0', [ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42])
device_configuration.addTags('Selection 1', [43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67])

# -------------------------------------------------------------
# Calculator
# -------------------------------------------------------------
#----------------------------------------
# Basis Set
#----------------------------------------
HydrogenBasis = OpenMXBasisSet(
element=PeriodicTable.Hydrogen,
filename="openmx/pao/H5.0.pao.zip",
atomic_species="s2p1",
hubbard_u=[0.0, 0.0, 0.0]*eV,
dft_half_parameters=Automatic,
filling_method=SphericalSymmetric,
onsite_spin_orbit_split=[0.0, 0.0, 0.0]*eV,
pseudopotential=NormConservingPseudoPotential("normconserving/upf2/H_PBE13.upf.zip"),
)

CarbonBasis = OpenMXBasisSet(
element=PeriodicTable.Carbon,
filename="openmx/pao/C6.0.pao.zip",
atomic_species="s2p2d1",
hubbard_u=[0.0, 0.0, 0.0, 0.0, 0.0]*eV,
dft_half_parameters=Automatic,
filling_method=SphericalSymmetric,
onsite_spin_orbit_split=[0.0, 0.0, 0.0, 0.0, 0.0]*eV,
pseudopotential=NormConservingPseudoPotential("normconserving/upf2/C_PBE13.upf.zip"),
)

NitrogenBasis = OpenMXBasisSet(
element=PeriodicTable.Nitrogen,
filename="openmx/pao/N6.0.pao.zip",
atomic_species="s2p2d1",
hubbard_u=[0.0, 0.0, 0.0, 0.0, 0.0]*eV,
dft_half_parameters=Automatic,
filling_method=SphericalSymmetric,
onsite_spin_orbit_split=[0.0, 0.0, 0.0, 0.0, 0.0]*eV,
pseudopotential=NormConservingPseudoPotential("normconserving/upf2/N_PBE13.upf.zip"),
)

basis_set = [
HydrogenBasis,
CarbonBasis,
NitrogenBasis,
BasisGGAPseudoDojoSO.Gold_Medium,
]

#----------------------------------------
# Exchange-Correlation
#----------------------------------------
exchange_correlation = SOGGA.PBE

#----------------------------------------
# Numerical Accuracy Settings
#----------------------------------------
device_k_point_sampling = MonkhorstPackGrid(
nc=100,
force_timereversal=False,
)
device_numerical_accuracy_parameters = NumericalAccuracyParameters(
k_point_sampling=device_k_point_sampling,
exx_grid_cutoff=75.0*Hartree,
density_mesh_cutoff=75.0*Hartree,
)

#----------------------------------------
# Device Calculator
#----------------------------------------
calculator = DeviceLCAOCalculator(
basis_set=basis_set,
exchange_correlation=exchange_correlation,
numerical_accuracy_parameters=device_numerical_accuracy_parameters,
)

device_configuration.setCalculator(calculator)

# -------------------------------------------------------------
# Initial State
# -------------------------------------------------------------
scaled_spins = [
(0, 1.0, 0.0*Degrees, 0.0*Degrees),
(1, 1.0, 0.0*Degrees, 0.0*Degrees),
(2, 1.0, 0.0*Degrees, 0.0*Degrees),
(3, 1.0, 0.0*Degrees, 0.0*Degrees),
(4, 1.0, 0.0*Degrees, 0.0*Degrees),
(5, 1.0, 0.0*Degrees, 0.0*Degrees),
(6, 1.0, 0.0*Degrees, 0.0*Degrees),
(7, 1.0, 0.0*Degrees, 0.0*Degrees),
(8, 1.0, 0.0*Degrees, 0.0*Degrees),
(9, 1.0, 0.0*Degrees, 0.0*Degrees),
(10, 1.0, 0.0*Degrees, 0.0*Degrees),
(11, 1.0, 0.0*Degrees, 0.0*Degrees),
(12, 1.0, 0.0*Degrees, 0.0*Degrees),
(13, 1.0, 0.0*Degrees, 0.0*Degrees),
(14, 1.0, 0.0*Degrees, 0.0*Degrees),
(15, 1.0, 0.0*Degrees, 0.0*Degrees),
(16, 1.0, 0.0*Degrees, 0.0*Degrees),
(17, 1.0, 0.0*Degrees, 0.0*Degrees),
(18, 1.0, 0.0*Degrees, 0.0*Degrees),
(19, 1.0, 0.0*Degrees, 0.0*Degrees),
(20, 1.0, 0.0*Degrees, 0.0*Degrees),
(21, 1.0, 0.0*Degrees, 0.0*Degrees),
(22, 1.0, 0.0*Degrees, 0.0*Degrees),
(23, 1.0, 0.0*Degrees, 0.0*Degrees),
(24, 1.0, 0.0*Degrees, 0.0*Degrees),
(25, 0.0, 0.0*Degrees, 0.0*Degrees),
(26, 0.0, 0.0*Degrees, 0.0*Degrees),
(27, 0.0, 0.0*Degrees, 0.0*Degrees),
(28, 0.0, 0.0*Degrees, 0.0*Degrees),
(29, 0.0, 0.0*Degrees, 0.0*Degrees),
(30, 0.0, 0.0*Degrees, 0.0*Degrees),
(31, 0.0, 0.0*Degrees, 0.0*Degrees),
(32, 0.0, 0.0*Degrees, 0.0*Degrees),
(33, 0.0, 0.0*Degrees, 0.0*Degrees),
(34, 0.0, 0.0*Degrees, 0.0*Degrees),
(35, 0.0, 0.0*Degrees, 0.0*Degrees),
(36, 0.0, 0.0*Degrees, 0.0*Degrees),
(37, 0.0, 0.0*Degrees, 0.0*Degrees),
(38, 0.0, 0.0*Degrees, 0.0*Degrees),
(39, 0.0, 0.0*Degrees, 0.0*Degrees),
(40, 0.0, 0.0*Degrees, 0.0*Degrees),
(41, 0.0, 0.0*Degrees, 0.0*Degrees),
(42, 0.0, 0.0*Degrees, 0.0*Degrees),
(43, 1.0, 0.0*Degrees, 0.0*Degrees),
(44, 1.0, 0.0*Degrees, 0.0*Degrees),
(45, 1.0, 0.0*Degrees, 0.0*Degrees),
(46, 1.0, 0.0*Degrees, 0.0*Degrees),
(47, 1.0, 0.0*Degrees, 0.0*Degrees),
(48, 1.0, 0.0*Degrees, 0.0*Degrees),
(49, 1.0, 0.0*Degrees, 0.0*Degrees),
(50, 1.0, 0.0*Degrees, 0.0*Degrees),
(51, 1.0, 0.0*Degrees, 0.0*Degrees),
(52, 1.0, 0.0*Degrees, 0.0*Degrees),
(53, 1.0, 0.0*Degrees, 0.0*Degrees),
(54, 1.0, 0.0*Degrees, 0.0*Degrees),
(55, 1.0, 0.0*Degrees, 0.0*Degrees),
(56, 1.0, 0.0*Degrees, 0.0*Degrees),
(57, 1.0, 0.0*Degrees, 0.0*Degrees),
(58, 1.0, 0.0*Degrees, 0.0*Degrees),
(59, 1.0, 0.0*Degrees, 0.0*Degrees),
(60, 1.0, 0.0*Degrees, 0.0*Degrees),
(61, 1.0, 0.0*Degrees, 0.0*Degrees),
(62, 1.0, 0.0*Degrees, 0.0*Degrees),
(63, 1.0, 0.0*Degrees, 0.0*Degrees),
(64, 1.0, 0.0*Degrees, 0.0*Degrees),
(65, 1.0, 0.0*Degrees, 0.0*Degrees),
(66, 1.0, 0.0*Degrees, 0.0*Degrees),
(67, 1.0, 0.0*Degrees, 0.0*Degrees),
]
initial_spin = InitialSpin(scaled_spins=scaled_spins)

device_configuration.setCalculator(
calculator,
initial_spin=initial_spin,
)
device_configuration.update()
nlsave('iv-SOGGA-p-1.hdf5', device_configuration)
nlprint(device_configuration)

# -------------------------------------------------------------
# IV Curve
# -------------------------------------------------------------
biases = [0.000000, 0.200000, 0.400000, 0.600000, 0.800000, 1.000000,
1.200000, 1.400000, 1.600000, 1.800000, 2.000000]*Volt

kpoint_grid = KpointDensity(
density_a=2.38732414638*Angstrom,
density_c=0.0*Angstrom,
force_timereversal=False,
)

iv_curve = IVCurve(
configuration=device_configuration,
biases=biases,
energies=numpy.linspace(-2,2,101)*eV,
kpoints=kpoint_grid,
self_energy_calculator=RecursionSelfEnergy(),
energy_zero_parameter=AverageFermiLevel,
infinitesimal=1e-06*eV,
selfconsistent_configurations_filename_prefix="ivcurve_selfconsistent_configuration_",
log_filename_prefix="ivcurve_"
)
nlsave('iv-SOGGA-p-1.hdf5', iv_curve)
nlprint(iv_curve)

3
##### General Questions and Answers / How to calculate the current after introducing spin-orbit coupling?
« on: March 26, 2024, 11:00 »
I want to calculate the current of a device after the introduction of spin-orbit coupling, and I need to see the spin-up and spin-down currents after the introduction of spin-orbit coupling? But my calculations can only yield currents in the xyz direction? How should I adjust it?

4
##### General Questions and Answers / How to calculate spin-resolved current-coltage(i-v)characterisrics?
« on: November 22, 2023, 04:14 »
I'm trying to calculate the nature of spin-electron transport in chiral molecules. I first made a conjecture for the ground state using SGGA. Where the initial states are set to parallel states. Then spin-orbit coupling was introduced to calculate the spin transport properties, IV curves. Why can't I get get spin up and spin down currents respectively?

5
##### General Questions and Answers / Re: I-V of the nanowire is not able to converged
« on: May 19, 2023, 02:52 »
It is hard to support this problem because it really depends on the configurations.
Can you try very small steps such as 0.01V, 0.02V instead of 0.2V?
hello!sir. i am a new user of Quantum ATK, could you tell me  how to know  the device is correct?I will be grateful if you could give me some useful questions

6
##### General Questions and Answers / Re: I-V of the nanowire is not able to converged
« on: May 19, 2023, 02:49 »
Thank you sir
but i have tried to compute at smaller steps 0, 0.05, 0.1, 0.15, 0.2 etc, but i face a problem i.e. it is converged at 0, 0.05, 0.1, 0.15, 0.2, 0.35 but not converged at some points 0.25, 0.3V etc. please suggest how to converged at that points.
Hi! Have you solved this question? I also met this question these days. i feel it is not easy to solve this ?could you give me some advise?

Pages: [1]