Dear Experts,
I am running an electronic transport calculation for twisted bilayer MoS2 at the DFTB level of theory. The unit cell contains approx 2700 atom, building the DeviceConfiguration lead to approx 7800 atoms.
I am using QATK v2021.06 on Debian GNU/Linux 9 / Kernel 4.9.0-14-amd64 / CPU Core(TM) i7-6700 /16BG Memory /16 GB swap
Here is part of my script:
# 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=[46.9136, 46.9136]*Angstrom,
transverse_electrode_repetitions=[[1, 1], [1, 1]],
)
# -------------------------------------------------------------
# Calculator
# -------------------------------------------------------------
#----------------------------------------
# Hamiltonian Parametrization
#----------------------------------------
hamiltonian_parametrization = SlaterKosterHamiltonianParametrization(
basis_set=DFTBDirectory(r"/home/h0/algh988c/QN13"))
#----------------------------------------
# Pair Potentials
#----------------------------------------
pair_potentials = DFTBDirectory(r"/home/h0/algh988c/QN13")
#----------------------------------------
# Numerical Accuracy Settings
#----------------------------------------
device_k_point_sampling = MonkhorstPackGrid(
nc=98,
)
device_numerical_accuracy_parameters = NumericalAccuracyParameters(
k_point_sampling=device_k_point_sampling,
density_mesh_cutoff=10.0*Hartree,
)
#----------------------------------------
# Device Algorithm Settings
#----------------------------------------
self_energy_calculator_real = KrylovSelfEnergy()
non_equilibrium_method = GreensFunction(
processes_per_contour_point=2,
)
equilibrium_method = GreensFunction(
processes_per_contour_point=2,
)
device_algorithm_parameters = DeviceAlgorithmParameters(
self_energy_calculator_real=self_energy_calculator_real,
non_equilibrium_method=non_equilibrium_method,
equilibrium_method=equilibrium_method,
store_basis_on_grid=True,
)
#----------------------------------------
# Device Calculator
#----------------------------------------
calculator = DeviceSemiEmpiricalCalculator(
hamiltonian_parametrization=hamiltonian_parametrization,
pair_potentials=pair_potentials,
numerical_accuracy_parameters=device_numerical_accuracy_parameters,
device_algorithm_parameters=device_algorithm_parameters,
)
device_configuration.setCalculator(calculator)
nlprint(device_configuration)
device_configuration.update()
nlsave('389.rigid.hdf5', device_configuration)
# -------------------------------------------------------------
# Transmission Spectrum
# -------------------------------------------------------------
kpoint_grid = MonkhorstPackGrid()
transmission_spectrum = TransmissionSpectrum(
configuration=device_configuration,
energies=numpy.linspace(1.5, 2.5, 150)*eV,
kpoints=kpoint_grid,
energy_zero_parameter=AverageFermiLevel,
infinitesimal=1e-06*eV,
self_energy_calculator=KrylovSelfEnergy(),
enforce_zero_in_band_gap=True,
)
nlsave('389.rigid.hdf5', transmission_spectrum)
nlprint(transmission_spectrum)
K-point grid is 1 x 1 x 98, and number of irreducible k-points are 50. Also the total number of contour points are 150.
I specified the following Slurm setting
#SBATCH --nodes=1
#SBATCH --ntasks=300
#SBATCH --cpus-per-task=1
#SBATCH --mem=32000000
Despite writting processes_per_contour_point=2 in the manuscript, the calculation ran into idle.
Please take a look at the log file
The reason I am trying to use processes_per_contour_point=2 is to speed up my calculation!
For the past month all of my try ran into either out-of-time limit error(after 7 days) or out-of-memory error. That's why I am using KrylovSelfEnergy.
Suggestions are appreciated,
Cheers, A