cannot post larger than 400k here, sent the nc file by email
I am using the following parameters:
oList["numerical_accuracy_parameters"] = NumericalAccuracyParameters(k_point_sampling=(1,1,101))
oList["iteration_control_parameters"] = IterationControlParameters(number_of_history_steps=30, tolerance=1e-4, max_steps=140)
def my_LDOSCalculator(oList):
#----------------------------------------
# Basis Set
#----------------------------------------
basis_set = [
LDABasis.Carbon_SingleZeta,
LDABasis.Boron_SingleZeta,
LDABasis.Hydrogen_SingleZeta,
LDABasis.Nitrogen_SingleZeta,
]
device_algorithm_parameters = DeviceAlgorithmParameters(
initial_density_type=NeutralAtom(electrode_constraint_length=10.0*Ang),
)
#----------------------------------------
# Electrode Calculators
#----------------------------------------
left_electrode_calculator = LCAOCalculator(
basis_set=basis_set,
numerical_accuracy_parameters=oList["numerical_accuracy_parameters"],
iteration_control_parameters=oList["iteration_control_parameters"],
)
right_electrode_calculator = LCAOCalculator(
basis_set=basis_set,
numerical_accuracy_parameters=oList["numerical_accuracy_parameters"],
iteration_control_parameters=oList["iteration_control_parameters"],
)
#----------------------------------------
# Device Calculator
#----------------------------------------
calculator = DeviceLCAOCalculator(
basis_set=basis_set,
numerical_accuracy_parameters=oList["numerical_accuracy_parameters"],
iteration_control_parameters=oList["iteration_control_parameters"],
device_algorithm_parameters=device_algorithm_parameters,
electrode_calculators=
[left_electrode_calculator, right_electrode_calculator],
)
return calculator
LDOS = LocalDeviceDensityOfStates(
configuration=device_configuration,
energy=energy,
kpoints=MonkhorstPackGrid(1,1),
contributions=All,
energy_zero_parameter=AverageFermiLevel,
infinitesimal=1e-06*eV,
self_energy_calculator=KrylovSelfEnergy(),
spin=Spin.Sum,
)
I did not show there I am also running with bias of course ... like 0.5V Vds, trying to to 0 and 0.5V Vgs
device_configuration.setMetallicRegions([metallic_region0(value = gate_voltage), metallic_region1(value = gate_voltage)] )
device_configuration.setCalculator(
calculator(electrode_voltages=(bias,0.0*Volt)),
initial_state=device_configuration)
device_configuration.update()
I tried doing what you said for doing an LDDOS calc, but I think I set something up incorrectly .. this is the error:
Traceback (most recent call last):
File "./zipdir/NL/Calculators/DeviceCalculatorInterface.py", line 192, in _update
File "./zipdir/NL/Calculators/LCAOCalculator/BaseLCAOCalculator.py", line 153, in _checkOrbitalsMatch
NLValueError: The number of orbitals must match for initializing the system. 3108 != 7252 (expected)
/home/it1/patakye/QuantumWise/atk-12.2.2/atkpython/bin/atkpython: line 3: 2345 Segmentation fault PSEUDOPOTENTIALS_PATH=$EXEC_DIR/../share/pseudopotentials PYTHONHOME=$EXEC_DIR/.. PYTHONPATH= LD_LIBRARY_PATH=$EXEC_DIR/../lib $EXEC_DIR/atkpython_exec $*
MPI Application rank 0 exited before MPI_Init() with status 139
here is my setup for the calculator:
def my_LDOSCalculator(oList):
#----------------------------------------
# Basis Set
#----------------------------------------
basis_set = [
LDABasis.Carbon_SingleZetaPolarized,
LDABasis.Boron_SingleZetaPolarized,
LDABasis.Hydrogen_SingleZetaPolarized,
LDABasis.Nitrogen_SingleZetaPolarized,
]
device_algorithm_parameters = DeviceAlgorithmParameters(
initial_density_type=EquivalentBulk(electrode_constraint_length=10.0 * Ang),
)
poisson_solver1 = MultigridSolver(
boundary_conditions=[NeumannBoundaryCondition,
DirichletBoundaryCondition,
PeriodicBoundaryCondition]
)
poisson_solver2 = MultigridSolver(
boundary_conditions=[NeumannBoundaryCondition,
DirichletBoundaryCondition,
DirichletBoundaryCondition]
)
#----------------------------------------
# Electrode Calculators
#----------------------------------------
left_electrode_calculator = LCAOCalculator(
basis_set=basis_set,
numerical_accuracy_parameters=oList["numerical_accuracy_parameters"],
iteration_control_parameters=oList["iteration_control_parameters"],
poisson_solver=poisson_solver1)
right_electrode_calculator = LCAOCalculator(
basis_set=basis_set,
numerical_accuracy_parameters=oList["numerical_accuracy_parameters"],
iteration_control_parameters=oList["iteration_control_parameters"],
poisson_solver=poisson_solver1)
#----------------------------------------
# Device Calculator
#----------------------------------------
calculator = DeviceLCAOCalculator(
basis_set=basis_set,
numerical_accuracy_parameters=oList["numerical_accuracy_parameters"],
iteration_control_parameters=oList["iteration_control_parameters"],
device_algorithm_parameters=device_algorithm_parameters,
electrode_calculators=[left_electrode_calculator, right_electrode_calculator],
poisson_solver=poisson_solver2)
return calculator