Skip to content

Commit 3c71e40

Browse files
committed
added assert check for wavefunctions storage size exceeding integer bounds
1 parent ceb05e3 commit 3c71e40

File tree

1 file changed

+18
-16
lines changed

1 file changed

+18
-16
lines changed

src/dft/initElectronicFields.cc

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -92,26 +92,28 @@ namespace dftfe
9292
mpi_communicator, "Overloaded constraint matrices initialized");
9393

9494
//
95-
// initialize density and PSI/ interpolate from previous ground state
96-
// solution
95+
// initialize PSI and density
9796
//
98-
for (unsigned int kPoint = 0;
99-
kPoint < (1 + d_dftParamsPtr->spinPolarized) * d_kPointWeights.size();
100-
++kPoint)
97+
98+
AssertThrow(
99+
(1 + d_dftParamsPtr->spinPolarized) * d_kPointWeights.size() *
100+
d_numEigenValues <
101+
INT_MAX / matrix_free_data.get_vector_partitioner()->local_size(),
102+
dealii::ExcMessage(
103+
"DFT-FE error: size of local wavefunctions storage exceeds integer bounds. Please increase number of MPI tasks"));
104+
105+
d_eigenVectorsFlattenedHost.resize(
106+
(d_numEigenValues *
107+
matrix_free_data.get_vector_partitioner()->local_size()) *
108+
(1 + d_dftParamsPtr->spinPolarized) * d_kPointWeights.size(),
109+
dataTypes::number(0.0));
110+
if (d_numEigenValuesRR != d_numEigenValues)
101111
{
102-
d_eigenVectorsFlattenedHost.resize(
103-
(d_numEigenValues *
104-
matrix_free_data.get_vector_partitioner()->local_size()) *
112+
d_eigenVectorsRotFracDensityFlattenedHost.resize(
113+
d_numEigenValuesRR *
114+
matrix_free_data.get_vector_partitioner()->local_size() *
105115
(1 + d_dftParamsPtr->spinPolarized) * d_kPointWeights.size(),
106116
dataTypes::number(0.0));
107-
if (d_numEigenValuesRR != d_numEigenValues)
108-
{
109-
d_eigenVectorsRotFracDensityFlattenedHost.resize(
110-
d_numEigenValuesRR *
111-
matrix_free_data.get_vector_partitioner()->local_size() *
112-
(1 + d_dftParamsPtr->spinPolarized) * d_kPointWeights.size(),
113-
dataTypes::number(0.0));
114-
}
115117
}
116118

117119
pcout << std::endl

0 commit comments

Comments
 (0)