Skip to content

Commit 2db26f6

Browse files
authored
Merge pull request #909 from maki49/LCAO-refactor
Merge LCAO-refactor into develop
2 parents d9055d8 + b625243 commit 2db26f6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+4542
-3693
lines changed

source/Makefile

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ VPATH=./src_global\
1818
:./module_deepks\
1919
:./module_xc\
2020
:./module_esolver\
21-
:./module_surchem\
2221
:./src_pw\
2322
:./src_lcao\
2423
:./src_ions\
@@ -70,7 +69,6 @@ FP_OBJS_0=$(OBJS_FIRST_PRINCIPLES)\
7069
$(OBJS_PARALLEL)\
7170
$(OBJS_TOOLS) \
7271
$(OBJS_COMMON)\
73-
$(OBJS_SURCHEM)\
7472
main.o\
7573

7674
FP_OBJS=$(patsubst %.o, ${OBJ_DIR}/%.o, ${FP_OBJS_0})

source/Makefile.Objects

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ gint_k_init.o\
121121
gint_k_vl.o\
122122
gint_k_rho.o\
123123
gint_k_fvl.o\
124+
gint_k_env.o \
124125
ORB_control.o\
125126
ORB_read.o\
126127
ORB_atomic.o\
@@ -140,7 +141,6 @@ ELEC_evolve.o\
140141
ELEC_scf.o\
141142
ELEC_nscf.o\
142143
LOOP_cell.o\
143-
LOOP_elec.o\
144144
LOOP_ions.o\
145145
run_md_lcao.o\
146146
DM_gamma.o\
@@ -231,9 +231,19 @@ OBJS_ESOLVER=esolver.o\
231231
esolver_ks_pw.o\
232232
esolver_sdft_pw.o\
233233
esolver_ks_lcao.o\
234+
esolver_ks_lcao_elec.o\
234235
esolver_lj.o\
235236
esolver_dp.o\
236237

238+
OBJS_SURCHEM=H_correction_pw.o\
239+
cal_epsilon.o\
240+
cal_pseudo.o\
241+
cal_totn.o\
242+
cal_vcav.o\
243+
cal_vel.o\
244+
corrected_energy.o\
245+
minimize_cg.o\
246+
237247
OBJS_XC=xc_funct_corr_gga.o \
238248
xc_funct_corr_lda.o \
239249
xc_funct_exch_gga.o \
@@ -251,6 +261,7 @@ $(OBJS_PW)\
251261
$(OBJS_LCAO)\
252262
$(OBJS_ESOLVER)\
253263
$(OBJS_XC)\
264+
$(OBJS_SURCHEM)\
254265
charge.o \
255266
charge_mixing.o \
256267
charge_pulay.o \
@@ -366,14 +377,6 @@ pzt2s.o\
366377
pdtrsm.o\
367378
pzhtrsm.o\
368379

369-
OBJS_SURCHEM=cal_epsilon.o\
370-
cal_pseudo.o\
371-
cal_totn.o\
372-
cal_vcav.o\
373-
cal_vel.o\
374-
corrected_energy.o\
375-
H_correction_pw.o\
376-
minimize_cg.o\
377380

378381
PDIAG_MR_0=dcopy.o\
379382
dlae2.o\

source/module_esolver/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ add_library(
77
esolver_ks_pw.cpp
88
esolver_sdft_pw.cpp
99
esolver_ks_lcao.cpp
10+
esolver_ks_lcao_elec.cpp
1011
esolver_lj.cpp
1112
esolver_dp.cpp
1213
)

source/module_esolver/esolver.cpp

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -8,47 +8,47 @@
88

99
namespace ModuleESolver
1010
{
11-
void ESolver:: printname()
12-
{
13-
std::cout<<classname<<std::endl;
14-
}
15-
16-
17-
//Some API to operate E_Solver
18-
void init_esolver(ESolver *&p_esolver, const string use_esol)
19-
{
20-
if(use_esol == "ksdft_pw")
21-
{
22-
p_esolver = new ESolver_KS_PW();
23-
}
24-
else if(use_esol == "ksdft_lcao")
25-
{
26-
p_esolver = new ESolver_KS_LCAO();
27-
}
28-
else if(use_esol == "sdft_pw")
11+
void ESolver::printname()
2912
{
30-
p_esolver = new ESolver_SDFT_PW();
13+
std::cout << classname << std::endl;
3114
}
32-
// else if(use_esol == "ofdft")
33-
// {
34-
// p_esolver = new OFDFT();
35-
// }
36-
else if(use_esol == "lj_pot")
37-
{
38-
p_esolver = new ESolver_LJ();
39-
}
40-
else if(use_esol == "dp_pot")
15+
16+
17+
//Some API to operate E_Solver
18+
void init_esolver(ESolver*& p_esolver, const string use_esol)
4119
{
42-
p_esolver = new ESolver_DP();
20+
if (use_esol == "ksdft_pw")
21+
{
22+
p_esolver = new ESolver_KS_PW();
23+
}
24+
else if (use_esol == "ksdft_lcao")
25+
{
26+
p_esolver = new ESolver_KS_LCAO();
27+
}
28+
else if (use_esol == "sdft_pw")
29+
{
30+
p_esolver = new ESolver_SDFT_PW();
31+
}
32+
// else if(use_esol == "ofdft")
33+
// {
34+
// p_esolver = new OFDFT();
35+
// }
36+
else if (use_esol == "lj_pot")
37+
{
38+
p_esolver = new ESolver_LJ();
39+
}
40+
else if (use_esol == "dp_pot")
41+
{
42+
p_esolver = new ESolver_DP();
43+
}
4344
}
44-
}
4545

46-
void clean_esolver(ESolver *&pesolver)
47-
{
48-
if(pesolver!=NULL)
46+
void clean_esolver(ESolver*& pesolver)
4947
{
50-
delete pesolver;
48+
if (pesolver != NULL)
49+
{
50+
delete pesolver;
51+
}
5152
}
52-
}
5353

54-
}
54+
}

