Skip to content

Commit 660c445

Browse files
committed
Feature: set relax_nmax=0 to enable dry run
1 parent 0f37fe5 commit 660c445

File tree

3 files changed

+14
-3
lines changed

3 files changed

+14
-3
lines changed

source/module_io/read_input_item_relax.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,14 @@ void ReadInput::item_relax()
5454
= {"scf", "nscf", "get_S", "get_pchg", "get_wf", "test_memory", "test_neighbour", "gen_bessel"};
5555
if (std::find(singlelist.begin(), singlelist.end(), calculation) != singlelist.end())
5656
{
57-
para.input.relax_nmax = 1;
57+
if (para.input.relax_nmax != 0)
58+
{
59+
para.input.relax_nmax = 1;
60+
}
5861
}
5962
else if (calculation == "relax" || calculation == "cell-relax")
6063
{
61-
if (para.input.relax_nmax == 0) // default value
64+
if (para.input.relax_nmax < 0)
6265
{
6366
para.input.relax_nmax = 50;
6467
}

source/module_io/test_serial/read_input_item_test.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -608,9 +608,17 @@ TEST_F(InputTest, Item_test)
608608
it->second.reset_value(it->second, param);
609609
EXPECT_EQ(param.input.relax_nmax, 1);
610610

611+
param.input.relax_nmax = 0;
612+
it->second.reset_value(it->second, param);
613+
EXPECT_EQ(param.input.relax_nmax, 0);
614+
611615
param.input.calculation = "relax";
612616
param.input.relax_nmax = 0;
613617
it->second.reset_value(it->second, param);
618+
EXPECT_EQ(param.input.relax_nmax, 0);
619+
620+
param.input.relax_nmax = -1;
621+
it->second.reset_value(it->second, param);
614622
EXPECT_EQ(param.input.relax_nmax, 50);
615623
}
616624
{ // out_stru

source/module_parameter/input_parameter.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ struct Input_para
152152
bool relax_new = true;
153153
bool relax = false; ///< allow relaxation along the specific direction
154154
double relax_scale_force = 0.5;
155-
int relax_nmax = 0; ///< number of max ionic iter
155+
int relax_nmax = -1; ///< number of max ionic iter
156156
double relax_cg_thr = 0.5; ///< threshold when cg to bfgs, pengfei add 2011-08-15
157157
double force_thr = -1; ///< threshold of force in unit (Ry/Bohr)
158158
double force_thr_ev = -1; ///< threshold of force in unit (eV/Angstrom)

0 commit comments

Comments
 (0)