DFT-FE 1.3.0-pre
Density Functional Theory With Finite-Elements
Loading...
Searching...
No Matches
exchangeCorrelationFunctionalEvaluator.h
Go to the documentation of this file.
1// ---------------------------------------------------------------------
2//
3// Copyright (c) 2017-2025 The Regents of the University of Michigan and DFT-FE
4// authors.
5//
6// This file is part of the DFT-FE code.
7//
8// The DFT-FE code is free software; you can use it, redistribute
9// it, and/or modify it under the terms of the GNU Lesser General
10// Public License as published by the Free Software Foundation; either
11// version 2.1 of the License, or (at your option) any later version.
12// The full text of the license can be found in the file LICENSE at
13// the top level of the DFT-FE distribution.
14//
15// ---------------------------------------------------------------------
16//
17#ifndef DFTFE_EXCORRFUNCTIONALEVALUATOR_H
18#define DFTFE_EXCORRFUNCTIONALEVALUATOR_H
19#include <MemoryStorage.h>
20#include <cmath>
21#include <XCfunctionalDefs/xc_params.h>
22
23namespace dftfe
24{
25#define DFTFE_FUNCTIONALEVALUATOR_LDA_X(NAME, BODY) \
26 template <dftfe::utils::MemorySpace memorySpace> \
27 void LDAX_##NAME( \
28 dftfe::uInt numPoints, \
29 const dftfe::utils::MemoryStorage<double, memorySpace> &densityValues, \
30 dftfe::utils::MemoryStorage<double, memorySpace> &exEnergyOut, \
31 dftfe::utils::MemoryStorage<double, memorySpace> &pdexDensity);
32
33#define DFTFE_FUNCTIONALEVALUATOR_LDA_C(NAME, BODY) \
34 template <dftfe::utils::MemorySpace memorySpace> \
35 void LDAC_##NAME( \
36 dftfe::uInt numPoints, \
37 const dftfe::utils::MemoryStorage<double, memorySpace> &densityValues, \
38 dftfe::utils::MemoryStorage<double, memorySpace> &corrEnergyOut, \
39 dftfe::utils::MemoryStorage<double, memorySpace> &pdecDensity);
41#define DFTFE_FUNCTIONALEVALUATOR_GGA_X(NAME, BODY) \
42 template <dftfe::utils::MemorySpace memorySpace> \
43 void GGAX_##NAME( \
44 dftfe::uInt numPoints, \
45 const dftfe::utils::MemoryStorage<double, memorySpace> &densityValues, \
46 const dftfe::utils::MemoryStorage<double, memorySpace> &sigmaValues, \
47 dftfe::utils::MemoryStorage<double, memorySpace> &exEnergyOut, \
48 dftfe::utils::MemoryStorage<double, memorySpace> &pdexDensity, \
49 dftfe::utils::MemoryStorage<double, memorySpace> &pdexSigma);
50
51#define DFTFE_FUNCTIONALEVALUATOR_GGA_C(NAME, BODY) \
52 template <dftfe::utils::MemorySpace memorySpace> \
53 void GGAC_##NAME( \
54 dftfe::uInt numPoints, \
55 const dftfe::utils::MemoryStorage<double, memorySpace> &densityValues, \
56 const dftfe::utils::MemoryStorage<double, memorySpace> &sigmaValues, \
57 dftfe::utils::MemoryStorage<double, memorySpace> &corrEnergyOut, \
58 dftfe::utils::MemoryStorage<double, memorySpace> &pdecDensity, \
59 dftfe::utils::MemoryStorage<double, memorySpace> &pdecSigma);
60
61#define DFTFE_FUNCTIONALEVALUATOR_MGGA_X(NAME, BODY) \
62 template <dftfe::utils::MemorySpace memorySpace> \
63 void MGGAX_##NAME( \
64 dftfe::uInt numPoints, \
65 const dftfe::utils::MemoryStorage<double, memorySpace> &densityValues, \
66 const dftfe::utils::MemoryStorage<double, memorySpace> &sigmaValues, \
67 const dftfe::utils::MemoryStorage<double, memorySpace> &tauValues, \
68 dftfe::utils::MemoryStorage<double, memorySpace> &exEnergyOut, \
69 dftfe::utils::MemoryStorage<double, memorySpace> &pdexDensity, \
70 dftfe::utils::MemoryStorage<double, memorySpace> &pdexSigma, \
71 dftfe::utils::MemoryStorage<double, memorySpace> &pdexTau, \
72 bool tauNeededX, \
73 bool enforceFHCX);
74
75#define DFTFE_FUNCTIONALEVALUATOR_MGGA_C(NAME, BODY) \
76 template <dftfe::utils::MemorySpace memorySpace> \
77 void MGGAC_##NAME( \
78 dftfe::uInt numPoints, \
79 const dftfe::utils::MemoryStorage<double, memorySpace> &densityValues, \
80 const dftfe::utils::MemoryStorage<double, memorySpace> &sigmaValues, \
81 const dftfe::utils::MemoryStorage<double, memorySpace> &tauValues, \
82 dftfe::utils::MemoryStorage<double, memorySpace> &corrEnergyOut, \
83 dftfe::utils::MemoryStorage<double, memorySpace> &pdecDensity, \
84 dftfe::utils::MemoryStorage<double, memorySpace> &pdecSigma, \
85 dftfe::utils::MemoryStorage<double, memorySpace> &pdecTau, \
86 bool tauNeededC, \
87 bool enforceFHCC);
88
89#include <exchangeCorrelationFunctionalEvaluation.def>
90
91} // namespace dftfe
92
93
94#undef DFTFE_FUNCTIONALEVALUATOR_LDA_X
95#undef DFTFE_FUNCTIONALEVALUATOR_LDA_C
96
97#undef DFTFE_FUNCTIONALEVALUATOR_GGA_X
98#undef DFTFE_FUNCTIONALEVALUATOR_GGA_C
99
100#undef DFTFE_FUNCTIONALEVALUATOR_MGGA_X
101#undef DFTFE_FUNCTIONALEVALUATOR_MGGA_C
102#endif // DFTFE_EXCORRFUNCTIONALEVALUATOR_H
Definition pseudoPotentialToDftfeConverter.cc:34