source/module_esolver/esolver.h

Lines changed: 40 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -16,48 +16,46 @@
1616
namespace ModuleESolver
1717
{
1818

19-
class ESolver
20-
{
21-
// protected:
22-
// ModuleBase::matrix lattice_v;
23-
public:
24-
ESolver(){
25-
classname = "ESolver";
26-
}
27-
virtual ~ESolver(){};
28-
29-
//virtual void Init(Input_EnSolver &inp, matrix &lattice_v)=0
30-
virtual void Init(Input &inp, UnitCell_pseudo &cell)=0;
31-
32-
// They shoud be add after atom class is refactored
33-
// virtual void UpdateLatAtom(ModuleBase::matrix &lat_in, Atom &atom_in);
34-
// virtual void UpdateLat(ModuleBase::matrix &lat_in);
35-
// virtual void UpdateAtom(Atom &atom_in);
36-
37-
/// These two virtual `Run` will be merged in the future.
38-
//virtual void Run(int istep, Atom &atom) = 0;
39-
virtual void Run(const int istep, UnitCell_pseudo& cell) = 0;
40-
virtual void Run(int istep,
41-
Record_adj& ra /**< would be a 2nd-module of Cell*/,
42-
Local_Orbital_Charge& loc /**< EState*/,
43-
Local_Orbital_wfc& lowf /**< Psi*/,
44-
LCAO_Hamilt& uhm /**< Hamilt*/) {};
45-
46-
virtual void cal_Energy(energy &en) = 0;
47-
virtual void cal_Force(ModuleBase::matrix &force) = 0;
48-
virtual void cal_Stress(ModuleBase::matrix &stress) = 0;
49-
50-
//Print current classname.
51-
void printname();
52-
53-
//temporarily
54-
//get iterstep used in current scf
55-
virtual int getniter(){return 0;}
56-
string classname;
57-
};
58-
59-
void init_esolver(ESolver* &p_esolver, const string use_esol);
60-
void clean_esolver(ESolver* &pesolver);
19+
class ESolver
20+
{
21+
// protected:
22+
// ModuleBase::matrix lattice_v;
23+
public:
24+
ESolver() {
25+
classname = "ESolver";
26+
}
27+
virtual ~ESolver() {};
28+
29+
//virtual void Init(Input_EnSolver &inp, matrix &lattice_v)=0
30+
virtual void Init(Input& inp, UnitCell_pseudo& cell) = 0;
31+
32+
// They shoud be add after atom class is refactored
33+
// virtual void UpdateLatAtom(ModuleBase::matrix &lat_in, Atom &atom_in);
34+
// virtual void UpdateLat(ModuleBase::matrix &lat_in);
35+
// virtual void UpdateAtom(Atom &atom_in);
36+
37+
virtual void Run(int istep, UnitCell_pseudo& cell) = 0;
38+
39+
//Deal with exx and other calculation than scf/md/relax:
40+
// such as nscf, istate-charge or envelope
41+
virtual void othercalculation(const int istep) {};
42+
43+
virtual void cal_Energy(energy& en) = 0;
44+
virtual void cal_Force(ModuleBase::matrix& force) = 0;
45+
virtual void cal_Stress(ModuleBase::matrix& stress) = 0;
46+
virtual void postprocess() {};
47+
48+
//Print current classname.
49+
void printname();
50+
51+
//temporarily
52+
//get iterstep used in current scf
53+
virtual int getniter() { return 0; }
54+
string classname;
55+
};
56+
57+
void init_esolver(ESolver*& p_esolver, const string use_esol);
58+
void clean_esolver(ESolver*& pesolver);
6159

6260
}
6361

0 commit comments

Comments
 (0)