Skip to content

Commit a8891ec

Browse files
committed
Merge branch 'snow2' into develop
2 parents 186c3a7 + eeafbf1 commit a8891ec

File tree

5 files changed

+140
-102
lines changed

5 files changed

+140
-102
lines changed

source/module_io/test/cal_dos_test.cpp

Lines changed: 39 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99
#include "dos_test.h"
1010

1111
/************************************************
12-
* unit test of calculate_dos
12+
* unit test of ca_dos
1313
***********************************************/
1414

1515
/**
1616
* - Tested Functions:
17-
* - calculate_dos()
17+
* - cal_dos()
1818
* - the function to calculate and print out
1919
* - density of states
2020
*/
@@ -28,13 +28,13 @@ class DosTest : public ::testing::Test
2828

2929
TEST_F(DosTest,Dos)
3030
{
31-
//is,fa,fa1,de_ev,emax_ev,emin_ev,bcoeff,nks,nkstot,nbands
32-
DosPrepare dosp = DosPrepare(0,"DOS1","DOS1_smearing.dat",0.005,18,-6,0.07,36,36,8);
31+
//is,fa,fa1,de_ev,emax_ev,emin_ev,bcoeff,nks,nkstot,nbands
32+
DosPrepare dosp = DosPrepare(0,"DOS1.dat","DOS1_smear.dat",0.005,18,-6,0.07,36,36,8);
3333
dosp.set_isk();
3434
dosp.read_wk();
3535
dosp.read_istate_info();
3636
EXPECT_EQ(dosp.is,0);
37-
ModuleIO::calculate_dos(dosp.is,
37+
ModuleIO::cal_dos(dosp.is,
3838
dosp.fa,
3939
dosp.fa1,
4040
dosp.de_ev,
@@ -48,37 +48,43 @@ TEST_F(DosTest,Dos)
4848
dosp.nbands,
4949
dosp.ekb,
5050
dosp.wg);
51+
5152
#ifdef __MPI
5253
if(GlobalV::MY_RANK==0)
5354
{
5455
#endif
5556
std::ifstream ifs;
56-
ifs.open("DOS1_smearing.dat");
57+
ifs.open("DOS1_smear.dat");
5758
std::string str((std::istreambuf_iterator<char>(ifs)),std::istreambuf_iterator<char>());
58-
EXPECT_THAT(str, testing::HasSubstr(" 3200")); // number of electrons is 32
59+
EXPECT_THAT(str, testing::HasSubstr("4801 # number of points"));
60+
EXPECT_THAT(str, testing::HasSubstr(" -5.53 0.0241031 0.000772634"));
61+
EXPECT_THAT(str, testing::HasSubstr(" 17.19 0.0952359 15.9976"));
5962
ifs.close();
60-
ifs.open("DOS1");
63+
remove("DOS1_smear.dat");
64+
65+
ifs.open("DOS1.dat");
6166
std::string str1((std::istreambuf_iterator<char>(ifs)),std::istreambuf_iterator<char>());
62-
EXPECT_THAT(str1, testing::HasSubstr("4800")); //number of energy points is (18-(-6))/0.005
67+
EXPECT_THAT(str1, testing::HasSubstr("4801 # number of points"));
68+
EXPECT_THAT(str1, testing::HasSubstr(" -5.39 0.03125 0.03125"));
69+
EXPECT_THAT(str1, testing::HasSubstr(" -1.25 0.1875 1.90625"));
6370
ifs.close();
64-
remove("DOS1_smearing.dat");
65-
remove("DOS1");
71+
remove("DOS1.dat");
6672
#ifdef __MPI
6773
}
6874
#endif
6975
}
7076

7177
TEST_F(DosTest,DosW1)
7278
{
73-
//is,fa,fa1,de_ev,emax_ev,emin_ev,bcoeff,nks,nkstot,nbands
74-
DosPrepare dosp = DosPrepare(0,"DOS1","DOS1_smearing.dat",-0.005,18,-6,0.07,36,36,8);
79+
//is,fa,fa1,de_ev,emax_ev,emin_ev,bcoeff,nks,nkstot,nbands
80+
DosPrepare dosp = DosPrepare(0,"DOS1.dat","DOS1_smear.dat",-0.005,18,-6,0.07,36,36,8);
7581
dosp.set_isk();
7682
dosp.read_wk();
7783
dosp.read_istate_info();
7884
EXPECT_EQ(dosp.is,0);
7985
EXPECT_LE(dosp.de_ev,0);
80-
GlobalV::ofs_warning.open("warninglog1");
81-
EXPECT_NO_THROW(ModuleIO::calculate_dos(dosp.is,
86+
GlobalV::ofs_warning.open("warning1.log");
87+
EXPECT_NO_THROW(ModuleIO::cal_dos(dosp.is,
8288
dosp.fa,
8389
dosp.fa1,
8490
dosp.de_ev,
@@ -98,28 +104,28 @@ TEST_F(DosTest,DosW1)
98104
{
99105
#endif
100106
std::ifstream ifs;
101-
ifs.open("warninglog1");
107+
ifs.open("warning1.log");
102108
std::string str((std::istreambuf_iterator<char>(ifs)),std::istreambuf_iterator<char>());
103-
EXPECT_THAT(str, testing::HasSubstr("ModuleIO::calculate_dos warning : de <= 0"));
109+
EXPECT_THAT(str, testing::HasSubstr("ModuleIO::cal_dos warning : de <= 0"));
104110
ifs.close();
105-
remove("warninglog1");
106-
remove("DOS1_smearing.dat");
107-
remove("DOS1");
111+
remove("warning1.log");
112+
remove("DOS1_smear.dat");
113+
remove("DOS1.dat");
108114
#ifdef __MPI
109115
}
110116
#endif
111117
}
112118

113119
TEST_F(DosTest,DosW2)
114120
{
115-
//is,fa,fa1,de_ev,emax_ev,emin_ev,bcoeff,nks,nkstot,nbands
116-
DosPrepare dosp = DosPrepare(0,"DOS1","DOS1_smearing.dat",0.005,-6,18,0.07,36,36,8);
121+
//is,fa,fa1,de_ev,emax_ev,emin_ev,bcoeff,nks,nkstot,nbands
122+
DosPrepare dosp = DosPrepare(0,"DOS1.dat","DOS1_smear.dat",0.005,-6,18,0.07,36,36,8);
117123
dosp.set_isk();
118124
dosp.read_wk();
119125
dosp.read_istate_info();
120126
EXPECT_EQ(dosp.is,0);
121-
GlobalV::ofs_warning.open("warninglog2");
122-
EXPECT_NO_THROW(ModuleIO::calculate_dos(dosp.is,
127+
GlobalV::ofs_warning.open("warning2.log");
128+
EXPECT_NO_THROW(ModuleIO::cal_dos(dosp.is,
123129
dosp.fa,
124130
dosp.fa1,
125131
dosp.de_ev,
@@ -139,54 +145,13 @@ TEST_F(DosTest,DosW2)
139145
{
140146
#endif
141147
std::ifstream ifs;
142-
ifs.open("warninglog2");
148+
ifs.open("warning2.log");
143149
std::string str((std::istreambuf_iterator<char>(ifs)),std::istreambuf_iterator<char>());
144-
EXPECT_THAT(str, testing::HasSubstr("ModuleIO::calculate_dos warning : emax_ev < emin_ev"));
150+
EXPECT_THAT(str, testing::HasSubstr("ModuleIO::cal_dos warning : emax_ev < emin_ev"));
145151
ifs.close();
146-
remove("warninglog2");
147-
remove("DOS1_smearing.dat");
148-
remove("DOS1");
149-
#ifdef __MPI
150-
}
151-
#endif
152-
}
153-
154-
TEST_F(DosTest,DosW3)
155-
{
156-
//is,fa,fa1,de_ev,emax_ev,emin_ev,bcoeff,nks,nkstot,nbands
157-
DosPrepare dosp = DosPrepare(0,"DOS1","DOS1_smearing.dat",0.005,18,18,0.07,36,36,8);
158-
dosp.set_isk();
159-
dosp.read_wk();
160-
dosp.read_istate_info();
161-
EXPECT_EQ(dosp.is,0);
162-
GlobalV::ofs_warning.open("warninglog3");
163-
EXPECT_NO_THROW(ModuleIO::calculate_dos(dosp.is,
164-
dosp.fa,
165-
dosp.fa1,
166-
dosp.de_ev,
167-
dosp.emax_ev,
168-
dosp.emin_ev,
169-
dosp.bcoeff,
170-
dosp.nks,
171-
dosp.nkstot,
172-
dosp.wk,
173-
dosp.isk,
174-
dosp.nbands,
175-
dosp.ekb,
176-
dosp.wg));
177-
GlobalV::ofs_warning.close();
178-
#ifdef __MPI
179-
if(GlobalV::MY_RANK==0)
180-
{
181-
#endif
182-
std::ifstream ifs;
183-
ifs.open("warninglog3");
184-
std::string str((std::istreambuf_iterator<char>(ifs)),std::istreambuf_iterator<char>());
185-
EXPECT_THAT(str, testing::HasSubstr("ModuleIO::calculate_dos warning : npoints <= 0"));
186-
ifs.close();
187-
remove("warninglog3");
188-
remove("DOS1_smearing.dat");
189-
remove("DOS1");
152+
remove("warning2.log");
153+
remove("DOS1_smear.dat");
154+
remove("DOS1.dat");
190155
#ifdef __MPI
191156
}
192157
#endif
@@ -200,6 +165,10 @@ int main(int argc, char **argv)
200165
testing::InitGoogleTest(&argc,argv);
201166
MPI_Comm_size(MPI_COMM_WORLD,&GlobalV::NPROC);
202167
MPI_Comm_rank(MPI_COMM_WORLD,&GlobalV::MY_RANK);
168+
169+
// only test a certain one
170+
//::testing::GTEST_FLAG(filter) = "DosTest.DosW1";
171+
203172
int result = RUN_ALL_TESTS();
204173

205174
MPI_Finalize();

source/module_io/test/dos_test.h

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,21 @@
88
class DosPrepare
99
{
1010
public:
11-
DosPrepare(int is_in, std::string fa_in, std::string fa1_in,
12-
double de_ev_in, double emax_ev_in,
13-
double emin_ev_in, double bcoeff_in,
14-
int nks_in, int nkstot_in, int nbands_in):
11+
DosPrepare(int is_in,
12+
std::string fa_in,
13+
std::string fa1_in,
14+
double de_ev_in,
15+
double emax_ev_in,
16+
double emin_ev_in,
17+
double bcoeff_in,
18+
int nks_in,
19+
int nkstot_in,
20+
int nbands_in):
1521
is(is_in),fa(fa_in),fa1(fa1_in),
1622
de_ev(de_ev_in),emax_ev(emax_ev_in),
1723
emin_ev(emin_ev_in),bcoeff(bcoeff_in),
1824
nks(nks_in),nkstot(nkstot_in),nbands(nbands_in){}
25+
1926
int is;
2027
std::string fa;
2128
std::string fa1;
@@ -30,6 +37,7 @@ class DosPrepare
3037
std::vector<double> wk;
3138
ModuleBase::matrix ekb;
3239
ModuleBase::matrix wg;
40+
3341
void set_isk()
3442
{
3543
this->isk.reserve(nks);
@@ -38,6 +46,7 @@ class DosPrepare
3846
isk[i] = 0; //spin-unpolarized case, only 1 spin
3947
}
4048
}
49+
4150
void read_wk()
4251
{
4352
this->wk.reserve(nks);
@@ -63,6 +72,7 @@ class DosPrepare
6372
wk[ik] *= 2.0;
6473
}
6574
}
75+
6676
void read_istate_info()
6777
{
6878
this->ekb.create(nks,nbands);

source/module_io/test/write_dos_pw_test.cpp

Lines changed: 53 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ class DosPWTest : public ::testing::Test
4141

4242
TEST_F(DosPWTest,Dos1)
4343
{
44-
//is,fa,fa1,de_ev,emax_ev,emin_ev,bcoeff,nks,nkstot,nbands
45-
DosPrepare dosp = DosPrepare(0,"DOS1","DOS1_smearing.dat",0.005,18,-6,0.07,36,36,8);
44+
//is,fa,fa1,de_ev,emax_ev,emin_ev,bcoeff,nks,nkstot,nbands
45+
DosPrepare dosp = DosPrepare(0,"DOS1","DOS1_smear.dat",0.005,18,-6,0.07,36,36,8);
4646
dosp.set_isk();
4747
dosp.read_wk();
4848
dosp.read_istate_info();
@@ -63,26 +63,42 @@ TEST_F(DosPWTest,Dos1)
6363
kv->wk[ik] = dosp.wk[ik];
6464
}
6565
PARAM.input.nbands = dosp.nbands;
66+
67+
// initialize the Fermi energy
68+
elecstate::efermi fermi_energy;
69+
70+
std::ofstream ofs("write_dos_pw.log");
6671
ModuleIO::write_dos_pw(dosp.ekb,
6772
dosp.wg,
6873
*kv,
74+
PARAM.inp.nbands,
75+
fermi_energy,
6976
dosp.de_ev,
7077
dos_scale,
71-
dosp.bcoeff);
78+
dosp.bcoeff,
79+
ofs);
80+
ofs.close();
81+
remove("write_dos_pw.log");
82+
7283
#ifdef __MPI
7384
if(GlobalV::MY_RANK==0)
7485
{
7586
#endif
7687
std::ifstream ifs;
77-
ifs.open("DOS1_smearing.dat");
88+
ifs.open("DOS1_smear.dat");
7889
std::string str((std::istreambuf_iterator<char>(ifs)),std::istreambuf_iterator<char>());
79-
EXPECT_THAT(str, testing::HasSubstr(" 3200")); // number of electrons is 32
90+
EXPECT_THAT(str, testing::HasSubstr("4801 # number of points"));
91+
EXPECT_THAT(str, testing::HasSubstr(" -5.53 0.0241031 0.000772634"));
92+
EXPECT_THAT(str, testing::HasSubstr(" 17.19 0.0952359 15.9976"));
8093
ifs.close();
81-
ifs.open("DOS1");
94+
remove("DOS1_smear.dat");
95+
96+
ifs.open("DOS1.dat");
8297
std::string str1((std::istreambuf_iterator<char>(ifs)),std::istreambuf_iterator<char>());
83-
EXPECT_THAT(str1, testing::HasSubstr("4800")); //number of energy points is (18-(-6))/0.005
98+
EXPECT_THAT(str1, testing::HasSubstr("4801 # number of points"));
99+
EXPECT_THAT(str1, testing::HasSubstr(" -5.39 0.03125 0.03125"));
100+
EXPECT_THAT(str1, testing::HasSubstr(" -1.25 0.1875 1.90625"));
84101
ifs.close();
85-
remove("DOS1_smearing.dat");
86102
remove("DOS1");
87103
#ifdef __MPI
88104
}
@@ -91,8 +107,8 @@ TEST_F(DosPWTest,Dos1)
91107

92108
TEST_F(DosPWTest,Dos2)
93109
{
94-
//is,fa,fa1,de_ev,emax_ev,emin_ev,bcoeff,nks,nkstot,nbands
95-
DosPrepare dosp = DosPrepare(0,"DOS1","DOS1_smearing.dat",0.005,18,-6,0.07,36,36,8);
110+
//is,fa,fa1,de_ev,emax_ev,emin_ev,bcoeff,nks,nkstot,nbands
111+
DosPrepare dosp = DosPrepare(0,"DOS1.dat","DOS1_smear.dat",0.005,18,-6,0.07,36,36,8);
96112
dosp.set_isk();
97113
dosp.read_wk();
98114
dosp.read_istate_info();
@@ -113,27 +129,43 @@ TEST_F(DosPWTest,Dos2)
113129
kv->wk[ik] = dosp.wk[ik];
114130
}
115131
PARAM.input.nbands = dosp.nbands;
132+
133+
// initialize the Fermi energy
134+
elecstate::efermi fermi_energy;
135+
136+
std::ofstream ofs("write_dos_pw.log");
116137
ModuleIO::write_dos_pw(dosp.ekb,
117138
dosp.wg,
118139
*kv,
140+
PARAM.inp.nbands,
141+
fermi_energy,
119142
dosp.de_ev,
120143
dos_scale,
121-
dosp.bcoeff);
144+
dosp.bcoeff,
145+
ofs);
146+
ofs.close();
147+
remove("write_dos_pw.log");
148+
122149
#ifdef __MPI
123150
if(GlobalV::MY_RANK==0)
124151
{
125152
#endif
126153
std::ifstream ifs;
127-
ifs.open("DOS1_smearing.dat");
154+
ifs.open("DOS1_smear.dat");
128155
std::string str((std::istreambuf_iterator<char>(ifs)),std::istreambuf_iterator<char>());
129-
EXPECT_THAT(str, testing::HasSubstr(" 3197")); // number of electrons is 32
156+
EXPECT_THAT(str, testing::HasSubstr("4532 # number of points"));
157+
EXPECT_THAT(str, testing::HasSubstr(" 11.7919 1.31657 12.3979"));
158+
EXPECT_THAT(str, testing::HasSubstr(" 17.0619 1.25238 15.9258"));
130159
ifs.close();
131-
ifs.open("DOS1");
160+
remove("DOS1_smear.dat");
161+
162+
ifs.open("DOS1.dat");
132163
std::string str1((std::istreambuf_iterator<char>(ifs)),std::istreambuf_iterator<char>());
133-
EXPECT_THAT(str1, testing::HasSubstr("4531")); //number of energy points
164+
EXPECT_THAT(str1, testing::HasSubstr("4532 # number of points"));
165+
EXPECT_THAT(str1, testing::HasSubstr(" -5.38811 0.03125 0.03125"));
166+
EXPECT_THAT(str1, testing::HasSubstr(" 3.07189 0.1875 5.46875"));
134167
ifs.close();
135-
remove("DOS1_smearing.dat");
136-
remove("DOS1");
168+
remove("DOS1.dat");
137169
#ifdef __MPI
138170
}
139171
#endif
@@ -147,6 +179,10 @@ int main(int argc, char **argv)
147179
testing::InitGoogleTest(&argc,argv);
148180
MPI_Comm_size(MPI_COMM_WORLD,&GlobalV::NPROC);
149181
MPI_Comm_rank(MPI_COMM_WORLD,&GlobalV::MY_RANK);
182+
183+
// only test the second one
184+
// ::testing::GTEST_FLAG(filter) = "DosPWTest.Dos2";
185+
150186
int result = RUN_ALL_TESTS();
151187

152188
MPI_Finalize();

0 commit comments

Comments
 (0)