QuantumATK Forum
QuantumATK => General Questions and Answers => Topic started by: juwon on November 22, 2023, 07:15
-
Hi, I am trying to calculate the fatbandstructure of a heterostructure which includes two different 2D layers.
The system has about 700 atoms including the ghost atoms, since we are trying to estimate the workfunction (or Fermi level) more accurately.
Anyway, the calculator I have set was chemical potential, projected density of states, and fatbandstructure.
The rest of the calculations are completed, but I got the following error sign...
File "/home/JW/quantumatk/MoS2-WTe2/vdW_study_without_zdirection_constant/Output/MoS2_WTe2_60degree_ortho_pointcheck_results_231121_h51vapb4/MoS2_WTe2_60degree_ortho_pointcheck_results.py", line 1041, in <module>
fat_bandstructure = FatBandstructure(
File "zipdir/NL/Analysis/FatBandstructure.py", line 207, in __init__
File "zipdir/NL/Calculators/DensityFunctionalTheory/LCAOCalculator/Analysis/Projections.py", line 170, in calculateEigenvaluesAndProjectionWeights
File "zipdir/NL/ComputerScienceUtilities/ParallelTools/StaticTaskScheduler.py", line 229, in run
File "zipdir/NL/ComputerScienceUtilities/ParallelTools/StaticTaskScheduler.py", line 282, in __runInParallelMode
File "zipdir/NL/ComputerScienceUtilities/ParallelTools/StaticTaskScheduler.py", line 304, in __performTask
File "zipdir/NL/Calculators/DensityFunctionalTheory/LCAOCalculator/Analysis/Projections.py", line 155, in kPointTask
File "zipdir/NL/Calculators/DensityFunctionalTheory/LCAOCalculator/Analysis/Projections.py", line 449, in calculateProjectionWeightsAndEigenvalues
TypeError: unsupported operand type(s) for *: 'ComplexMatrix' and 'ComplexMatrix'
application called MPI_Abort(MPI_COMM_WORLD, 1) - process 35
Has anyone seen this kind of error? Help me, please :-[
-
Which version of the code are you using? Ideally, if you can share the Python input file, we can look at this, as it seems like a bug, but it could already have been fixed in newer versions. If you don't want to share the script publicly, you can email it.
-
Thank you for your reply.
I am using the 2022-12 version of quantumATK, and below is my input python file.
# %% MoS2_WTe2_60degree_ortho_pointcheck
[atomic configuration ... info is deleted because of the character limitation]
# %% Set LCAOCalculator_DFT_D3_Neu_Dir_higher_cutoff_density_new
# %% LCAOCalculator
#----------------------------------------
# Exchange-Correlation
#----------------------------------------
exchange_correlation = GGA.PBE
correction_extension = GrimmeDFTD3(
maximum_neighbour_distance=60.0*Angstrom,
exchange_correlation=exchange_correlation
)
k_point_sampling = MonkhorstPackGrid(
na=2,
nb=1,
nc=1
)
numerical_accuracy_parameters = NumericalAccuracyParameters(
k_point_sampling=k_point_sampling
)
poisson_solver = FastFourier2DSolver(
boundary_conditions=[
[PeriodicBoundaryCondition(), PeriodicBoundaryCondition()],
[PeriodicBoundaryCondition(), PeriodicBoundaryCondition()],
[NeumannBoundaryCondition(), DirichletBoundaryCondition()]
]
)
checkpoint_handler = NoCheckpointHandler
calculator = LCAOCalculator(
exchange_correlation=exchange_correlation,
numerical_accuracy_parameters=numerical_accuracy_parameters,
poisson_solver=poisson_solver,
checkpoint_handler=checkpoint_handler,
correction_extension=correction_extension
)
# %% Set Calculator
mos2_wte2_60degree_ortho_pointcheck.setCalculator(calculator)
mos2_wte2_60degree_ortho_pointcheck.update()
nlsave('MoS2_WTe2_60degree_ortho_pointcheck_results.hdf5', mos2_wte2_60degree_ortho_pointcheck)
# %% ChemicalPotential
chemical_potential = ChemicalPotential(
configuration=mos2_wte2_60degree_ortho_pointcheck
)
nlsave('MoS2_WTe2_60degree_ortho_pointcheck_results.hdf5', chemical_potential)
# %% ProjectedDensityOfStates_elements
kpoints = MonkhorstPackGrid(
na=3,
nb=2,
nc=1
)
projected_density_of_states = ProjectedDensityOfStates(
configuration=mos2_wte2_60degree_ortho_pointcheck,
kpoints=kpoints,
projections=ProjectOnElements,
energies=numpy.linspace(-4.0, 4.0, 801)*eV,
spectrum_method=GaussianBroadening(
broadening=0.01*eV
)
)
nlsave('MoS2_WTe2_60degree_ortho_pointcheck_results.hdf5', projected_density_of_states)
# %% FatBandstructure_elements
fat_bandstructure = FatBandstructure(
configuration=mos2_wte2_60degree_ortho_pointcheck,
route=('G', 'Y', 'C', 'X', 'G', 'C'),
points_per_segment=100,
projections=ProjectOnElements
)
nlsave('MoS2_WTe2_60degree_ortho_pointcheck_results.hdf5', fat_bandstructure)
Thank you in advance.
-
We are looking into this, but it doesn't seem to be a general issue, so it could be related to the specific structure you used. Therefore, we need the full script, you can attach it to the post, rather than paste it in the message, then there is no problem with character limit.
-
Thank you , and I attached the python file of my code.
Thank you again in advance for checking out.
-
We have tried to run the system and didn't have any problem. It does use a lot of memory, so a suggestion is to reduce the number of bands above the Fermi level (50 should be enough), and maybe also the number of points on the segments. It's also possible the DOS takes up a lot of memory, so you can rerun without including that. Note that you don't need to rerun the whole calculation, just the FatBS part, replacing the "update" and "nlsave" lines with a corresponding
mos2_wte2_60degree_ortho_pointcheck = nlread("MoS2_WTe2_60degree_ortho_pointcheck_results.hdf5", BulkConfiguration)[-1]