diff --git a/src/dft/initElectronicFields.cc b/src/dft/initElectronicFields.cc index 92aa6df80..4bde1968c 100644 --- a/src/dft/initElectronicFields.cc +++ b/src/dft/initElectronicFields.cc @@ -92,26 +92,28 @@ namespace dftfe mpi_communicator, "Overloaded constraint matrices initialized"); // - // initialize density and PSI/ interpolate from previous ground state - // solution + // initialize PSI and density // - for (unsigned int kPoint = 0; - kPoint < (1 + d_dftParamsPtr->spinPolarized) * d_kPointWeights.size(); - ++kPoint) + + AssertThrow( + (1 + d_dftParamsPtr->spinPolarized) * d_kPointWeights.size() * + d_numEigenValues < + INT_MAX / matrix_free_data.get_vector_partitioner()->local_size(), + dealii::ExcMessage( + "DFT-FE error: size of local wavefunctions storage exceeds integer bounds. Please increase number of MPI tasks")); + + d_eigenVectorsFlattenedHost.resize( + (d_numEigenValues * + matrix_free_data.get_vector_partitioner()->local_size()) * + (1 + d_dftParamsPtr->spinPolarized) * d_kPointWeights.size(), + dataTypes::number(0.0)); + if (d_numEigenValuesRR != d_numEigenValues) { - d_eigenVectorsFlattenedHost.resize( - (d_numEigenValues * - matrix_free_data.get_vector_partitioner()->local_size()) * + d_eigenVectorsRotFracDensityFlattenedHost.resize( + d_numEigenValuesRR * + matrix_free_data.get_vector_partitioner()->local_size() * (1 + d_dftParamsPtr->spinPolarized) * d_kPointWeights.size(), dataTypes::number(0.0)); - if (d_numEigenValuesRR != d_numEigenValues) - { - d_eigenVectorsRotFracDensityFlattenedHost.resize( - d_numEigenValuesRR * - matrix_free_data.get_vector_partitioner()->local_size() * - (1 + d_dftParamsPtr->spinPolarized) * d_kPointWeights.size(), - dataTypes::number(0.0)); - } } pcout << std::endl diff --git a/utils/dftParameters.cc b/utils/dftParameters.cc index 51b32a929..db7db967d 100644 --- a/utils/dftParameters.cc +++ b/utils/dftParameters.cc @@ -1260,7 +1260,7 @@ namespace dftfe useMixedPrecXTHXSpectrumSplit = false; useMixedPrecSubspaceRotRR = false; useMixedPrecCommunOnlyXTHXCGSO = false; - spectrumSplitStartingScfIter = 1; + spectrumSplitStartingScfIter = 0; useELPA = false; constraintsParallelCheck = true; createConstraintsFromSerialDofhandler = true; @@ -2013,6 +2013,9 @@ namespace dftfe { spinMixingEnhancementFactor = 1.0; } + + if (numCoreWfcRR == 0) + spectrumSplitStartingScfIter = 10000; }