DFT-EFE
 
Loading...
Searching...
No Matches
KohnShamDFT.h
Go to the documentation of this file.
1/******************************************************************************
2 * Copyright (c) 2021. *
3 * The Regents of the University of Michigan and DFT-EFE developers. *
4 * *
5 * This file is part of the DFT-EFE code. *
6 * *
7 * DFT-EFE is free software: you can redistribute it and/or modify *
8 * it under the terms of the Lesser GNU General Public License as *
9 * published by the Free Software Foundation, either version 3 of *
10 * the License, or (at your option) any later version. *
11 * *
12 * DFT-EFE is distributed in the hope that it will be useful, but *
13 * WITHOUT ANY WARRANTY; without even the implied warranty *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
15 * See the Lesser GNU General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU Lesser General Public *
18 * License at the top level of DFT-EFE distribution. If not, see *
19 * <https://www.gnu.org/licenses/>. *
20 ******************************************************************************/
21
22/*
23 * @author Avirup Sircar
24 */
25
26#ifndef dftefeKohnShamDFT_h
27#define dftefeKohnShamDFT_h
28
29#include <variant>
32#include <ksdft/KineticFE.h>
39#include <ksdft/MixingScheme.h>
40#include <utils/Profiler.h>
42
43namespace dftefe
44{
45 namespace ksdft
46 {
47 template <typename ValueTypeElectrostaticsCoeff,
48 typename ValueTypeElectrostaticsBasis,
49 typename ValueTypeWaveFunctionCoeff,
50 typename ValueTypeWaveFunctionBasis,
51 utils::MemorySpace memorySpace,
52 size_type dim>
54 {
55 public:
56 using HamiltonianPtrVariant = std::variant<
57 std::shared_ptr<Hamiltonian<float, memorySpace>>,
58 std::shared_ptr<Hamiltonian<double, memorySpace>>,
59 std::shared_ptr<Hamiltonian<std::complex<float>, memorySpace>>,
60 std::shared_ptr<Hamiltonian<std::complex<double>, memorySpace>>>;
61
63 linearAlgebra::blasLapack::scalar_type<ValueTypeElectrostaticsBasis,
64 ValueTypeWaveFunctionBasis>;
66 linearAlgebra::blasLapack::scalar_type<ValueTypeElectrostaticsCoeff,
67 ValueTypeWaveFunctionCoeff>;
68 using ValueType =
72 using OpContext = typename linearAlgebra::HermitianIterativeEigenSolver<
75 memorySpace>::OpContext;
76
77 public:
78 // used if analytical vself canellation route taken
80 /* Atom related info */
81 const std::vector<utils::Point> &atomCoordinates,
82 const std::vector<double> & atomCharges,
83 const std::vector<double> & smearedChargeRadius,
84 const size_type numElectrons,
85 /* SCF related info */
86 const size_type numWantedEigenvalues,
87 const double smearingTemperature,
88 const double fermiEnergyTolerance,
89 const double fracOccupancyTolerance,
90 const double eigenSolveResidualTolerance,
91 const double scfDensityResidualNormTolerance,
92 const size_type maxChebyshevFilterPass,
93 const size_type maxSCFIter,
94 const bool evaluateEnergyEverySCF,
95 /* Mixing related info */
96 const size_type mixingHistory,
97 const double mixingParameter,
98 const bool isAdaptiveAndersonMixingParameter,
99 /* Electron density related info */
101 &electronChargeDensityInput,
102 /* Basis related info */
103 /* Field boundary */
104 std::shared_ptr<
105 const basis::FEBasisManager<ValueTypeElectrostaticsCoeff,
106 ValueTypeElectrostaticsBasis,
107 memorySpace,
108 dim>> feBMTotalCharge,
109 std::shared_ptr<const basis::FEBasisManager<ValueTypeWaveFunctionCoeff,
110 ValueTypeWaveFunctionBasis,
111 memorySpace,
112 dim>> feBMWaveFn,
113 /* Field data storages poisson solves*/
114 std::shared_ptr<
115 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
116 memorySpace>>
117 feBDTotalChargeStiffnessMatrix,
118 std::shared_ptr<
119 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
120 memorySpace>> feBDNuclearChargeRhs,
121 std::shared_ptr<
122 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
123 memorySpace>> feBDElectronicChargeRhs,
124 /* Field data storages eigen solve*/
125 std::shared_ptr<
126 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
127 memorySpace>> feBDKineticHamiltonian,
128 std::shared_ptr<
129 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
130 memorySpace>>
131 feBDElectrostaticsHamiltonian,
132 std::shared_ptr<
133 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
134 memorySpace>> feBDEXCHamiltonian,
135 /* PSP/AE related info */
136 const utils::ScalarSpatialFunctionReal &externalPotentialFunction,
137 /* linAgOperations Context*/
139 linAlgOpContext,
140 /* basis overlap related info */
141 const OpContext &MContextForInv =
144 memorySpace>(),
145 const OpContext &MContext =
148 memorySpace>(),
149 const OpContext &MInvContext =
152 memorySpace>(),
153 bool isResidualChebyshevFilter = true);
154
155
156 // used if numerical poisson solve vself canellation route taken
158 /* Atom related info */
159 const std::vector<utils::Point> &atomCoordinates,
160 const std::vector<double> & atomCharges,
161 const std::vector<double> & smearedChargeRadius,
162 const size_type numElectrons,
163 /* SCF related info */
164 const size_type numWantedEigenvalues,
165 const double smearingTemperature,
166 const double fermiEnergyTolerance,
167 const double fracOccupancyTolerance,
168 const double eigenSolveResidualTolerance,
169 const double scfDensityResidualNormTolerance,
170 const size_type maxChebyshevFilterPass,
171 const size_type maxSCFIter,
172 const bool evaluateEnergyEverySCF,
173 /* Mixing related info */
174 const size_type mixingHistory,
175 const double mixingParameter,
176 const bool isAdaptiveAndersonMixingParameter,
177 /* Electron density related info */
179 &electronChargeDensityInput,
180 /* Basis related info */
181 /* Field boundary */
182 std::shared_ptr<
183 const basis::FEBasisManager<ValueTypeElectrostaticsCoeff,
184 ValueTypeElectrostaticsBasis,
185 memorySpace,
186 dim>> feBMTotalCharge,
187 std::shared_ptr<const basis::FEBasisManager<ValueTypeWaveFunctionCoeff,
188 ValueTypeWaveFunctionBasis,
189 memorySpace,
190 dim>> feBMWaveFn,
191 /* Field data storages poisson solves */
192 std::shared_ptr<
193 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
194 memorySpace>>
195 feBDTotalChargeStiffnessMatrix,
196 std::shared_ptr<
197 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
198 memorySpace>> feBDNuclearChargeRhs,
199 std::shared_ptr<
200 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
201 memorySpace>> feBDElectronicChargeRhs,
202 std::shared_ptr<
203 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
204 memorySpace>>
205 feBDNuclChargeStiffnessMatrixNumSol,
206 std::shared_ptr<
207 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
208 memorySpace>> feBDNuclChargeRhsNumSol,
209 /* Field data storages eigen solve*/
210 std::shared_ptr<
211 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
212 memorySpace>> feBDKineticHamiltonian,
213 std::shared_ptr<
214 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
215 memorySpace>>
216 feBDElectrostaticsHamiltonian,
217 std::shared_ptr<
218 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
219 memorySpace>> feBDEXCHamiltonian,
220 /* PSP/AE related info */
221 const utils::ScalarSpatialFunctionReal &externalPotentialFunction,
222 /* linAgOperations Context*/
224 linAlgOpContext,
225 /* basis overlap related info */
226 const OpContext &MContextForInv =
229 memorySpace>(),
230 const OpContext &MContext =
233 memorySpace>(),
234 const OpContext &MInvContext =
237 memorySpace>(),
238 bool isResidualChebyshevFilter = true);
239
240 // used if delta rho approach is taken with phi total from 1D KS solve
241 // with analytical vself energy cancellation
243 /* Atom related info */
244 const std::vector<utils::Point> &atomCoordinates,
245 const std::vector<double> & atomCharges,
246 const std::vector<double> & smearedChargeRadius,
247 const size_type numElectrons,
248 /* SCF related info */
249 const size_type numWantedEigenvalues,
250 const double smearingTemperature,
251 const double fermiEnergyTolerance,
252 const double fracOccupancyTolerance,
253 const double eigenSolveResidualTolerance,
254 const double scfDensityResidualNormTolerance,
255 const size_type maxChebyshevFilterPass,
256 const size_type maxSCFIter,
257 const bool evaluateEnergyEverySCF,
258 /* Mixing related info */
259 const size_type mixingHistory,
260 const double mixingParameter,
261 const bool isAdaptiveAndersonMixingParameter,
262 // /* Basis related info */
263 // const quadrature::QuadratureValuesContainer<RealType, memorySpace>
264 // &electronChargeDensityInput,
265 // /* Atomic Field for delta rho */
266 // const quadrature::QuadratureValuesContainer<
267 // ValueTypeElectrostaticsCoeff,
268 // memorySpace> &atomicTotalElecPotNuclearQuad,
269 // const quadrature::QuadratureValuesContainer<
270 // ValueTypeElectrostaticsCoeff,
271 // memorySpace> &atomicTotalElecPotElectronicQuad,
272 /* Atomic Field for delta rho ; Here vTotal atomic scalar sp fn.*/
274 &atomicTotalElectroPotentialFunction,
276 &atomicElectronicChargeDensityFunction,
277 /* Field boundary */
278 std::shared_ptr<
279 const basis::FEBasisManager<ValueTypeElectrostaticsCoeff,
280 ValueTypeElectrostaticsBasis,
281 memorySpace,
282 dim>> feBMTotalCharge,
283 std::shared_ptr<const basis::FEBasisManager<ValueTypeWaveFunctionCoeff,
284 ValueTypeWaveFunctionBasis,
285 memorySpace,
286 dim>> feBMWaveFn,
287 /* Field data storages poisson solves*/
288 std::shared_ptr<
289 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
290 memorySpace>>
291 feBDTotalChargeStiffnessMatrix,
292 std::shared_ptr<
293 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
294 memorySpace>> feBDNuclearChargeRhs,
295 std::shared_ptr<
296 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
297 memorySpace>> feBDElectronicChargeRhs,
298 /* Field data storages eigen solve*/
299 std::shared_ptr<
300 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
301 memorySpace>> feBDKineticHamiltonian,
302 std::shared_ptr<
303 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
304 memorySpace>>
305 feBDElectrostaticsHamiltonian,
306 std::shared_ptr<
307 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
308 memorySpace>> feBDEXCHamiltonian,
309 /* PSP/AE related info */
310 const utils::ScalarSpatialFunctionReal &externalPotentialFunction,
311 /* linAgOperations Context*/
313 linAlgOpContext,
314 /* basis overlap related info */
315 const OpContext &MContextForInv =
318 memorySpace>(),
319 const OpContext &MContext =
322 memorySpace>(),
323 const OpContext &MInvContext =
326 memorySpace>(),
327 bool isResidualChebyshevFilter = true);
328
331 /* Atom related info */
332 const std::vector<utils::Point> &atomCoordinates,
333 const std::vector<double> & atomCharges,
334 const std::vector<std::string> & atomSymbolVec,
335 const std::vector<double> & smearedChargeRadius,
336 const size_type numElectrons,
337 /* SCF related info */
338 const size_type numWantedEigenvalues,
339 const double smearingTemperature,
340 const double fermiEnergyTolerance,
341 const double fracOccupancyTolerance,
342 const double eigenSolveResidualTolerance,
343 const double scfDensityResidualNormTolerance,
344 const size_type maxChebyshevFilterPass,
345 const size_type maxSCFIter,
346 const bool evaluateEnergyEverySCF,
347 /* Mixing related info */
348 const size_type mixingHistory,
349 const double mixingParameter,
350 const bool isAdaptiveAndersonMixingParameter,
351 /* Basis related info */
352 /* Field boundary */
353 std::shared_ptr<
354 const basis::FEBasisManager<ValueTypeElectrostaticsCoeff,
355 ValueTypeElectrostaticsBasis,
356 memorySpace,
357 dim>> feBMTotalCharge,
358 std::shared_ptr<const basis::FEBasisManager<ValueTypeWaveFunctionCoeff,
359 ValueTypeWaveFunctionBasis,
360 memorySpace,
361 dim>> feBMWaveFn,
362 /* Field data storages poisson solves*/
363 std::shared_ptr<
364 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
365 memorySpace>>
366 feBDTotalChargeStiffnessMatrix,
367 std::shared_ptr<
368 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
369 memorySpace>> feBDNuclearChargeRhs,
370 std::shared_ptr<
371 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
372 memorySpace>> feBDElectronicChargeRhs,
373 /* Field data storages eigen solve*/
374 std::shared_ptr<
375 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
376 memorySpace>> feBDKineticHamiltonian,
377 std::shared_ptr<
378 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
379 memorySpace>>
380 feBDElectrostaticsHamiltonian,
381 std::shared_ptr<
382 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
383 memorySpace>> feBDEXCHamiltonian,
384 /* PSP related info */
385 std::shared_ptr<
386 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
387 memorySpace>>
388 feBDAtomCenterNonLocalOperator,
389 const std::map<std::string, std::string> &atomSymbolToPSPFilename,
390 /* linAgOperations Context*/
392 linAlgOpContext,
393 /* basis overlap related info */
394 const OpContext &MContextForInv =
397 memorySpace>(),
398 const OpContext &MContext =
401 memorySpace>(),
402 const OpContext &MInvContext =
405 memorySpace>(),
406 bool isResidualChebyshevFilter = true);
407
408
409 // used if delta rho with PSP approach is taken with phi total from 1D KS
410 // solve with analytical vself energy cancellation
412 /* Atom related info */
413 const std::vector<utils::Point> &atomCoordinates,
414 const std::vector<double> & atomCharges,
415 const std::vector<std::string> & atomSymbolVec,
416 const std::vector<double> & smearedChargeRadius,
417 const size_type numElectrons,
418 /* SCF related info */
419 const size_type numWantedEigenvalues,
420 const double smearingTemperature,
421 const double fermiEnergyTolerance,
422 const double fracOccupancyTolerance,
423 const double eigenSolveResidualTolerance,
424 const double scfDensityResidualNormTolerance,
425 const size_type maxChebyshevFilterPass,
426 const size_type maxSCFIter,
427 const bool evaluateEnergyEverySCF,
428 /* Mixing related info */
429 const size_type mixingHistory,
430 const double mixingParameter,
431 const bool isAdaptiveAndersonMixingParameter,
432 /* Atomic Field for delta rho ; Here vTotal atomic scalar sp fn.*/
434 &atomicTotalElectroPotentialFunction,
436 &atomicElectronicChargeDensityFunction,
437 /* Field boundary */
438 std::shared_ptr<
439 const basis::FEBasisManager<ValueTypeElectrostaticsCoeff,
440 ValueTypeElectrostaticsBasis,
441 memorySpace,
442 dim>> feBMTotalCharge,
443 std::shared_ptr<const basis::FEBasisManager<ValueTypeWaveFunctionCoeff,
444 ValueTypeWaveFunctionBasis,
445 memorySpace,
446 dim>> feBMWaveFn,
447 /* Field data storages poisson solves*/
448 std::shared_ptr<
449 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
450 memorySpace>>
451 feBDTotalChargeStiffnessMatrix,
452 std::shared_ptr<
453 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
454 memorySpace>> feBDNuclearChargeRhs,
455 std::shared_ptr<
456 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
457 memorySpace>> feBDElectronicChargeRhs,
458 /* Field data storages eigen solve*/
459 std::shared_ptr<
460 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
461 memorySpace>> feBDKineticHamiltonian,
462 std::shared_ptr<
463 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
464 memorySpace>>
465 feBDElectrostaticsHamiltonian,
466 std::shared_ptr<
467 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
468 memorySpace>> feBDEXCHamiltonian,
469 /* PSP related info */
470 std::shared_ptr<
471 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
472 memorySpace>>
473 feBDAtomCenterNonLocalOperator,
474 const std::map<std::string, std::string> &atomSymbolToPSPFilename,
475 /* linAgOperations Context*/
477 linAlgOpContext,
478 /* basis overlap related info */
479 const OpContext &MContextForInv =
482 memorySpace>(),
483 const OpContext &MContext =
486 memorySpace>(),
487 const OpContext &MInvContext =
490 memorySpace>(),
491 bool isResidualChebyshevFilter = true);
492
493 ~KohnShamDFT();
494
495 void
496 solve();
497
498 double
500
501 private:
503 std::vector<RealType> d_occupation;
504 const double d_SCFTol;
506 std::shared_ptr<
509 std::shared_ptr<DensityCalculator<ValueTypeWaveFunctionBasis,
510 ValueTypeWaveFunctionCoeff,
511 memorySpace,
512 dim>>
514 std::shared_ptr<KohnShamOperatorContextFE<ValueTypeElectrostaticsCoeff,
515 ValueTypeElectrostaticsBasis,
516 ValueTypeWaveFunctionCoeff,
517 ValueTypeWaveFunctionBasis,
518 memorySpace,
519 dim>>
521 std::shared_ptr<ExchangeCorrelationFE<ValueTypeWaveFunctionBasis,
522 ValueTypeWaveFunctionCoeff,
523 memorySpace,
524 dim>>
526 std::shared_ptr<ElectrostaticFE<ValueTypeElectrostaticsBasis,
527 ValueTypeElectrostaticsCoeff,
528 ValueTypeWaveFunctionBasis,
529 memorySpace,
530 dim>>
532 std::shared_ptr<KineticFE<ValueTypeWaveFunctionBasis,
533 ValueTypeWaveFunctionCoeff,
534 memorySpace,
535 dim>>
537
538 std::shared_ptr<const basis::FEBasisManager<ValueTypeWaveFunctionCoeff,
539 ValueTypeWaveFunctionBasis,
540 memorySpace,
541 dim>>
543 std::vector<RealType> d_kohnShamEnergies;
556 std::shared_ptr<linearAlgebra::LinAlgOpContext<memorySpace>>
563
564 std::shared_ptr<
565 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
566 memorySpace>>
568
573
574 std::shared_ptr<ElectrostaticExcFE<ValueTypeElectrostaticsCoeff,
575 ValueTypeElectrostaticsBasis,
576 ValueTypeWaveFunctionCoeff,
577 ValueTypeWaveFunctionBasis,
578 memorySpace,
579 dim>>
583
584 std::shared_ptr<atoms::AtomSphericalDataContainer>
586
588
589 quadrature::QuadratureValuesContainer<ValueTypeElectrostaticsCoeff,
590 memorySpace>
592
593 std::shared_ptr<linearAlgebra::ElpaScalapackManager> d_elpaScala;
594
595 }; // end of KohnShamDFT
596 } // end of namespace ksdft
597} // end of namespace dftefe
598#include "KohnShamDFT.t.cpp"
599#endif // dftefeKohnShamDFT_h
An abstract class to store and access data for a given basis, such as the basis function values on a ...
Definition: FEBasisDataStorage.h:54
An abstract class to encapsulate the partitioning of a finite element basis across multiple processor...
Definition: FEBasisManager.h:44
Definition: DensityCalculator.h:42
Definition: ElectrostaticExcFE.h:54
A derived class of linearAlgebra::OperatorContext to encapsulate the action of a discrete operator on...
Definition: ElectrostaticFE.h:65
Definition: ExchangeCorrelationFE.h:51
Definition: KineticFE.h:48
Definition: KohnShamDFT.h:54
const utils::mpi::MPIComm & d_mpiCommDomain
Definition: KohnShamDFT.h:554
std::vector< RealType > d_kohnShamEnergies
Definition: KohnShamDFT.h:543
std::shared_ptr< linearAlgebra::ElpaScalapackManager > d_elpaScala
Definition: KohnShamDFT.h:593
quadrature::QuadratureValuesContainer< RealType, memorySpace > d_coreCorrDensUPF
Definition: KohnShamDFT.h:551
linearAlgebra::Vector< ValueTypeWaveFunctionCoeff, memorySpace > d_lanczosGuess
Definition: KohnShamDFT.h:559
linearAlgebra::blasLapack::real_type< ValueType > RealType
Definition: KohnShamDFT.h:71
const size_type d_numElectrons
Definition: KohnShamDFT.h:562
bool d_isOEFEBasis
Definition: KohnShamDFT.h:582
std::shared_ptr< atoms::AtomSphericalDataContainer > d_atomSphericalDataContainerPSP
Definition: KohnShamDFT.h:585
const OpContext * d_MContext
Definition: KohnShamDFT.h:553
quadrature::QuadratureValuesContainer< ValueTypeElectrostaticsCoeff, memorySpace > d_atomicTotalElecPotElectronicQuad
Definition: KohnShamDFT.h:591
const size_type d_numWantedEigenvalues
Definition: KohnShamDFT.h:502
bool d_isSolved
Definition: KohnShamDFT.h:570
std::shared_ptr< const basis::FEBasisManager< ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim > > d_feBMWaveFn
Definition: KohnShamDFT.h:542
bool d_isONCVNonLocPSP
Definition: KohnShamDFT.h:587
std::vector< RealType > d_occupation
Definition: KohnShamDFT.h:503
bool d_isNlcc
Definition: KohnShamDFT.h:587
MixingScheme< RealType, RealType > d_mixingScheme
Definition: KohnShamDFT.h:555
linearAlgebra::blasLapack::scalar_type< ValueTypeOperator, ValueTypeOperator > ValueType
Definition: KohnShamDFT.h:70
quadrature::QuadratureValuesContainer< ValueTypeElectrostaticsCoeff, memorySpace > d_atomicTotalElecPotNuclearQuad
Definition: KohnShamDFT.h:591
bool d_isAdaptiveAndersonMixingParameter
Definition: KohnShamDFT.h:547
utils::MemoryStorage< RealType, utils::MemorySpace::HOST > d_jxwDataHost
Definition: KohnShamDFT.h:505
quadrature::QuadratureValuesContainer< RealType, memorySpace > d_densityOutQuadValues
Definition: KohnShamDFT.h:550
size_type d_mixingHistory
Definition: KohnShamDFT.h:545
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeWaveFunctionBasis, memorySpace > > d_feBDEXCHamiltonian
Definition: KohnShamDFT.h:567
bool d_isResidualChebyshevFilter
Definition: KohnShamDFT.h:581
double d_mixingParameter
Definition: KohnShamDFT.h:546
RealType d_groundStateEnergy
Definition: KohnShamDFT.h:569
size_type d_numMaxSCFIter
Definition: KohnShamDFT.h:552
typename linearAlgebra::HermitianIterativeEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::OpContext OpContext
Definition: KohnShamDFT.h:75
std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > > d_linAlgOpContext
Definition: KohnShamDFT.h:557
std::shared_ptr< KineticFE< ValueTypeWaveFunctionBasis, ValueTypeWaveFunctionCoeff, memorySpace, dim > > d_hamitonianKin
Definition: KohnShamDFT.h:536
linearAlgebra::blasLapack::scalar_type< ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionBasis > ValueTypeOperator
Definition: KohnShamDFT.h:64
quadrature::QuadratureValuesContainer< RealType, memorySpace > d_densityInQuadValues
Definition: KohnShamDFT.h:550
std::shared_ptr< KohnShamEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace > > d_ksEigSolve
Definition: KohnShamDFT.h:508
bool d_evaluateEnergyEverySCF
Definition: KohnShamDFT.h:548
utils::ConditionalOStream d_rootCout
Definition: KohnShamDFT.h:544
std::shared_ptr< ElectrostaticExcFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim > > d_hamiltonianElectroExc
Definition: KohnShamDFT.h:580
utils::Profiler d_p
Definition: KohnShamDFT.h:571
std::variant< std::shared_ptr< Hamiltonian< float, memorySpace > >, std::shared_ptr< Hamiltonian< double, memorySpace > >, std::shared_ptr< Hamiltonian< std::complex< float >, memorySpace > >, std::shared_ptr< Hamiltonian< std::complex< double >, memorySpace > > > HamiltonianPtrVariant
Definition: KohnShamDFT.h:60
const double d_SCFTol
Definition: KohnShamDFT.h:504
void solve()
Definition: KohnShamDFT.t.cpp:2183
quadrature::QuadratureValuesContainer< RealType, memorySpace > d_densityResidualQuadValues
Definition: KohnShamDFT.h:551
bool d_isPSPCalculation
Definition: KohnShamDFT.h:572
const OpContext * d_MInvContext
Definition: KohnShamDFT.h:553
linearAlgebra::MultiVector< ValueTypeWaveFunctionCoeff, memorySpace > d_kohnShamWaveFunctions
Definition: KohnShamDFT.h:561
std::shared_ptr< DensityCalculator< ValueTypeWaveFunctionBasis, ValueTypeWaveFunctionCoeff, memorySpace, dim > > d_densCalc
Definition: KohnShamDFT.h:513
~KohnShamDFT()
Definition: KohnShamDFT.t.cpp:2166
std::shared_ptr< KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim > > d_hamitonianOperator
Definition: KohnShamDFT.h:520
double getGroundStateEnergy()
Definition: KohnShamDFT.t.cpp:2687
linearAlgebra::MultiVector< ValueTypeWaveFunctionCoeff, memorySpace > d_waveFunctionSubspaceGuess
Definition: KohnShamDFT.h:561
quadrature::QuadratureValuesContainer< RealType, memorySpace > d_coreCorrectedDensity
Definition: KohnShamDFT.h:551
std::shared_ptr< ExchangeCorrelationFE< ValueTypeWaveFunctionBasis, ValueTypeWaveFunctionCoeff, memorySpace, dim > > d_hamitonianXC
Definition: KohnShamDFT.h:525
linearAlgebra::blasLapack::scalar_type< ValueTypeElectrostaticsCoeff, ValueTypeWaveFunctionCoeff > ValueTypeOperand
Definition: KohnShamDFT.h:67
std::shared_ptr< ElectrostaticFE< ValueTypeElectrostaticsBasis, ValueTypeElectrostaticsCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim > > d_hamitonianElec
Definition: KohnShamDFT.h:531
Definition: KohnShamEigenSolver.h:61
A derived class of linearAlgebra::OperatorContext to encapsulate the action of a discrete Kohn-Sham o...
Definition: KohnShamOperatorContextFE.h:70
This class performs the anderson mixing in a variable agnostic way This class takes can take differen...
Definition: MixingScheme.h:61
Abstract class to encapsulate the action of a discrete operator on vectors, matrices,...
Definition: IdentityOperatorContext.h:53
Definition: LinAlgOpContext.h:38
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition: MultiVector.h:134
A class that encapsulates a vector. This is a vector in the mathematical sense and not in the sense o...
Definition: Vector.h:122
Definition: QuadratureValuesContainer.h:39
Provides an interface to print based on whether a certain condition is met or not....
Definition: ConditionalOStream.h:47
Definition: Function.h:10
Definition: MemoryStorage.h:38
Definition: Profiler.h:44
typeInternal::real_type< ValueType > real_type
Definition: BlasLapackTypedef.h:177
typeInternal::scalar_type< ValueType1, ValueType2 > scalar_type
Definition: BlasLapackTypedef.h:183
int MPIComm
Definition: MPITypes.h:84
MemorySpace
Definition: MemorySpaceType.h:37
dealii includes
Definition: AtomFieldDataSpherical.cpp:31
unsigned int size_type
Definition: TypeConfig.h:8