From f49d43714c5706fa407a42e28f566fc259d9ba89 Mon Sep 17 00:00:00 2001 From: dyzheng Date: Thu, 21 May 2026 20:08:15 +0800 Subject: [PATCH] fix(nupdown): only set two_fermi when nupdown is non-zero When nupdown=0.0 is explicitly set in INPUT, it should behave the same as not setting nupdown at all. Previously, reading any nupdown value would unconditionally set two_fermi=true, causing different code paths even when nupdown=0.0. Now two_fermi is only set to true when nupdown != 0.0, making nupdown=0 equivalent to not specifying the parameter. --- source/source_io/module_parameter/read_input_item_elec_stru.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/source_io/module_parameter/read_input_item_elec_stru.cpp b/source/source_io/module_parameter/read_input_item_elec_stru.cpp index 39f37febc54..53d53b47319 100644 --- a/source/source_io/module_parameter/read_input_item_elec_stru.cpp +++ b/source/source_io/module_parameter/read_input_item_elec_stru.cpp @@ -297,7 +297,7 @@ Then the user has to correct the input file and restart the calculation.)"; item.availability = ""; item.read_value = [](const Input_Item& item, Parameter& para) { para.input.nupdown = doublevalue; - para.sys.two_fermi = true; + para.sys.two_fermi = (doublevalue != 0.0); }; item.reset_value = [](const Input_Item&, Parameter& para) { if (para.input.nspin == 1)