From bfde586a08bfe4edc3233357797efca06f210e46 Mon Sep 17 00:00:00 2001 From: Stardust0831 <169599847+Stardust0831@users.noreply.github.com> Date: Wed, 19 Aug 2026 02:17:31 +0800 Subject: [PATCH] fix(input): constrain diag_subspace availability --- docs/advanced/input_files/input-main.md | 1 + docs/parameters.yaml | 2 +- source/source_io/module_parameter/read_inp_sys.cpp | 1 + source/source_io/test_serial/read_input_item_test.cpp | 4 ++++ 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/advanced/input_files/input-main.md b/docs/advanced/input_files/input-main.md index 422fcd3835..a03b3c4e51 100644 --- a/docs/advanced/input_files/input-main.md +++ b/docs/advanced/input_files/input-main.md @@ -1006,6 +1006,7 @@ ### diag_subspace - **Type**: Integer +- **Availability**: *[`basis_type`](#basis_type)==pw and [`ks_solver`](#ks_solver)==dav_subspace* - **Description**: The method to diagonalize subspace in dav_subspace method. - 0: by LAPACK - 1: by GenELPA diff --git a/docs/parameters.yaml b/docs/parameters.yaml index ef311d26fc..78b5997b84 100644 --- a/docs/parameters.yaml +++ b/docs/parameters.yaml @@ -428,7 +428,7 @@ parameters: * 2: by ScaLAPACK default_value: "0" unit: "" - availability: "" + availability: basis_type==pw and ks_solver==dav_subspace - name: erf_ecut category: Plane wave related variables type: Real diff --git a/source/source_io/module_parameter/read_inp_sys.cpp b/source/source_io/module_parameter/read_inp_sys.cpp index 015314956e..1d207658e4 100644 --- a/source/source_io/module_parameter/read_inp_sys.cpp +++ b/source/source_io/module_parameter/read_inp_sys.cpp @@ -1178,6 +1178,7 @@ Available options are: * 1: by GenELPA * 2: by ScaLAPACK)"; item.default_value = "0"; + item.set_availability("basis_type==pw and ks_solver==dav_subspace"); read_sync_int(input.diag_subspace); this->add_item(item); } diff --git a/source/source_io/test_serial/read_input_item_test.cpp b/source/source_io/test_serial/read_input_item_test.cpp index cb86a5d2d8..93a01ae4f5 100644 --- a/source/source_io/test_serial/read_input_item_test.cpp +++ b/source/source_io/test_serial/read_input_item_test.cpp @@ -1990,6 +1990,10 @@ TEST_F(InputTest, Item_test2) output = testing::internal::GetCapturedStdout(); EXPECT_THAT(output, testing::HasSubstr("NOTICE")); } + { // diag_subspace + auto it = find_label("diag_subspace", readinput.input_lists); + EXPECT_EQ(it->second.get_availability(), "basis_type==pw and ks_solver==dav_subspace"); + } { // md_nstep auto it = find_label("md_nstep", readinput.input_lists); param.input.mdp.md_nstep = 0;