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>
41
42namespace dftefe
43{
44 namespace ksdft
45 {
46 template <typename ValueTypeElectrostaticsCoeff,
47 typename ValueTypeElectrostaticsBasis,
48 typename ValueTypeWaveFunctionCoeff,
49 typename ValueTypeWaveFunctionBasis,
50 utils::MemorySpace memorySpace,
51 size_type dim>
53 {
54 public:
55 using HamiltonianPtrVariant = std::variant<
56 std::shared_ptr<Hamiltonian<float, memorySpace>>,
57 std::shared_ptr<Hamiltonian<double, memorySpace>>,
58 std::shared_ptr<Hamiltonian<std::complex<float>, memorySpace>>,
59 std::shared_ptr<Hamiltonian<std::complex<double>, memorySpace>>>;
60
62 linearAlgebra::blasLapack::scalar_type<ValueTypeElectrostaticsBasis,
63 ValueTypeWaveFunctionBasis>;
65 linearAlgebra::blasLapack::scalar_type<ValueTypeElectrostaticsCoeff,
66 ValueTypeWaveFunctionCoeff>;
67 using ValueType =
71 using OpContext = typename linearAlgebra::HermitianIterativeEigenSolver<
74 memorySpace>::OpContext;
75
76 public:
77 // used if analytical vself canellation route taken
79 /* Atom related info */
80 const std::vector<utils::Point> &atomCoordinates,
81 const std::vector<double> & atomCharges,
82 const std::vector<double> & smearedChargeRadius,
83 const size_type numElectrons,
84 /* SCF related info */
85 const size_type numWantedEigenvalues,
86 const double smearingTemperature,
87 const double fermiEnergyTolerance,
88 const double fracOccupancyTolerance,
89 const double eigenSolveResidualTolerance,
90 const double scfDensityResidualNormTolerance,
91 const size_type maxChebyshevFilterPass,
92 const size_type maxSCFIter,
93 const bool evaluateEnergyEverySCF,
94 /* Mixing related info */
95 const size_type mixingHistory,
96 const double mixingParameter,
97 const bool isAdaptiveAndersonMixingParameter,
98 /* Electron density related info */
100 &electronChargeDensityInput,
101 /* Basis related info */
102 /* Field boundary */
103 std::shared_ptr<
104 const basis::FEBasisManager<ValueTypeElectrostaticsCoeff,
105 ValueTypeElectrostaticsBasis,
106 memorySpace,
107 dim>> feBMTotalCharge,
108 std::shared_ptr<const basis::FEBasisManager<ValueTypeWaveFunctionCoeff,
109 ValueTypeWaveFunctionBasis,
110 memorySpace,
111 dim>> feBMWaveFn,
112 /* Field data storages poisson solves*/
113 std::shared_ptr<
114 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
115 memorySpace>>
116 feBDTotalChargeStiffnessMatrix,
117 std::shared_ptr<
118 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
119 memorySpace>> feBDNuclearChargeRhs,
120 std::shared_ptr<
121 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
122 memorySpace>> feBDElectronicChargeRhs,
123 /* Field data storages eigen solve*/
124 std::shared_ptr<
125 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
126 memorySpace>> feBDKineticHamiltonian,
127 std::shared_ptr<
128 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
129 memorySpace>>
130 feBDElectrostaticsHamiltonian,
131 std::shared_ptr<
132 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
133 memorySpace>> feBDEXCHamiltonian,
134 /* PSP/AE related info */
135 const utils::ScalarSpatialFunctionReal &externalPotentialFunction,
136 /* linAgOperations Context*/
138 linAlgOpContext,
139 /* basis overlap related info */
140 const OpContext &MContextForInv =
143 memorySpace>(),
144 const OpContext &MContext =
147 memorySpace>(),
148 const OpContext &MInvContext =
151 memorySpace>(),
152 bool isResidualChebyshevFilter = true);
153
154
155 // used if numerical poisson solve vself canellation route taken
157 /* Atom related info */
158 const std::vector<utils::Point> &atomCoordinates,
159 const std::vector<double> & atomCharges,
160 const std::vector<double> & smearedChargeRadius,
161 const size_type numElectrons,
162 /* SCF related info */
163 const size_type numWantedEigenvalues,
164 const double smearingTemperature,
165 const double fermiEnergyTolerance,
166 const double fracOccupancyTolerance,
167 const double eigenSolveResidualTolerance,
168 const double scfDensityResidualNormTolerance,
169 const size_type maxChebyshevFilterPass,
170 const size_type maxSCFIter,
171 const bool evaluateEnergyEverySCF,
172 /* Mixing related info */
173 const size_type mixingHistory,
174 const double mixingParameter,
175 const bool isAdaptiveAndersonMixingParameter,
176 /* Electron density related info */
178 &electronChargeDensityInput,
179 /* Basis related info */
180 /* Field boundary */
181 std::shared_ptr<
182 const basis::FEBasisManager<ValueTypeElectrostaticsCoeff,
183 ValueTypeElectrostaticsBasis,
184 memorySpace,
185 dim>> feBMTotalCharge,
186 std::shared_ptr<const basis::FEBasisManager<ValueTypeWaveFunctionCoeff,
187 ValueTypeWaveFunctionBasis,
188 memorySpace,
189 dim>> feBMWaveFn,
190 /* Field data storages poisson solves */
191 std::shared_ptr<
192 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
193 memorySpace>>
194 feBDTotalChargeStiffnessMatrix,
195 std::shared_ptr<
196 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
197 memorySpace>> feBDNuclearChargeRhs,
198 std::shared_ptr<
199 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
200 memorySpace>> feBDElectronicChargeRhs,
201 std::shared_ptr<
202 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
203 memorySpace>>
204 feBDNuclChargeStiffnessMatrixNumSol,
205 std::shared_ptr<
206 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
207 memorySpace>> feBDNuclChargeRhsNumSol,
208 /* Field data storages eigen solve*/
209 std::shared_ptr<
210 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
211 memorySpace>> feBDKineticHamiltonian,
212 std::shared_ptr<
213 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
214 memorySpace>>
215 feBDElectrostaticsHamiltonian,
216 std::shared_ptr<
217 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
218 memorySpace>> feBDEXCHamiltonian,
219 /* PSP/AE related info */
220 const utils::ScalarSpatialFunctionReal &externalPotentialFunction,
221 /* linAgOperations Context*/
223 linAlgOpContext,
224 /* basis overlap related info */
225 const OpContext &MContextForInv =
228 memorySpace>(),
229 const OpContext &MContext =
232 memorySpace>(),
233 const OpContext &MInvContext =
236 memorySpace>(),
237 bool isResidualChebyshevFilter = true);
238
239 // used if delta rho approach is taken with phi total from 1D KS solve
240 // with analytical vself energy cancellation
242 /* Atom related info */
243 const std::vector<utils::Point> &atomCoordinates,
244 const std::vector<double> & atomCharges,
245 const std::vector<double> & smearedChargeRadius,
246 const size_type numElectrons,
247 /* SCF related info */
248 const size_type numWantedEigenvalues,
249 const double smearingTemperature,
250 const double fermiEnergyTolerance,
251 const double fracOccupancyTolerance,
252 const double eigenSolveResidualTolerance,
253 const double scfDensityResidualNormTolerance,
254 const size_type maxChebyshevFilterPass,
255 const size_type maxSCFIter,
256 const bool evaluateEnergyEverySCF,
257 /* Mixing related info */
258 const size_type mixingHistory,
259 const double mixingParameter,
260 const bool isAdaptiveAndersonMixingParameter,
261 // /* Basis related info */
262 // const quadrature::QuadratureValuesContainer<RealType, memorySpace>
263 // &electronChargeDensityInput,
264 // /* Atomic Field for delta rho */
265 // const quadrature::QuadratureValuesContainer<
266 // ValueTypeElectrostaticsCoeff,
267 // memorySpace> &atomicTotalElecPotNuclearQuad,
268 // const quadrature::QuadratureValuesContainer<
269 // ValueTypeElectrostaticsCoeff,
270 // memorySpace> &atomicTotalElecPotElectronicQuad,
271 /* Atomic Field for delta rho ; Here vTotal atomic scalar sp fn.*/
273 &atomicTotalElectroPotentialFunction,
275 &atomicElectronicChargeDensityFunction,
276 /* Field boundary */
277 std::shared_ptr<
278 const basis::FEBasisManager<ValueTypeElectrostaticsCoeff,
279 ValueTypeElectrostaticsBasis,
280 memorySpace,
281 dim>> feBMTotalCharge,
282 std::shared_ptr<const basis::FEBasisManager<ValueTypeWaveFunctionCoeff,
283 ValueTypeWaveFunctionBasis,
284 memorySpace,
285 dim>> feBMWaveFn,
286 /* Field data storages poisson solves*/
287 std::shared_ptr<
288 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
289 memorySpace>>
290 feBDTotalChargeStiffnessMatrix,
291 std::shared_ptr<
292 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
293 memorySpace>> feBDNuclearChargeRhs,
294 std::shared_ptr<
295 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
296 memorySpace>> feBDElectronicChargeRhs,
297 /* Field data storages eigen solve*/
298 std::shared_ptr<
299 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
300 memorySpace>> feBDKineticHamiltonian,
301 std::shared_ptr<
302 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
303 memorySpace>>
304 feBDElectrostaticsHamiltonian,
305 std::shared_ptr<
306 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
307 memorySpace>> feBDEXCHamiltonian,
308 /* PSP/AE related info */
309 const utils::ScalarSpatialFunctionReal &externalPotentialFunction,
310 /* linAgOperations Context*/
312 linAlgOpContext,
313 /* basis overlap related info */
314 const OpContext &MContextForInv =
317 memorySpace>(),
318 const OpContext &MContext =
321 memorySpace>(),
322 const OpContext &MInvContext =
325 memorySpace>(),
326 bool isResidualChebyshevFilter = true);
327
330 /* Atom related info */
331 const std::vector<utils::Point> &atomCoordinates,
332 const std::vector<double> & atomCharges,
333 const std::vector<std::string> & atomSymbolVec,
334 const std::vector<double> & smearedChargeRadius,
335 const size_type numElectrons,
336 /* SCF related info */
337 const size_type numWantedEigenvalues,
338 const double smearingTemperature,
339 const double fermiEnergyTolerance,
340 const double fracOccupancyTolerance,
341 const double eigenSolveResidualTolerance,
342 const double scfDensityResidualNormTolerance,
343 const size_type maxChebyshevFilterPass,
344 const size_type maxSCFIter,
345 const bool evaluateEnergyEverySCF,
346 /* Mixing related info */
347 const size_type mixingHistory,
348 const double mixingParameter,
349 const bool isAdaptiveAndersonMixingParameter,
350 /* Basis related info */
351 /* Field boundary */
352 std::shared_ptr<
353 const basis::FEBasisManager<ValueTypeElectrostaticsCoeff,
354 ValueTypeElectrostaticsBasis,
355 memorySpace,
356 dim>> feBMTotalCharge,
357 std::shared_ptr<const basis::FEBasisManager<ValueTypeWaveFunctionCoeff,
358 ValueTypeWaveFunctionBasis,
359 memorySpace,
360 dim>> feBMWaveFn,
361 /* Field data storages poisson solves*/
362 std::shared_ptr<
363 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
364 memorySpace>>
365 feBDTotalChargeStiffnessMatrix,
366 std::shared_ptr<
367 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
368 memorySpace>> feBDNuclearChargeRhs,
369 std::shared_ptr<
370 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
371 memorySpace>> feBDElectronicChargeRhs,
372 /* Field data storages eigen solve*/
373 std::shared_ptr<
374 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
375 memorySpace>> feBDKineticHamiltonian,
376 std::shared_ptr<
377 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
378 memorySpace>>
379 feBDElectrostaticsHamiltonian,
380 std::shared_ptr<
381 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
382 memorySpace>> feBDEXCHamiltonian,
383 /* PSP related info */
384 std::shared_ptr<
385 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
386 memorySpace>>
387 feBDAtomCenterNonLocalOperator,
388 const std::map<std::string, std::string> &atomSymbolToPSPFilename,
389 /* linAgOperations Context*/
391 linAlgOpContext,
392 /* basis overlap related info */
393 const OpContext &MContextForInv =
396 memorySpace>(),
397 const OpContext &MContext =
400 memorySpace>(),
401 const OpContext &MInvContext =
404 memorySpace>(),
405 bool isResidualChebyshevFilter = true);
406
407
408 // used if delta rho with PSP approach is taken with phi total from 1D KS
409 // solve with analytical vself energy cancellation
411 /* Atom related info */
412 const std::vector<utils::Point> &atomCoordinates,
413 const std::vector<double> & atomCharges,
414 const std::vector<std::string> & atomSymbolVec,
415 const std::vector<double> & smearedChargeRadius,
416 const size_type numElectrons,
417 /* SCF related info */
418 const size_type numWantedEigenvalues,
419 const double smearingTemperature,
420 const double fermiEnergyTolerance,
421 const double fracOccupancyTolerance,
422 const double eigenSolveResidualTolerance,
423 const double scfDensityResidualNormTolerance,
424 const size_type maxChebyshevFilterPass,
425 const size_type maxSCFIter,
426 const bool evaluateEnergyEverySCF,
427 /* Mixing related info */
428 const size_type mixingHistory,
429 const double mixingParameter,
430 const bool isAdaptiveAndersonMixingParameter,
431 /* Atomic Field for delta rho ; Here vTotal atomic scalar sp fn.*/
433 &atomicTotalElectroPotentialFunction,
435 &atomicElectronicChargeDensityFunction,
436 /* Field boundary */
437 std::shared_ptr<
438 const basis::FEBasisManager<ValueTypeElectrostaticsCoeff,
439 ValueTypeElectrostaticsBasis,
440 memorySpace,
441 dim>> feBMTotalCharge,
442 std::shared_ptr<const basis::FEBasisManager<ValueTypeWaveFunctionCoeff,
443 ValueTypeWaveFunctionBasis,
444 memorySpace,
445 dim>> feBMWaveFn,
446 /* Field data storages poisson solves*/
447 std::shared_ptr<
448 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
449 memorySpace>>
450 feBDTotalChargeStiffnessMatrix,
451 std::shared_ptr<
452 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
453 memorySpace>> feBDNuclearChargeRhs,
454 std::shared_ptr<
455 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
456 memorySpace>> feBDElectronicChargeRhs,
457 /* Field data storages eigen solve*/
458 std::shared_ptr<
459 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
460 memorySpace>> feBDKineticHamiltonian,
461 std::shared_ptr<
462 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
463 memorySpace>>
464 feBDElectrostaticsHamiltonian,
465 std::shared_ptr<
466 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
467 memorySpace>> feBDEXCHamiltonian,
468 /* PSP related info */
469 std::shared_ptr<
470 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
471 memorySpace>>
472 feBDAtomCenterNonLocalOperator,
473 const std::map<std::string, std::string> &atomSymbolToPSPFilename,
474 /* linAgOperations Context*/
476 linAlgOpContext,
477 /* basis overlap related info */
478 const OpContext &MContextForInv =
481 memorySpace>(),
482 const OpContext &MContext =
485 memorySpace>(),
486 const OpContext &MInvContext =
489 memorySpace>(),
490 bool isResidualChebyshevFilter = true);
491
492 ~KohnShamDFT() = default;
493
494 void
495 solve();
496
497 double
499
500 private:
502 std::vector<RealType> d_occupation;
503 const double d_SCFTol;
505 std::shared_ptr<
508 std::shared_ptr<DensityCalculator<ValueTypeWaveFunctionBasis,
509 ValueTypeWaveFunctionCoeff,
510 memorySpace,
511 dim>>
513 std::shared_ptr<KohnShamOperatorContextFE<ValueTypeElectrostaticsCoeff,
514 ValueTypeElectrostaticsBasis,
515 ValueTypeWaveFunctionCoeff,
516 ValueTypeWaveFunctionBasis,
517 memorySpace,
518 dim>>
520 std::shared_ptr<ExchangeCorrelationFE<ValueTypeWaveFunctionBasis,
521 ValueTypeWaveFunctionCoeff,
522 memorySpace,
523 dim>>
525 std::shared_ptr<ElectrostaticFE<ValueTypeElectrostaticsBasis,
526 ValueTypeElectrostaticsCoeff,
527 ValueTypeWaveFunctionBasis,
528 memorySpace,
529 dim>>
531 std::shared_ptr<KineticFE<ValueTypeWaveFunctionBasis,
532 ValueTypeWaveFunctionCoeff,
533 memorySpace,
534 dim>>
536
537 std::shared_ptr<const basis::FEBasisManager<ValueTypeWaveFunctionCoeff,
538 ValueTypeWaveFunctionBasis,
539 memorySpace,
540 dim>>
542 std::vector<RealType> d_kohnShamEnergies;
557 std::shared_ptr<linearAlgebra::LinAlgOpContext<memorySpace>>
564
565 std::shared_ptr<
566 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
567 memorySpace>>
569
574
575 std::shared_ptr<ElectrostaticExcFE<ValueTypeElectrostaticsCoeff,
576 ValueTypeElectrostaticsBasis,
577 ValueTypeWaveFunctionCoeff,
578 ValueTypeWaveFunctionBasis,
579 memorySpace,
580 dim>>
584
585 std::shared_ptr<atoms::AtomSphericalDataContainer>
587
589
590 quadrature::QuadratureValuesContainer<ValueTypeElectrostaticsCoeff,
591 memorySpace>
593
594 }; // end of KohnShamDFT
595 } // end of namespace ksdft
596} // end of namespace dftefe
597#include "KohnShamDFT.t.cpp"
598#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:53
const utils::mpi::MPIComm & d_mpiCommDomain
Definition: KohnShamDFT.h:555
std::vector< RealType > d_kohnShamEnergies
Definition: KohnShamDFT.h:542
quadrature::QuadratureValuesContainer< RealType, memorySpace > d_coreCorrDensUPF
Definition: KohnShamDFT.h:552
linearAlgebra::Vector< ValueTypeWaveFunctionCoeff, memorySpace > d_lanczosGuess
Definition: KohnShamDFT.h:560
linearAlgebra::blasLapack::real_type< ValueType > RealType
Definition: KohnShamDFT.h:70
const size_type d_numElectrons
Definition: KohnShamDFT.h:563
bool d_isOEFEBasis
Definition: KohnShamDFT.h:583
std::shared_ptr< atoms::AtomSphericalDataContainer > d_atomSphericalDataContainerPSP
Definition: KohnShamDFT.h:586
const OpContext * d_MContext
Definition: KohnShamDFT.h:554
quadrature::QuadratureValuesContainer< ValueTypeElectrostaticsCoeff, memorySpace > d_atomicTotalElecPotElectronicQuad
Definition: KohnShamDFT.h:592
const size_type d_numWantedEigenvalues
Definition: KohnShamDFT.h:501
bool d_isSolved
Definition: KohnShamDFT.h:571
std::shared_ptr< const basis::FEBasisManager< ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim > > d_feBMWaveFn
Definition: KohnShamDFT.h:541
bool d_isONCVNonLocPSP
Definition: KohnShamDFT.h:588
std::vector< RealType > d_occupation
Definition: KohnShamDFT.h:502
linearAlgebra::MultiVector< ValueType, memorySpace > * d_kohnShamWaveFunctions
Definition: KohnShamDFT.h:544
bool d_isNlcc
Definition: KohnShamDFT.h:588
MixingScheme< RealType, RealType > d_mixingScheme
Definition: KohnShamDFT.h:556
linearAlgebra::blasLapack::scalar_type< ValueTypeOperator, ValueTypeOperator > ValueType
Definition: KohnShamDFT.h:69
quadrature::QuadratureValuesContainer< ValueTypeElectrostaticsCoeff, memorySpace > d_atomicTotalElecPotNuclearQuad
Definition: KohnShamDFT.h:592
bool d_isAdaptiveAndersonMixingParameter
Definition: KohnShamDFT.h:548
utils::MemoryStorage< RealType, utils::MemorySpace::HOST > d_jxwDataHost
Definition: KohnShamDFT.h:504
quadrature::QuadratureValuesContainer< RealType, memorySpace > d_densityOutQuadValues
Definition: KohnShamDFT.h:551
size_type d_mixingHistory
Definition: KohnShamDFT.h:546
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeWaveFunctionBasis, memorySpace > > d_feBDEXCHamiltonian
Definition: KohnShamDFT.h:568
bool d_isResidualChebyshevFilter
Definition: KohnShamDFT.h:582
double d_mixingParameter
Definition: KohnShamDFT.h:547
RealType d_groundStateEnergy
Definition: KohnShamDFT.h:570
size_type d_numMaxSCFIter
Definition: KohnShamDFT.h:553
typename linearAlgebra::HermitianIterativeEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::OpContext OpContext
Definition: KohnShamDFT.h:74
std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > > d_linAlgOpContext
Definition: KohnShamDFT.h:558
std::shared_ptr< KineticFE< ValueTypeWaveFunctionBasis, ValueTypeWaveFunctionCoeff, memorySpace, dim > > d_hamitonianKin
Definition: KohnShamDFT.h:535
linearAlgebra::blasLapack::scalar_type< ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionBasis > ValueTypeOperator
Definition: KohnShamDFT.h:63
quadrature::QuadratureValuesContainer< RealType, memorySpace > d_densityInQuadValues
Definition: KohnShamDFT.h:551
std::shared_ptr< KohnShamEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace > > d_ksEigSolve
Definition: KohnShamDFT.h:507
bool d_evaluateEnergyEverySCF
Definition: KohnShamDFT.h:549
utils::ConditionalOStream d_rootCout
Definition: KohnShamDFT.h:545
std::shared_ptr< ElectrostaticExcFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim > > d_hamiltonianElectroExc
Definition: KohnShamDFT.h:581
utils::Profiler d_p
Definition: KohnShamDFT.h:572
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:59
const double d_SCFTol
Definition: KohnShamDFT.h:503
void solve()
Definition: KohnShamDFT.t.cpp:2028
quadrature::QuadratureValuesContainer< RealType, memorySpace > d_densityResidualQuadValues
Definition: KohnShamDFT.h:552
bool d_isPSPCalculation
Definition: KohnShamDFT.h:573
const OpContext * d_MInvContext
Definition: KohnShamDFT.h:554
std::shared_ptr< DensityCalculator< ValueTypeWaveFunctionBasis, ValueTypeWaveFunctionCoeff, memorySpace, dim > > d_densCalc
Definition: KohnShamDFT.h:512
std::shared_ptr< KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim > > d_hamitonianOperator
Definition: KohnShamDFT.h:519
double getGroundStateEnergy()
Definition: KohnShamDFT.t.cpp:2532
linearAlgebra::MultiVector< ValueTypeWaveFunctionCoeff, memorySpace > d_waveFunctionSubspaceGuess
Definition: KohnShamDFT.h:562
quadrature::QuadratureValuesContainer< RealType, memorySpace > d_coreCorrectedDensity
Definition: KohnShamDFT.h:552
std::shared_ptr< ExchangeCorrelationFE< ValueTypeWaveFunctionBasis, ValueTypeWaveFunctionCoeff, memorySpace, dim > > d_hamitonianXC
Definition: KohnShamDFT.h:524
linearAlgebra::blasLapack::scalar_type< ValueTypeElectrostaticsCoeff, ValueTypeWaveFunctionCoeff > ValueTypeOperand
Definition: KohnShamDFT.h:66
std::shared_ptr< ElectrostaticFE< ValueTypeElectrostaticsBasis, ValueTypeElectrostaticsCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim > > d_hamitonianElec
Definition: KohnShamDFT.h:530
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
blas::scalar_type< ValueType1, ValueType2 > scalar_type
Definition: BlasLapackTypedef.h:70
blas::real_type< ValueType > real_type
Definition: BlasLapackTypedef.h:64
int MPIComm
Definition: MPITypes.h:83
MemorySpace
Definition: MemorySpaceType.h:37
dealii includes
Definition: AtomFieldDataSpherical.cpp:31
unsigned int size_type
Definition: TypeConfig.h:8