ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
xc3_mock.h
Go to the documentation of this file.
1// I'm mocking FFT here because it is not possible to write
2// unit tests with FFT
3#include <fstream>
4
5namespace ModulePW
6{
9
10 template <typename FPTYPE>
11 void PW_Basis::real2recip(const FPTYPE* in, std::complex<FPTYPE>* out, const bool add, const FPTYPE factor) const
12 {
13 for (int i=0;i<nrxx;i++)
14 {
15 out[i] = in[i];
16 }
17 }
18 template void PW_Basis::real2recip<double>(const double* in,
19 std::complex<double>* out,
20 bool add,
21 double factor) const;
22
23 template <typename FPTYPE>
24 void PW_Basis::real2recip(const std::complex<FPTYPE>* in,
25 std::complex<FPTYPE>* out,
26 const bool add,
27 const FPTYPE factor) const
28 {
29 for (int i=0;i<nrxx;i++)
30 {
31 out[i] = in[i];
32 }
33 }
34 template void PW_Basis::real2recip<double>(const std::complex<double>* in,
35 std::complex<double>* out,
36 const bool add,
37 const double factor) const;
38
39 template <typename FPTYPE>
40 void PW_Basis::recip2real(const std::complex<FPTYPE>* in,
41 std::complex<FPTYPE>* out,
42 const bool add,
43 const FPTYPE factor) const // in:(nz, ns) ; out(nplane,nx*ny)
44 {
45 for (int i=0;i<nrxx;i++)
46 {
47 out[i] = - ModuleBase::IMAG_UNIT*in[i];
48 }
49 }
50 template void PW_Basis::recip2real(const std::complex<double>* in,
51 std::complex<double>* out,
52 const bool add,
53 const double factor) const;
54
55 template <typename FPTYPE>
56 void PW_Basis_K::recip2real(const std::complex<FPTYPE>* in,
57 std::complex<FPTYPE>* out,
58 const int ik,
59 const bool add,
60 const FPTYPE factor) const // in:(nz, ns) ; out(nplane,nx*ny)
61 {
62 for (int i = 0; i < nrxx; i++)
63 {
64 out[i] = -ModuleBase::IMAG_UNIT * in[i];
65 }
66 }
67 template void PW_Basis_K::recip2real(const std::complex<double>* in,
68 std::complex<double>* out,
69 const int ik,
70 const bool add,
71 const double factor) const;
72
74 {
76 return x;
77 }
78
79
80 template <typename FPTYPE, typename Device>
81 void PW_Basis_K::real_to_recip(const Device* ctx,
82 const std::complex<FPTYPE>* in,
83 std::complex<FPTYPE>* out,
84 const int ik,
85 const bool add,
86 const FPTYPE factor) const // in:(nplane,nx*ny) ; out(nz, ns)
87 {
88 for (int i=0;i<nrxx;i++)
89 {
90 out[i] = in[i];
91 }
92 }
93 template <typename FPTYPE, typename Device>
94 void PW_Basis_K::recip_to_real(const Device* ctx,
95 const std::complex<FPTYPE>* in,
96 std::complex<FPTYPE>* out,
97 const int ik,
98 const bool add,
99 const FPTYPE factor) const
100 {
101 for (int i = 0; i < nrxx; i++)
102 {
103 out[i] = -ModuleBase::IMAG_UNIT * in[i];
104 }
105 }
106
107 template void PW_Basis_K::real_to_recip<double, base_device::DEVICE_CPU>(const base_device::DEVICE_CPU* ctx,
108 const std::complex<double>* in,
109 std::complex<double>* out,
110 const int ik,
111 const bool add,
112 const double factor) const;
113 template void PW_Basis_K::recip_to_real<double, base_device::DEVICE_CPU>(const base_device::DEVICE_CPU* ctx,
114 const std::complex<double>* in,
115 std::complex<double>* out,
116 const int ik,
117 const bool add,
118 const double factor) const;
119#if __CUDA || __ROCM
120 template void PW_Basis_K::real_to_recip<double, base_device::DEVICE_GPU>(const base_device::DEVICE_GPU* ctx,
121 const std::complex<double>* in,
122 std::complex<double>* out,
123 const int ik,
124 const bool add,
125 const double factor) const;
126
127 template void PW_Basis_K::recip_to_real<double, base_device::DEVICE_GPU>(const base_device::DEVICE_GPU* ctx,
128 const std::complex<double>* in,
129 std::complex<double>* out,
130 const int ik,
131 const bool add,
132 const double factor) const;
133#endif
134
135
136 void PW_Basis::initgrids(double, ModuleBase::Matrix3, double){};
137 void PW_Basis::distribute_r(){};
138 void PW_Basis::initgrids(double, ModuleBase::Matrix3, int, int, int){};
139
142}
143
144namespace ModuleBase
145{
146 void WARNING_QUIT(const std::string &file,const std::string &description)
147 {
148 std::cout << " " << file <<" warning : "<< description<<std::endl;
149 exit(1);
150 }
151 void WARNING(const std::string &file,const std::string &description) {};
152
153 void Matrix3::Identity(){};
154
155 IntArray::IntArray(int,int){};
156 IntArray::~IntArray(){};
157
158 void TITLE(const std::string &class_function_name,bool disable){};
159 void TITLE(const std::string &class_name,const std::string &function_name,bool disable){};
160
161}
162
163namespace GlobalV
164{
165 std::string BASIS_TYPE = "";
166 bool CAL_STRESS = false;
167 int CAL_FORCE = 0;
168 int NSPIN;
169 int NPOL;
170 bool DOMAG;
172 std::ofstream ofs_device;
173 std::ofstream ofs_running;
174}
175
176namespace GlobalC
177{
178 Exx_Info exx_info;
179}
180
183
186
189
190namespace elecstate
191{
192 void cal_ux(UnitCell& ucell)
193 {
194 ucell.magnet.lsign_ = false;
195
196 ucell.magnet.ux_[0] = 0;
197 ucell.magnet.ux_[1] = 1;
198 ucell.magnet.ux_[2] = 2;
199
200 ucell.magnet.lsign_ = true;
201 };
202}
203
204#ifdef __LCAO
207#endif
208
209namespace Parallel_Reduce
210{
212 template<typename T>
213 void reduce_all(T& object){};
214 template<typename T>
215 void reduce_all(T* object, const int n){};
216 template<typename T>
217 void reduce_pool(T& object){};
218 template<typename T>
219 void reduce_pool(T* object, const int n){};
220
221 template<>
222 void Parallel_Reduce::reduce_pool<double>(double& object)
223 {
224 #ifdef __MPI
225 double swap = object;
226 MPI_Allreduce(&swap , &object , 1, MPI_DOUBLE , MPI_SUM , MPI_COMM_WORLD);
227 #endif
228 return;
229 }
230 template void reduce_all<double>(double& object);
231 template void reduce_all<double>(double* object, const int n);
232 template void reduce_pool<float>(float& object);
233 template void reduce_pool<float>(float* object, const int n);
234 template void reduce_pool<double>(double* object, const int n);
235}
~Charge()
Definition charge.cpp:42
Charge()
Definition charge.cpp:36
InfoNonlocal()
Definition klist_test.cpp:44
~InfoNonlocal()
Definition klist_test.cpp:47
bool lsign_
Definition magnetism.h:39
double ux_[3]
Definition magnetism.h:37
Magnetism()
Definition sltk_atom_arrange_test.cpp:27
~Magnetism()
Definition sltk_atom_arrange_test.cpp:33
3x3 matrix and related mathamatical operations
Definition matrix3.h:19
3 elements vector
Definition vector3.h:22
void real_to_recip(const Device *ctx, const std::complex< FPTYPE > *in, std::complex< FPTYPE > *out, const int ik, const bool add=false, const FPTYPE factor=1.0) const
Definition xc3_mock.h:81
PW_Basis_K()
Definition pw_basis_k.cpp:12
void recip2real(const std::complex< FPTYPE > *in, FPTYPE *out, const int ik, const bool add=false, const FPTYPE factor=1.0) const
transform reciprocal space to real space
Definition pw_transform_k.cpp:228
~PW_Basis_K()
Definition pw_basis_k.cpp:17
void recip_to_real(const Device *ctx, const std::complex< FPTYPE > *in, std::complex< FPTYPE > *out, const int ik, const bool add=false, const FPTYPE factor=1.0) const
Definition xc3_mock.h:94
ModuleBase::Vector3< double > getgpluskcar(const int ik, const int igl) const
Definition pw_basis_k.cpp:390
int nrxx
Definition pw_basis.h:120
void real2recip(const FPTYPE *in, std::complex< FPTYPE > *out, const bool add=false, const FPTYPE factor=1.0) const
transform real space to reciprocal space
Definition pw_transform.cpp:79
PW_Basis()
Definition pw_basis.cpp:11
virtual void distribute_r()
distribute real-space grids to different processors
Definition pw_distributer.cpp:11
virtual void initgrids(const double lat0_in, const ModuleBase::Matrix3 latvec_in, const double gridecut)
Definition pw_init.cpp:23
void recip2real(const std::complex< FPTYPE > *in, FPTYPE *out, const bool add=false, const FPTYPE factor=1.0) const
transform reciprocal space to real space
Definition pw_transform.cpp:205
virtual ~PW_Basis()
Definition pw_basis.cpp:23
Definition unitcell.h:16
~UnitCell()
Definition symmetry_test_analysis.cpp:34
Magnetism magnet
Definition unitcell.h:21
UnitCell()
Definition symmetry_test_analysis.cpp:33
#define T
Definition exp.cpp:237
Definition cal_epsilon_test.cpp:31
Definition global_variable.cpp:14
std::ofstream ofs_device
Definition global_variable.cpp:41
std::string BASIS_TYPE
Definition test_xc.cpp:21
int CAL_FORCE
Definition test_xc.cpp:23
int NPOL
Definition xc3_mock.h:169
bool CAL_STRESS
Definition test_xc.cpp:22
int NSPIN
Definition test_xc.cpp:24
std::ofstream ofs_running
Definition global_variable.cpp:38
bool DOMAG
Definition xc3_mock.h:170
bool DOMAG_Z
Definition xc3_mock.h:171
int4 i[880]
Definition sincos.cpp:28
double x[440]
Definition sincos.cpp:28
Definition array_pool.h:6
void WARNING_QUIT(const std::string &, const std::string &)
Combine the functions of WARNING and QUIT.
Definition test_delley.cpp:14
const std::complex< double > IMAG_UNIT(0.0, 1.0)
void WARNING(const std::string &file, const std::string &description)
Print out warning information in warning.log file.
Definition tool_quit_no_exit.cpp:8
void TITLE(const std::string &class_name, const std::string &function_name, const bool disable)
Definition tool_title.cpp:18
Definition pw_op.cpp:3
Definition parallel_reduce.h:14
void reduce_all(T &object)
reduce in all process
Definition depend_mock.cpp:14
void reduce_pool< double >(double &object)
Definition depend_mock.cpp:20
void reduce_pool(T &object)
Definition depend_mock.cpp:15
Definition cal_dm.h:10
void cal_ux(UnitCell &ucell)
Definition cal_ux.cpp:6
file(GLOB ATen_CORE_SRCS "*.cpp") set(ATen_CPU_SRCS $
Definition CMakeLists.txt:1
Definition exx_info.h:12