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 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 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<std::string> & atomSymbolVec,
247 const double & smearedChargeRadius,
248 const size_type numElectrons,
249 /* SCF related info */
250 const size_type numWantedEigenvalues,
251 const double smearingTemperature,
252 const double fermiEnergyTolerance,
253 const double fracOccupancyTolerance,
254 const double eigenSolveResidualTolerance,
255 const double scfDensityResidualNormTolerance,
256 const size_type maxChebyshevFilterPass,
257 const size_type maxSCFIter,
258 const bool evaluateEnergyEverySCF,
259 /* Mixing related info */
260 const size_type mixingHistory,
261 const double mixingParameter,
262 const bool isAdaptiveAndersonMixingParameter,
263 // /* Basis related info */
264 // const quadrature::QuadratureValuesContainer<RealType, memorySpace>
265 // &electronChargeDensityInput,
266 // /* Atomic Field for delta rho */
267 // const quadrature::QuadratureValuesContainer<
268 // ValueTypeElectrostaticsCoeff,
269 // memorySpace> &atomicTotalElecPotNuclearQuad,
270 // const quadrature::QuadratureValuesContainer<
271 // ValueTypeElectrostaticsCoeff,
272 // memorySpace> &atomicTotalElecPotElectronicQuad,
273 /* Atomic Field for delta rho ; Here vTotal atomic scalar sp fn.*/
275 &atomicTotalElectroPotentialFunction,
277 &atomicElectronicChargeDensityFunction,
278 /* Field boundary */
279 std::shared_ptr<
280 const basis::FEBasisManager<ValueTypeElectrostaticsCoeff,
281 ValueTypeElectrostaticsBasis,
282 memorySpace,
283 dim>> feBMTotalCharge,
284 std::shared_ptr<const basis::FEBasisManager<ValueTypeWaveFunctionCoeff,
285 ValueTypeWaveFunctionBasis,
286 memorySpace,
287 dim>> feBMWaveFn,
288 /* Field data storages poisson solves*/
289 std::shared_ptr<
290 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
291 memorySpace>>
292 feBDTotalChargeStiffnessMatrix,
293 std::shared_ptr<
294 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
295 memorySpace>> feBDNuclearChargeRhs,
296 std::shared_ptr<
297 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
298 memorySpace>> feBDElectronicChargeRhs,
299 /* Field data storages eigen solve*/
300 std::shared_ptr<
301 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
302 memorySpace>> feBDKineticHamiltonian,
303 std::shared_ptr<
304 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
305 memorySpace>>
306 feBDElectrostaticsHamiltonian,
307 std::shared_ptr<
308 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
309 memorySpace>> feBDEXCHamiltonian,
310 /* PSP/AE related info */
311 const utils::ScalarSpatialFunctionReal &externalPotentialFunction,
312 /* linAgOperations Context*/
314 linAlgOpContext,
315 /* basis overlap related info */
316 const OpContext &MContextForInv =
319 memorySpace>(),
320 const OpContext &MContext =
323 memorySpace>(),
324 const OpContext &MInvContext =
327 memorySpace>(),
328 bool isResidualChebyshevFilter = true,
329 /* TCI related info */
331
334 /* Atom related info */
335 const std::vector<utils::Point> &atomCoordinates,
336 const std::vector<double> & atomCharges,
337 const std::vector<std::string> & atomSymbolVec,
338 const double & smearedChargeRadius,
339 const size_type numElectrons,
340 /* SCF related info */
341 const size_type numWantedEigenvalues,
342 const double smearingTemperature,
343 const double fermiEnergyTolerance,
344 const double fracOccupancyTolerance,
345 const double eigenSolveResidualTolerance,
346 const double scfDensityResidualNormTolerance,
347 const size_type maxChebyshevFilterPass,
348 const size_type maxSCFIter,
349 const bool evaluateEnergyEverySCF,
350 /* Mixing related info */
351 const size_type mixingHistory,
352 const double mixingParameter,
353 const bool isAdaptiveAndersonMixingParameter,
354 /* Basis related info */
355 /* Field boundary */
356 std::shared_ptr<
357 const basis::FEBasisManager<ValueTypeElectrostaticsCoeff,
358 ValueTypeElectrostaticsBasis,
359 memorySpace,
360 dim>> feBMTotalCharge,
361 std::shared_ptr<const basis::FEBasisManager<ValueTypeWaveFunctionCoeff,
362 ValueTypeWaveFunctionBasis,
363 memorySpace,
364 dim>> feBMWaveFn,
365 /* Field data storages poisson solves*/
366 std::shared_ptr<
367 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
368 memorySpace>>
369 feBDTotalChargeStiffnessMatrix,
370 std::shared_ptr<
371 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
372 memorySpace>> feBDNuclearChargeRhs,
373 std::shared_ptr<
374 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
375 memorySpace>> feBDElectronicChargeRhs,
376 /* Field data storages eigen solve*/
377 std::shared_ptr<
378 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
379 memorySpace>> feBDKineticHamiltonian,
380 std::shared_ptr<
381 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
382 memorySpace>>
383 feBDElectrostaticsHamiltonian,
384 std::shared_ptr<
385 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
386 memorySpace>> feBDEXCHamiltonian,
387 /* PSP related info */
388 std::shared_ptr<
389 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
390 memorySpace>>
391 feBDAtomCenterNonLocalOperator,
392 const std::map<std::string, std::string> &atomSymbolToPSPFilename,
393 /* linAgOperations Context*/
395 linAlgOpContext,
396 /* basis overlap related info */
397 const OpContext &MContextForInv =
400 memorySpace>(),
401 const OpContext &MContext =
404 memorySpace>(),
405 const OpContext &MInvContext =
408 memorySpace>(),
409 bool isResidualChebyshevFilter = true);
410
411
412 // used if delta rho with PSP approach is taken with phi total from 1D KS
413 // solve with analytical vself energy cancellation
415 /* Atom related info */
416 const std::vector<utils::Point> &atomCoordinates,
417 const std::vector<double> & atomCharges,
418 const std::vector<std::string> & atomSymbolVec,
419 const double & smearedChargeRadius,
420 const size_type numElectrons,
421 /* SCF related info */
422 const size_type numWantedEigenvalues,
423 const double smearingTemperature,
424 const double fermiEnergyTolerance,
425 const double fracOccupancyTolerance,
426 const double eigenSolveResidualTolerance,
427 const double scfDensityResidualNormTolerance,
428 const size_type maxChebyshevFilterPass,
429 const size_type maxSCFIter,
430 const bool evaluateEnergyEverySCF,
431 /* Mixing related info */
432 const size_type mixingHistory,
433 const double mixingParameter,
434 const bool isAdaptiveAndersonMixingParameter,
435 /* Atomic Field for delta rho ; Here vTotal atomic scalar sp fn.*/
437 &atomicTotalElectroPotentialFunction,
439 &atomicElectronicChargeDensityFunction,
440 /* Field boundary */
441 std::shared_ptr<
442 const basis::FEBasisManager<ValueTypeElectrostaticsCoeff,
443 ValueTypeElectrostaticsBasis,
444 memorySpace,
445 dim>> feBMTotalCharge,
446 std::shared_ptr<const basis::FEBasisManager<ValueTypeWaveFunctionCoeff,
447 ValueTypeWaveFunctionBasis,
448 memorySpace,
449 dim>> feBMWaveFn,
450 /* Field data storages poisson solves*/
451 std::shared_ptr<
452 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
453 memorySpace>>
454 feBDTotalChargeStiffnessMatrix,
455 std::shared_ptr<
456 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
457 memorySpace>> feBDNuclearChargeRhs,
458 std::shared_ptr<
459 const basis::FEBasisDataStorage<ValueTypeElectrostaticsBasis,
460 memorySpace>> feBDElectronicChargeRhs,
461 /* Field data storages eigen solve*/
462 std::shared_ptr<
463 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
464 memorySpace>> feBDKineticHamiltonian,
465 std::shared_ptr<
466 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
467 memorySpace>>
468 feBDElectrostaticsHamiltonian,
469 std::shared_ptr<
470 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
471 memorySpace>> feBDEXCHamiltonian,
472 /* PSP related info */
473 std::shared_ptr<
474 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
475 memorySpace>>
476 feBDAtomCenterNonLocalOperator,
477 const std::map<std::string, std::string> &atomSymbolToPSPFilename,
478 /* linAgOperations Context*/
480 linAlgOpContext,
481 /* basis overlap related info */
482 const OpContext &MContextForInv =
485 memorySpace>(),
486 const OpContext &MContext =
489 memorySpace>(),
490 const OpContext &MInvContext =
493 memorySpace>(),
494 bool isResidualChebyshevFilter = true,
495 /* TCI related info */
497
498 ~KohnShamDFT();
499
500 void
501 solve();
502
503 double
505
506 double
508
509 void
511
512 private:
514 std::vector<RealType> d_occupation;
515 const double d_SCFTol;
517 std::shared_ptr<
520 std::shared_ptr<DensityCalculator<ValueTypeWaveFunctionBasis,
521 ValueTypeWaveFunctionCoeff,
522 memorySpace,
523 dim>>
525 std::shared_ptr<KohnShamOperatorContextFE<ValueTypeElectrostaticsCoeff,
526 ValueTypeElectrostaticsBasis,
527 ValueTypeWaveFunctionCoeff,
528 ValueTypeWaveFunctionBasis,
529 memorySpace,
530 dim>>
532 std::shared_ptr<ExchangeCorrelationFE<ValueTypeWaveFunctionBasis,
533 ValueTypeWaveFunctionCoeff,
534 memorySpace,
535 dim>>
537 std::shared_ptr<ElectrostaticFE<ValueTypeElectrostaticsBasis,
538 ValueTypeElectrostaticsCoeff,
539 ValueTypeWaveFunctionBasis,
540 memorySpace,
541 dim>>
543 std::shared_ptr<KineticFE<ValueTypeWaveFunctionBasis,
544 ValueTypeWaveFunctionCoeff,
545 memorySpace,
546 dim>>
548
549 std::shared_ptr<const basis::FEBasisManager<ValueTypeWaveFunctionCoeff,
550 ValueTypeWaveFunctionBasis,
551 memorySpace,
552 dim>>
554 std::vector<RealType> d_kohnShamEnergies;
567 std::shared_ptr<linearAlgebra::LinAlgOpContext<memorySpace>>
574
575 std::shared_ptr<
576 const basis::FEBasisDataStorage<ValueTypeWaveFunctionBasis,
577 memorySpace>>
579
584
585 std::shared_ptr<ElectrostaticExcFE<ValueTypeElectrostaticsCoeff,
586 ValueTypeElectrostaticsBasis,
587 ValueTypeWaveFunctionCoeff,
588 ValueTypeWaveFunctionBasis,
589 memorySpace,
590 dim>>
594
595 std::shared_ptr<atoms::AtomSphericalDataContainer>
597
599
600 quadrature::QuadratureValuesContainer<ValueTypeElectrostaticsCoeff,
601 memorySpace>
603
604 std::shared_ptr<linearAlgebra::ElpaScalapackManager> d_elpaScala;
605
607
608 }; // end of KohnShamDFT
609 } // end of namespace ksdft
610} // end of namespace dftefe
611#include "KohnShamDFT.t.cpp"
612#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:49
Definition: KohnShamDFT.h:54
const utils::mpi::MPIComm & d_mpiCommDomain
Definition: KohnShamDFT.h:565
std::vector< RealType > d_kohnShamEnergies
Definition: KohnShamDFT.h:554
std::shared_ptr< linearAlgebra::ElpaScalapackManager > d_elpaScala
Definition: KohnShamDFT.h:604
quadrature::QuadratureValuesContainer< RealType, memorySpace > d_coreCorrDensUPF
Definition: KohnShamDFT.h:562
linearAlgebra::Vector< ValueTypeWaveFunctionCoeff, memorySpace > d_lanczosGuess
Definition: KohnShamDFT.h:570
linearAlgebra::blasLapack::real_type< ValueType > RealType
Definition: KohnShamDFT.h:71
const size_type d_numElectrons
Definition: KohnShamDFT.h:573
double d_smearingTemperature
Definition: KohnShamDFT.h:606
bool d_isOEFEBasis
Definition: KohnShamDFT.h:593
std::shared_ptr< atoms::AtomSphericalDataContainer > d_atomSphericalDataContainerPSP
Definition: KohnShamDFT.h:596
const OpContext * d_MContext
Definition: KohnShamDFT.h:564
quadrature::QuadratureValuesContainer< ValueTypeElectrostaticsCoeff, memorySpace > d_atomicTotalElecPotElectronicQuad
Definition: KohnShamDFT.h:602
const size_type d_numWantedEigenvalues
Definition: KohnShamDFT.h:513
bool d_isSolved
Definition: KohnShamDFT.h:581
std::shared_ptr< const basis::FEBasisManager< ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim > > d_feBMWaveFn
Definition: KohnShamDFT.h:553
bool d_isONCVNonLocPSP
Definition: KohnShamDFT.h:598
std::vector< RealType > d_occupation
Definition: KohnShamDFT.h:514
bool d_isNlcc
Definition: KohnShamDFT.h:598
MixingScheme< RealType, RealType > d_mixingScheme
Definition: KohnShamDFT.h:566
void printTotalInScopeTimings()
Definition: KohnShamDFT.t.cpp:3044
linearAlgebra::blasLapack::scalar_type< ValueTypeOperator, ValueTypeOperator > ValueType
Definition: KohnShamDFT.h:70
quadrature::QuadratureValuesContainer< ValueTypeElectrostaticsCoeff, memorySpace > d_atomicTotalElecPotNuclearQuad
Definition: KohnShamDFT.h:602
bool d_isAdaptiveAndersonMixingParameter
Definition: KohnShamDFT.h:558
double d_freeEnergy
Definition: KohnShamDFT.h:606
utils::MemoryStorage< RealType, utils::MemorySpace::HOST > d_jxwDataHost
Definition: KohnShamDFT.h:516
double getFreeEnergy()
Definition: KohnShamDFT.t.cpp:3024
quadrature::QuadratureValuesContainer< RealType, memorySpace > d_densityOutQuadValues
Definition: KohnShamDFT.h:561
size_type d_mixingHistory
Definition: KohnShamDFT.h:556
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeWaveFunctionBasis, memorySpace > > d_feBDEXCHamiltonian
Definition: KohnShamDFT.h:578
bool d_isResidualChebyshevFilter
Definition: KohnShamDFT.h:592
double d_mixingParameter
Definition: KohnShamDFT.h:557
RealType d_groundStateEnergy
Definition: KohnShamDFT.h:580
size_type d_numMaxSCFIter
Definition: KohnShamDFT.h:563
typename linearAlgebra::HermitianIterativeEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::OpContext OpContext
Definition: KohnShamDFT.h:75
std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > > d_linAlgOpContext
Definition: KohnShamDFT.h:568
std::shared_ptr< KineticFE< ValueTypeWaveFunctionBasis, ValueTypeWaveFunctionCoeff, memorySpace, dim > > d_hamitonianKin
Definition: KohnShamDFT.h:547
utils::Profiler d_pTotal
Definition: KohnShamDFT.h:582
linearAlgebra::blasLapack::scalar_type< ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionBasis > ValueTypeOperator
Definition: KohnShamDFT.h:64
quadrature::QuadratureValuesContainer< RealType, memorySpace > d_densityInQuadValues
Definition: KohnShamDFT.h:561
std::shared_ptr< KohnShamEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace > > d_ksEigSolve
Definition: KohnShamDFT.h:519
bool d_evaluateEnergyEverySCF
Definition: KohnShamDFT.h:559
utils::ConditionalOStream d_rootCout
Definition: KohnShamDFT.h:555
std::shared_ptr< ElectrostaticExcFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim > > d_hamiltonianElectroExc
Definition: KohnShamDFT.h:591
utils::Profiler d_p
Definition: KohnShamDFT.h:582
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:515
void solve()
Definition: KohnShamDFT.t.cpp:2464
quadrature::QuadratureValuesContainer< RealType, memorySpace > d_densityResidualQuadValues
Definition: KohnShamDFT.h:562
bool d_isPSPCalculation
Definition: KohnShamDFT.h:583
const OpContext * d_MInvContext
Definition: KohnShamDFT.h:564
linearAlgebra::MultiVector< ValueTypeWaveFunctionCoeff, memorySpace > d_kohnShamWaveFunctions
Definition: KohnShamDFT.h:572
std::shared_ptr< DensityCalculator< ValueTypeWaveFunctionBasis, ValueTypeWaveFunctionCoeff, memorySpace, dim > > d_densCalc
Definition: KohnShamDFT.h:524
~KohnShamDFT()
Definition: KohnShamDFT.t.cpp:2447
std::shared_ptr< KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim > > d_hamitonianOperator
Definition: KohnShamDFT.h:531
double getGroundStateEnergy()
Definition: KohnShamDFT.t.cpp:3004
quadrature::QuadratureValuesContainer< RealType, memorySpace > d_coreCorrectedDensity
Definition: KohnShamDFT.h:562
std::shared_ptr< ExchangeCorrelationFE< ValueTypeWaveFunctionBasis, ValueTypeWaveFunctionCoeff, memorySpace, dim > > d_hamitonianXC
Definition: KohnShamDFT.h:536
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:542
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
static const atoms::TCIADataParams TCIA_PARAMS
Definition: Defaults.h:171
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
Definition: AtomTCIASpline.h:44