Skip to content

Commit 94bad6a

Browse files
author
Kai Luo
committed
Refactor initialization methods: Move rdmft_init_method to Input_para as directmin_init_method and update related input handling
1 parent 00fa1b2 commit 94bad6a

File tree

6 files changed

+19
-10
lines changed

6 files changed

+19
-10
lines changed

source/source_esolver/esolver_directmin_lcao.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ void ESolver_DirectMin_LCAO::initialize(UnitCell& ucell, const Input_para& inp)
240240
// Get RDMFT parameters from PARAM.rdmftp
241241
this->rdmft_loop_layer_ = inp.rdmftp.rdmft_loop_layer;
242242
this->xc_functional_ = inp.rdmftp.rdmft_xc_functional;
243-
this->init_method_ = inp.rdmftp.rdmft_init_method;
243+
this->init_method_ = inp.directmin_init_method;
244244

245245
// Parameters for hybrid optimization (rdmft_loop_layer = 2)
246246
if(this->rdmft_loop_layer_ == 2)
@@ -362,7 +362,13 @@ void ESolver_DirectMin_LCAO::setup_solver(UnitCell& ucell, const Input_para& inp
362362
else if (inp.directmin_objective == "rdmft")
363363
{
364364
X = this->prob->GetDomain()->RandominManifold();
365-
365+
// check if directmin_init_method is "ks", then we need to get the KS wavefunctions and occupations
366+
// (was rdmft_init_method)
367+
// from the previous SCF calculation
368+
if (this->init_method_ == "ks")
369+
{
370+
371+
}
366372
}
367373

368374
// next set up the solver based on directmin_solver, sd, cg, bfgs, etc.

source/source_esolver/esolver_directmin_lcao_old.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ void ESolver_DirectMin_LCAO::initialize(UnitCell& ucell, const Input_para& inp)
235235
// Get RDMFT parameters from PARAM.rdmftp
236236
this->rdmft_loop_layer_ = inp.rdmftp.rdmft_loop_layer;
237237
this->xc_functional_ = inp.rdmftp.rdmft_xc_functional;
238-
this->init_method_ = inp.rdmftp.rdmft_init_method;
238+
this->init_method_ = inp.directmin_init_method;
239239

240240
// Parameters for hybrid optimization (rdmft_loop_layer = 2)
241241
if(this->rdmft_loop_layer_ == 2)

source/source_io/module_parameter/input_parameter.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -688,6 +688,7 @@ struct Input_para
688688

689689

690690

691+
std::string directmin_init_method = "ks"; // method for initializing the natural orbitals and occupation numbers (was rdmft_init_method)
691692
RDMFT_para rdmftp; // parameter for rdmft calculation
692693

693694
// ============== #Parameters (22.EXX PW) =====================

source/source_io/module_parameter/rdmft_parameter.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ struct RDMFT_para
1515
int rdmft_loop_layer = 1;
1616

1717
std::string rdmft_xc_functional = "power"; // functional type: muller, power, hf, pnof etc.
18-
std::string rdmft_init_method = "ks"; // method for initializing the natural orbitals and occupation numbers
18+
// std::string rdmft_init_method = "ks"; // moved to input_parameter.h as directmin_init_method
1919
std::string rdmft_solver_method = "cg"; // solver method for the optimization, such as sd, cg, bfgs
2020

2121
double rdmft_tole = 1e-6; // tolerance of energy for optimization

source/source_io/read_input_item_directmin.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,13 @@ namespace ModuleIO
1111
{
1212
void ReadInput::item_directmin()
1313
{
14+
{
15+
Input_Item item("directmin_init_method");
16+
item.annotation = "Initialization method for natural orbitals and occupations (was rdmft_init_method)";
17+
read_sync_string(input.directmin_init_method);
18+
this->add_item(item);
19+
}
20+
1421
// Follow exactly the order in input_parameter.h
1522
{
1623
Input_Item item("directmin_objective");

source/source_io/read_input_item_rdmft.cpp

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,7 @@ void ReadInput::item_rdmft()
3232
this->add_item(item);
3333
}
3434

35-
{
36-
Input_Item item("rdmft_init_method");
37-
item.annotation = "Initialization method for natural orbitals and occupations";
38-
read_sync_string(rdmftp_private.rdmft_init_method);
39-
this->add_item(item);
40-
}
35+
// removed rdmft_init_method: now handled as directmin_init_method in input_parameter.h
4136

4237
{
4338
Input_Item item("rdmft_solver_method");

0 commit comments

Comments
 (0)