Skip to content

Commit 4a86b41

Browse files
authored
Reject negative DeePKS output frequency (#7740)
1 parent aba938d commit 4a86b41

2 files changed

Lines changed: 32 additions & 4 deletions

File tree

source/source_io/module_parameter/read_input_item_deepks.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,11 @@ void ReadInput::item_deepks()
3737
item.unit = "";
3838
item.availability = "Numerical atomic orbital basis";
3939
read_sync_int(input.deepks_out_freq_elec);
40-
item.reset_value = [](const Input_Item& item, Parameter& para) {
40+
item.check_value = [](const Input_Item& item, const Parameter& para) {
4141
if (para.input.deepks_out_freq_elec < 0)
4242
{
43-
para.input.deepks_out_freq_elec = 0;
43+
ModuleBase::WARNING_QUIT("ReadInput", "deepks_out_freq_elec must not be negative");
4444
}
45-
};
46-
item.check_value = [](const Input_Item& item, const Parameter& para) {
4745
if (para.input.deepks_out_freq_elec > 0 && para.input.deepks_out_base == "none")
4846
{
4947
ModuleBase::WARNING_QUIT("ReadInput", "to use deepks_out_freq_elec, please set deepks_out_base ");

source/source_io/test_serial/read_input_test.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,36 @@ TEST_F(InputTest, ValidateBandParallelization)
306306
"bndpar can not exceed the number of MPI processes");
307307
}
308308

309+
TEST_F(InputTest, ValidateDeepksOutputFrequency)
310+
{
311+
Parameter default_param;
312+
EXPECT_NO_THROW(read_parameters("deepks_freq_default_INPUT", "", default_param));
313+
EXPECT_EQ(default_param.inp.deepks_out_freq_elec, 0);
314+
315+
Parameter disabled_param;
316+
EXPECT_NO_THROW(read_parameters("deepks_freq_disabled_INPUT", "deepks_out_freq_elec 0\n", disabled_param));
317+
EXPECT_EQ(disabled_param.inp.deepks_out_freq_elec, 0);
318+
319+
expect_invalid_input("deepks_freq_negative_INPUT",
320+
"deepks_out_freq_elec -1\n",
321+
"deepks_out_freq_elec must not be negative");
322+
expect_invalid_input("deepks_freq_missing_base_INPUT",
323+
"deepks_out_freq_elec 2\n",
324+
"to use deepks_out_freq_elec, please set deepks_out_base");
325+
326+
Parameter enabled_param;
327+
testing::internal::CaptureStdout();
328+
EXPECT_THROW(read_parameters("deepks_freq_enabled_INPUT",
329+
"deepks_out_freq_elec 2\n"
330+
"deepks_out_base pbe\n"
331+
"deepks_out_labels 1\n",
332+
enabled_param),
333+
std::runtime_error);
334+
const std::string output = testing::internal::GetCapturedStdout();
335+
EXPECT_THAT(output, testing::HasSubstr("please compile with DeePKS"));
336+
EXPECT_EQ(enabled_param.inp.deepks_out_freq_elec, 2);
337+
}
338+
309339
TEST_F(InputTest, Check)
310340
{
311341
ModuleIO::ReadInput readinput(0);

0 commit comments

Comments
 (0)