@@ -147,7 +147,7 @@ TEST_F(InputParaTest, ParaRead)
147147 EXPECT_EQ (param.inp .ndx , 0 );
148148 EXPECT_EQ (param.inp .ndy , 0 );
149149 EXPECT_EQ (param.inp .ndz , 0 );
150- EXPECT_EQ (param.inp .diago_proc , std::min ( GlobalV::NPROC , 4 ) );
150+ EXPECT_EQ (param.inp .diago_proc , GlobalV::NPROC );
151151 EXPECT_EQ (param.inp .pw_diag_nmax , 50 );
152152 EXPECT_EQ (param.inp .diago_cg_prec , 1 );
153153 EXPECT_EQ (param.inp .pw_diag_ndim , 4 );
@@ -456,6 +456,29 @@ TEST_F(InputParaTest, ParaRead)
456456 EXPECT_DOUBLE_EQ (param.inp .rdmft_power_alpha , 0.656 );
457457}
458458
459+ TEST_F (InputParaTest, DiagoProc)
460+ {
461+ int rank = 0 ;
462+ int nproc = 0 ;
463+ MPI_Comm_rank (MPI_COMM_WORLD , &rank);
464+ MPI_Comm_size (MPI_COMM_WORLD , &nproc);
465+
466+ ModuleIO::ReadInput readinput (rank);
467+ readinput.check_ntype_flag = false ;
468+ Parameter full_param;
469+ readinput.read_parameters (full_param, " ./support/INPUT.diago_proc_full" );
470+ EXPECT_EQ (full_param.inp .diago_proc , nproc);
471+
472+ if (nproc == 4 )
473+ {
474+ ModuleIO::ReadInput subset_readinput (rank);
475+ subset_readinput.check_ntype_flag = false ;
476+ Parameter subset_param;
477+ subset_readinput.read_parameters (subset_param, " ./support/INPUT.diago_proc_subset" );
478+ EXPECT_EQ (subset_param.inp .diago_proc , 2 );
479+ }
480+ }
481+
459482// comment out this part of tests, since Parameter is in another directory now, mohan 2025-05-18
460483// besides, the following tests will cause strange error in MPI_Finalize()
461484// I tried the following modification, it worked well in my own environment, but not in the Github test, Xinyuan 2025-05-25
0 commit comments