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
192Sep_Cell::Sep_Cell() noexcept {}
193Sep_Cell::~Sep_Cell() noexcept {}
194
195namespace elecstate
196{
197 void cal_ux(UnitCell& ucell)
198 {
199 ucell.magnet.lsign_ = false;
200
201 ucell.magnet.ux_[0] = 0;
202 ucell.magnet.ux_[1] = 1;
203 ucell.magnet.ux_[2] = 2;
204
205 ucell.magnet.lsign_ = true;
206 };
207}
208
209#ifdef __LCAO
212#endif
213
214namespace Parallel_Reduce
215{
217 template<typename T>
218 void reduce_all(T& object){};
219 template<typename T>
220 void reduce_all(T* object, const int n){};
221 template<typename T>
222 void reduce_pool(T& object){};
223 template<typename T>
224 void reduce_pool(T* object, const int n){};
225
226 template<>
227 void Parallel_Reduce::reduce_pool<double>(double& object)
228 {
229 #ifdef __MPI
230 double swap = object;
231 MPI_Allreduce(&swap , &object , 1, MPI_DOUBLE , MPI_SUM , MPI_COMM_WORLD);
232 #endif
233 return;
234 }
235 template void reduce_all<double>(double& object);
236 template void reduce_all<double>(double* object, const int n);
237 template void reduce_pool<float>(float& object);
238 template void reduce_pool<float>(float* object, const int n);
239 template void reduce_pool<double>(double* object, const int n);
240}
~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
SepPot()
Definition symmetry_test_analysis.cpp:37
~SepPot()
Definition symmetry_test_analysis.cpp:38
~Sep_Cell() noexcept
Definition symmetry_test_analysis.cpp:40
Sep_Cell() noexcept
Definition symmetry_test_analysis.cpp:39
Definition unitcell.h:17
~UnitCell()
Definition symmetry_test_analysis.cpp:34
Magnetism magnet
Definition unitcell.h:23
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