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>
38#include <ksdft/RDM1FE.h>
40#include <ksdft/MixingScheme.h>
41#include <ksdft/RDM1Mixing.h>
42#include <utils/Profiler.h>
44
45namespace dftefe
46{
47 namespace ksdft
48 {
49 template <typename ValueTypeElectrostaticsCoeff,
50 typename ValueTypeElectrostaticsBasis,
51 typename ValueTypeWaveFunctionCoeff,
52 typename ValueTypeWaveFunctionBasis,
53 utils::MemorySpace memorySpace,
54 size_type dim>
56 {
57 public:
58 using HamiltonianPtrVariant = std::variant<
59 std::shared_ptr<Hamiltonian<float, memorySpace>>,
60 std::shared_ptr<Hamiltonian<double, memorySpace>>,
61 std::shared_ptr<Hamiltonian<std::complex<float>, memorySpace>>,
62 std::shared_ptr<Hamiltonian<std::complex<double>, memorySpace>>>;
63
65 linearAlgebra::blasLapack::scalar_type<ValueTypeElectrostaticsBasis,
66 ValueTypeWaveFunctionBasis>;
68 linearAlgebra::blasLapack::scalar_type<ValueTypeElectrostaticsCoeff,
69 ValueTypeWaveFunctionCoeff>;
70 using ValueType =
74 using OpContext = typename linearAlgebra::HermitianIterativeEigenSolver<
77 memorySpace>::OpContext;
78
79 public:
80 // used if analytical vself canellation route taken
82 /* Atom related info */
83 const std::vector<utils::Point> &atomCoordinates,
84 const std::vector<double> & atomCharges,
85 const double & smearedChargeRadius,
86 const size_type numElectrons,
87 /* SCF related info */
88 const size_type numWantedEigenvalues,
89 const double smearingTemperature,
90 const double fermiEnergyTolerance,
91 const double fracOccupancyTolerance,
92 const double eigenSolveResidualTolerance,
93 const double scfDensityResidualNormTolerance,
94 const size_type maxChebyshevFilterPass,
95 const size_type maxSCFIter,
96 const bool evaluateEnergyEverySCF,
97 /* Mixing related info */
98 const size_type mixingHistory,
99 const double mixingParameter,
100 const bool isAdaptiveAndersonMixingParameter,
101 /* Electron density related info */
103 &atomicElectronicChargeDensityFunction,
104 /* Basis related info */
105 /* Field boundary */
106 std::shared_ptr<
107 const basis::FEBasisManager<ValueTypeElectrostaticsCoeff,
108 ValueTypeElectrostaticsBasis,
110 dim>> feBMTotalCharge,
111 std::shared_ptr<const basis::FEBasisManager<ValueTypeWaveFunctionCoeff,
112 ValueTypeWaveFunctionBasis,
113 memorySpace,
114 dim>> feBMWaveFn,
115 /* Field data storages poisson solves*/
116 std::shared_ptr<
117 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
119 feBDTotalChargeStiffnessMatrix,
120 std::shared_ptr<
121 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
123 feBDNuclearChargeRhs,
124 std::shared_ptr<
125 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
127 feBDElectronicChargeRhs,
128 /* Field data storages eigen solve*/
129 std::shared_ptr<
130 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
131 memorySpace>> feBDKineticHamiltonian,
132 std::shared_ptr<
133 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
134 memorySpace>>
135 feBDElectrostaticsHamiltonian,
136 std::shared_ptr<
137 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
138 memorySpace>> feBDEXCHamiltonian,
139 /* PSP/AE related info */
140 const utils::ScalarSpatialFunctionReal &externalPotentialFunction,
141 /* exc type */
142 const std::string &xcType,
143 /* linAgOperations Context*/
145 linAlgOpContext,
146 /* basis overlap related info */
147 const OpContext &MContextForInv =
150 memorySpace>(),
151 const OpContext &MContext =
154 memorySpace>(),
155 const OpContext &MInvContext =
158 memorySpace>(),
159 bool isResidualChebyshevFilter = true);
160
161
162 // used if numerical poisson solve vself canellation route taken
164 /* Atom related info */
165 const std::vector<utils::Point> &atomCoordinates,
166 const std::vector<double> & atomCharges,
167 const double & smearedChargeRadius,
168 const size_type numElectrons,
169 /* SCF related info */
170 const size_type numWantedEigenvalues,
171 const double smearingTemperature,
172 const double fermiEnergyTolerance,
173 const double fracOccupancyTolerance,
174 const double eigenSolveResidualTolerance,
175 const double scfDensityResidualNormTolerance,
176 const size_type maxChebyshevFilterPass,
177 const size_type maxSCFIter,
178 const bool evaluateEnergyEverySCF,
179 /* Mixing related info */
180 const size_type mixingHistory,
181 const double mixingParameter,
182 const bool isAdaptiveAndersonMixingParameter,
183 /* Electron density related info */
185 &atomicElectronicChargeDensityFunction,
186 /* Basis related info */
187 /* Field boundary */
188 std::shared_ptr<
189 const basis::FEBasisManager<ValueTypeElectrostaticsCoeff,
190 ValueTypeElectrostaticsBasis,
192 dim>> feBMTotalCharge,
193 std::shared_ptr<const basis::FEBasisManager<ValueTypeWaveFunctionCoeff,
194 ValueTypeWaveFunctionBasis,
195 memorySpace,
196 dim>> feBMWaveFn,
197 /* Field data storages poisson solves */
198 std::shared_ptr<
199 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
201 feBDTotalChargeStiffnessMatrix,
202 std::shared_ptr<
203 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
205 feBDNuclearChargeRhs,
206 std::shared_ptr<
207 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
209 feBDElectronicChargeRhs,
210 std::shared_ptr<
211 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
213 feBDNuclChargeStiffnessMatrixNumSol,
214 std::shared_ptr<
215 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
217 feBDNuclChargeRhsNumSol,
218 /* Field data storages eigen solve*/
219 std::shared_ptr<
220 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
221 memorySpace>> feBDKineticHamiltonian,
222 std::shared_ptr<
223 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
224 memorySpace>>
225 feBDElectrostaticsHamiltonian,
226 std::shared_ptr<
227 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
228 memorySpace>> feBDEXCHamiltonian,
229 /* PSP/AE related info */
230 const utils::ScalarSpatialFunctionReal &externalPotentialFunction,
231 /* exc type */
232 const std::string &xcType,
233 /* linAgOperations Context*/
235 linAlgOpContext,
236 /* basis overlap related info */
237 const OpContext &MContextForInv =
240 memorySpace>(),
241 const OpContext &MContext =
244 memorySpace>(),
245 const OpContext &MInvContext =
248 memorySpace>(),
249 bool isResidualChebyshevFilter = true);
250
251 // used if delta rho approach is taken with phi total from 1D KS solve
252 // with analytical vself energy cancellation
254 /* Atom related info */
255 const std::vector<utils::Point> &atomCoordinates,
256 const std::vector<double> & atomCharges,
257 const std::vector<std::string> & atomSymbolVec,
258 const double & smearedChargeRadius,
259 const size_type numElectrons,
260 /* SCF related info */
261 const size_type numWantedEigenvalues,
262 const double smearingTemperature,
263 const double fermiEnergyTolerance,
264 const double fracOccupancyTolerance,
265 const double eigenSolveResidualTolerance,
266 const double scfDensityResidualNormTolerance,
267 const size_type maxChebyshevFilterPass,
268 const size_type maxSCFIter,
269 const bool evaluateEnergyEverySCF,
270 /* Mixing related info */
271 const size_type mixingHistory,
272 const double mixingParameter,
273 const bool isAdaptiveAndersonMixingParameter,
274 /* Atomic Field for delta rho ; Here vTotal atomic scalar sp fn.*/
276 &atomicTotalElectroPotentialFunction,
278 &atomicElectronicChargeDensityFunction,
279 /* Field boundary */
280 std::shared_ptr<
281 const basis::FEBasisManager<ValueTypeElectrostaticsCoeff,
282 ValueTypeElectrostaticsBasis,
284 dim>> feBMTotalCharge,
285 std::shared_ptr<const basis::FEBasisManager<ValueTypeWaveFunctionCoeff,
286 ValueTypeWaveFunctionBasis,
287 memorySpace,
288 dim>> feBMWaveFn,
289 /* Field data storages poisson solves*/
290 std::shared_ptr<
291 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
293 feBDTotalChargeStiffnessMatrix,
294 std::shared_ptr<
295 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
297 feBDNuclearChargeRhs,
298 std::shared_ptr<
299 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
301 feBDElectronicChargeRhs,
302 /* Field data storages eigen solve*/
303 std::shared_ptr<
304 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
305 memorySpace>> feBDKineticHamiltonian,
306 std::shared_ptr<
307 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
308 memorySpace>>
309 feBDElectrostaticsHamiltonian,
310 std::shared_ptr<
311 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
312 memorySpace>> feBDEXCHamiltonian,
313 /* PSP/AE related info */
314 const utils::ScalarSpatialFunctionReal &externalPotentialFunction,
315 /* exc type */
316 const std::string &xcType,
317 /* linAgOperations Context*/
319 linAlgOpContext,
320 /* basis overlap related info */
321 const OpContext &MContextForInv =
324 memorySpace>(),
325 const OpContext &MContext =
328 memorySpace>(),
329 const OpContext &MInvContext =
332 memorySpace>(),
333 bool isResidualChebyshevFilter = true,
334 /* TCI related info */
336
339 /* Atom related info */
340 const std::vector<utils::Point> &atomCoordinates,
341 const std::vector<double> & atomCharges,
342 const std::vector<std::string> & atomSymbolVec,
343 const double & smearedChargeRadius,
344 const size_type numElectrons,
345 /* SCF related info */
346 const size_type numWantedEigenvalues,
347 const double smearingTemperature,
348 const double fermiEnergyTolerance,
349 const double fracOccupancyTolerance,
350 const double eigenSolveResidualTolerance,
351 const double scfDensityResidualNormTolerance,
352 const size_type maxChebyshevFilterPass,
353 const size_type maxSCFIter,
354 const bool evaluateEnergyEverySCF,
355 /* Mixing related info */
356 const size_type mixingHistory,
357 const double mixingParameter,
358 const bool isAdaptiveAndersonMixingParameter,
359 /* Electron density related info */
361 &atomicElectronicChargeDensityFunction,
362 /* Basis related info */
363 /* Field boundary */
364 std::shared_ptr<
365 const basis::FEBasisManager<ValueTypeElectrostaticsCoeff,
366 ValueTypeElectrostaticsBasis,
368 dim>> feBMTotalCharge,
369 std::shared_ptr<const basis::FEBasisManager<ValueTypeWaveFunctionCoeff,
370 ValueTypeWaveFunctionBasis,
371 memorySpace,
372 dim>> feBMWaveFn,
373 /* Field data storages poisson solves*/
374 std::shared_ptr<
375 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
377 feBDTotalChargeStiffnessMatrix,
378 std::shared_ptr<
379 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
381 feBDNuclearChargeRhs,
382 std::shared_ptr<
383 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
385 feBDElectronicChargeRhs,
386 /* Field data storages eigen solve*/
387 std::shared_ptr<
388 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
389 memorySpace>> feBDKineticHamiltonian,
390 std::shared_ptr<
391 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
392 memorySpace>>
393 feBDElectrostaticsHamiltonian,
394 std::shared_ptr<
395 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
396 memorySpace>> feBDEXCHamiltonian,
397 /* PSP related info */
398 std::shared_ptr<
399 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
400 memorySpace>>
401 feBDAtomCenterNonLocalOperator,
402 const std::map<std::string, std::string> &atomSymbolToPSPFilename,
403 /* exc type */
404 const std::string &xcType,
405 /* linAgOperations Context*/
407 linAlgOpContext,
408 /* basis overlap related info */
409 const OpContext &MContextForInv =
412 memorySpace>(),
413 const OpContext &MContext =
416 memorySpace>(),
417 const OpContext &MInvContext =
420 memorySpace>(),
421 bool isResidualChebyshevFilter = true);
422
423
424 // used if delta rho with PSP approach is taken with phi total from 1D KS
425 // solve with analytical vself energy cancellation
427 /* Atom related info */
428 const std::vector<utils::Point> &atomCoordinates,
429 const std::vector<double> & atomCharges,
430 const std::vector<std::string> & atomSymbolVec,
431 const double & smearedChargeRadius,
432 const size_type numElectrons,
433 /* SCF related info */
434 const size_type numWantedEigenvalues,
435 const double smearingTemperature,
436 const double fermiEnergyTolerance,
437 const double fracOccupancyTolerance,
438 const double eigenSolveResidualTolerance,
439 const double scfDensityResidualNormTolerance,
440 const size_type maxChebyshevFilterPass,
441 const size_type maxSCFIter,
442 const bool evaluateEnergyEverySCF,
443 /* Mixing related info */
444 const size_type mixingHistory,
445 const double mixingParameter,
446 const bool isAdaptiveAndersonMixingParameter,
447 /* Atomic Field for delta rho ; Here vTotal atomic scalar sp fn.*/
449 &atomicTotalElectroPotentialFunction,
451 &atomicElectronicChargeDensityFunction,
452 /* Field boundary */
453 std::shared_ptr<
454 const basis::FEBasisManager<ValueTypeElectrostaticsCoeff,
455 ValueTypeElectrostaticsBasis,
457 dim>> feBMTotalCharge,
458 std::shared_ptr<const basis::FEBasisManager<ValueTypeWaveFunctionCoeff,
459 ValueTypeWaveFunctionBasis,
460 memorySpace,
461 dim>> feBMWaveFn,
462 /* Field data storages poisson solves*/
463 std::shared_ptr<
464 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
466 feBDTotalChargeStiffnessMatrix,
467 std::shared_ptr<
468 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
470 feBDNuclearChargeRhs,
471 std::shared_ptr<
472 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
474 feBDElectronicChargeRhs,
475 /* Field data storages eigen solve*/
476 std::shared_ptr<
477 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
478 memorySpace>> feBDKineticHamiltonian,
479 std::shared_ptr<
480 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
481 memorySpace>>
482 feBDElectrostaticsHamiltonian,
483 std::shared_ptr<
484 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
485 memorySpace>> feBDEXCHamiltonian,
486 /* PSP related info */
487 std::shared_ptr<
488 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
489 memorySpace>>
490 feBDAtomCenterNonLocalOperator,
491 const std::map<std::string, std::string> &atomSymbolToPSPFilename,
492 /* exc type */
493 const std::string &xcType,
494 /* linAgOperations Context*/
496 linAlgOpContext,
497 /* basis overlap related info */
498 const OpContext &MContextForInv =
501 memorySpace>(),
502 const OpContext &MContext =
505 memorySpace>(),
506 const OpContext &MInvContext =
509 memorySpace>(),
510 bool isResidualChebyshevFilter = true,
511 /* TCI related info */
513
514 ~KohnShamDFT();
515
516 void
517 solve();
518
519 double
521
522 double
524
525 void
527
528 private:
530 const double d_SCFTol;
531 std::vector<RealType> d_jxwDataHost;
532 std::shared_ptr<
535 std::shared_ptr<RDM1Spectral<
536 linearAlgebra::blasLapack::scalar_type<ValueTypeWaveFunctionBasis,
537 ValueTypeWaveFunctionCoeff>,
538 memorySpace>>
540 std::shared_ptr<RDM1Mixing<
541 linearAlgebra::blasLapack::scalar_type<ValueTypeWaveFunctionBasis,
542 ValueTypeWaveFunctionCoeff>,
543 memorySpace>>
545 std::shared_ptr<KohnShamOperatorContextFE<ValueTypeElectrostaticsCoeff,
546 ValueTypeElectrostaticsBasis,
547 ValueTypeWaveFunctionCoeff,
548 ValueTypeWaveFunctionBasis,
549 memorySpace,
550 dim>>
552 std::shared_ptr<ExchangeCorrelationFE<ValueTypeWaveFunctionBasis,
553 ValueTypeWaveFunctionCoeff,
554 memorySpace,
555 dim>>
557 std::shared_ptr<ElectrostaticFE<ValueTypeElectrostaticsBasis,
558 ValueTypeElectrostaticsCoeff,
559 ValueTypeWaveFunctionBasis,
560 memorySpace,
561 dim>>
563 std::shared_ptr<KineticFE<ValueTypeWaveFunctionBasis,
564 ValueTypeWaveFunctionCoeff,
565 memorySpace,
566 dim>>
568
569 std::shared_ptr<const basis::FEBasisManager<ValueTypeWaveFunctionCoeff,
570 ValueTypeWaveFunctionBasis,
571 memorySpace,
572 dim>>
574 std::vector<RealType> d_kohnShamEnergies;
581 std::shared_ptr<linearAlgebra::LinAlgOpContext<memorySpace>>
584
585 std::shared_ptr<
586 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
587 memorySpace>>
589
594
595 std::shared_ptr<ElectrostaticExcFE<ValueTypeElectrostaticsCoeff,
596 ValueTypeElectrostaticsBasis,
597 ValueTypeWaveFunctionCoeff,
598 ValueTypeWaveFunctionBasis,
599 memorySpace,
600 dim>>
604
605 std::shared_ptr<atoms::AtomSphericalDataContainer>
607
609
610 std::shared_ptr<linearAlgebra::ElpaScalapackManager> d_elpaScala;
611 std::shared_ptr<linearAlgebra::LinAlgOpContext<memorySpaceHost>>
614 std::string d_xcType;
615
616 }; // end of KohnShamDFT
617 } // end of namespace ksdft
618} // end of namespace dftefe
619#include "KohnShamDFT.t.cpp"
620#endif // dftefeKohnShamDFT_h
Definition: AtomSuperpositionFunction.h:55
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: 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:54
Definition: KineticFE.h:49
Definition: KohnShamDFT.h:56
const utils::mpi::MPIComm & d_mpiCommDomain
Definition: KohnShamDFT.h:579
std::vector< RealType > d_kohnShamEnergies
Definition: KohnShamDFT.h:574
std::shared_ptr< RDM1Spectral< linearAlgebra::blasLapack::scalar_type< ValueTypeWaveFunctionBasis, ValueTypeWaveFunctionCoeff >, memorySpace > > d_rdm1Spectral
Definition: KohnShamDFT.h:539
std::shared_ptr< linearAlgebra::ElpaScalapackManager > d_elpaScala
Definition: KohnShamDFT.h:610
utils::Profiler< memorySpace > d_p
Definition: KohnShamDFT.h:592
linearAlgebra::blasLapack::real_type< ValueType > RealType
Definition: KohnShamDFT.h:73
const size_type d_numElectrons
Definition: KohnShamDFT.h:583
double d_smearingTemperature
Definition: KohnShamDFT.h:613
bool d_isOEFEBasis
Definition: KohnShamDFT.h:603
std::shared_ptr< atoms::AtomSphericalDataContainer > d_atomSphericalDataContainerPSP
Definition: KohnShamDFT.h:606
const OpContext * d_MContext
Definition: KohnShamDFT.h:578
const size_type d_numWantedEigenvalues
Definition: KohnShamDFT.h:529
bool d_isSolved
Definition: KohnShamDFT.h:591
std::shared_ptr< const basis::FEBasisManager< ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim > > d_feBMWaveFn
Definition: KohnShamDFT.h:573
bool d_isONCVNonLocPSP
Definition: KohnShamDFT.h:608
std::string d_xcType
Definition: KohnShamDFT.h:614
bool d_isNlcc
Definition: KohnShamDFT.h:608
MixingScheme< RealType, RealType > d_mixingScheme
Definition: KohnShamDFT.h:580
void printTotalInScopeTimings()
Definition: KohnShamDFT.t.cpp:3395
linearAlgebra::blasLapack::scalar_type< ValueTypeOperator, ValueTypeOperator > ValueType
Definition: KohnShamDFT.h:72
double d_freeEnergy
Definition: KohnShamDFT.h:613
double getFreeEnergy()
Definition: KohnShamDFT.t.cpp:3375
utils::Profiler< memorySpace > d_pTotal
Definition: KohnShamDFT.h:592
std::vector< RealType > d_jxwDataHost
Definition: KohnShamDFT.h:531
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeWaveFunctionBasis, memorySpace > > d_feBDEXCHamiltonian
Definition: KohnShamDFT.h:588
bool d_isResidualChebyshevFilter
Definition: KohnShamDFT.h:602
RealType d_groundStateEnergy
Definition: KohnShamDFT.h:590
size_type d_numMaxSCFIter
Definition: KohnShamDFT.h:577
std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpaceHost > > d_linAlgOpContextHost
Definition: KohnShamDFT.h:612
typename linearAlgebra::HermitianIterativeEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::OpContext OpContext
Definition: KohnShamDFT.h:77
std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > > d_linAlgOpContext
Definition: KohnShamDFT.h:582
std::shared_ptr< KineticFE< ValueTypeWaveFunctionBasis, ValueTypeWaveFunctionCoeff, memorySpace, dim > > d_hamitonianKin
Definition: KohnShamDFT.h:567
linearAlgebra::blasLapack::scalar_type< ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionBasis > ValueTypeOperator
Definition: KohnShamDFT.h:66
std::shared_ptr< KohnShamEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace > > d_ksEigSolve
Definition: KohnShamDFT.h:534
bool d_evaluateEnergyEverySCF
Definition: KohnShamDFT.h:576
utils::ConditionalOStream d_rootCout
Definition: KohnShamDFT.h:575
std::shared_ptr< ElectrostaticExcFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim > > d_hamiltonianElectroExc
Definition: KohnShamDFT.h:601
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:62
const double d_SCFTol
Definition: KohnShamDFT.h:530
void solve()
Definition: KohnShamDFT.t.cpp:2825
bool d_isPSPCalculation
Definition: KohnShamDFT.h:593
const OpContext * d_MInvContext
Definition: KohnShamDFT.h:578
~KohnShamDFT()
Definition: KohnShamDFT.t.cpp:2808
std::shared_ptr< KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim > > d_hamitonianOperator
Definition: KohnShamDFT.h:551
double getGroundStateEnergy()
Definition: KohnShamDFT.t.cpp:3355
std::shared_ptr< RDM1Mixing< linearAlgebra::blasLapack::scalar_type< ValueTypeWaveFunctionBasis, ValueTypeWaveFunctionCoeff >, memorySpace > > d_rdm1Mix
Definition: KohnShamDFT.h:544
std::shared_ptr< ExchangeCorrelationFE< ValueTypeWaveFunctionBasis, ValueTypeWaveFunctionCoeff, memorySpace, dim > > d_hamitonianXC
Definition: KohnShamDFT.h:556
linearAlgebra::blasLapack::scalar_type< ValueTypeElectrostaticsCoeff, ValueTypeWaveFunctionCoeff > ValueTypeOperand
Definition: KohnShamDFT.h:69
std::shared_ptr< ElectrostaticFE< ValueTypeElectrostaticsBasis, ValueTypeElectrostaticsCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim > > d_hamitonianElec
Definition: KohnShamDFT.h:562
Definition: KohnShamEigenSolver.h:62
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:72
RDM1 implementation that performs Anderson mixing of the electron density. Derives directly from RDM1...
Definition: RDM1Mixing.h:63
Intermediate abstract class that stores the spectral (eigen) decomposition of the one-particle reduce...
Definition: RDM1Spectral.h:46
static const atoms::TCIADataParams TCIA_PARAMS
Definition: Defaults.h:174
Abstract class to encapsulate the action of a discrete operator on vectors, matrices,...
Definition: IdentityOperatorContext.h:53
Definition: LinAlgOpContext.h:52
Provides an interface to print based on whether a certain condition is met or not....
Definition: ConditionalOStream.h:47
Definition: Profiler.h:50
Abstract base for scalar functions of a spatial point.
Definition: ScalarSpatialFunction.h:23
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
std::uint64_t size_type
Definition: TypeConfig.h:9
static constexpr utils::MemorySpace memorySpaceHost
Definition: Defaults.h:185
Definition: AtomTCIASpline.h:44