From 94c7126f2e21cdfdfe6bfa45200800814b5686be Mon Sep 17 00:00:00 2001 From: MrLi000001 <1417558386@qq.com> Date: Sat, 10 Oct 2026 10:47:23 +0800 Subject: [PATCH] Refactor Parallel_Grid::init into serial/parallel subroutines --- source/source_base/parallel_grid.cpp | 47 ++++++++++++++++++---------- source/source_base/parallel_grid.h | 12 +++++++ 2 files changed, 42 insertions(+), 17 deletions(-) diff --git a/source/source_base/parallel_grid.cpp b/source/source_base/parallel_grid.cpp index 1c258ca266c..f213e800bb4 100644 --- a/source/source_base/parallel_grid.cpp +++ b/source/source_base/parallel_grid.cpp @@ -17,17 +17,17 @@ Parallel_Grid::~Parallel_Grid() { } -void Parallel_Grid::init(const int& ncx_in, - const int& ncy_in, - const int& ncz_in, - const int& nczp_in, - const int& nrxx_in, - const int& nbz_in, - const int& bz_in, - const int nprocgroup) -{ - ModuleBase::TITLE("Parallel_Grid", "init"); + +void Parallel_Grid::init_serial(const int& ncx_in, + const int& ncy_in, + const int& ncz_in, + const int& nczp_in, + const int& nrxx_in, + const int& nbz_in, + const int& bz_in) +{ + ModuleBase::TITLE("Parallel_Grid", "init_serial"); this->ncx = ncx_in; this->ncy = ncy_in; @@ -49,10 +49,11 @@ void Parallel_Grid::init(const int& ncx_in, this->ncxy = ncx * ncy; this->ncxyz = ncxy * ncz; - -#ifndef __MPI - return; -#endif +} +#ifdef __MPI +void Parallel_Grid::init_parallel(const int nprocgroup) +{ + ModuleBase::TITLE("Parallel_Grid", "init_parallel"); // enable to call this function again liuyu 2023-03-10 if (!this->numz.empty()) @@ -64,7 +65,6 @@ void Parallel_Grid::init(const int& ncx_in, this->whichpro_loc.clear(); } - // (2) assert(this->numz.empty()); assert(GlobalV::KPAR > 0); @@ -95,10 +95,23 @@ void Parallel_Grid::init(const int& ncx_in, } this->z_distribution(); - - return; } +#endif +void Parallel_Grid::init(const int& ncx_in, + const int& ncy_in, + const int& ncz_in, + const int& nczp_in, + const int& nrxx_in, + const int& nbz_in, + const int& bz_in, + const int nprocgroup) +{ + this->init_serial(ncx_in, ncy_in, ncz_in, nczp_in, nrxx_in, nbz_in, bz_in); +#ifdef __MPI + this->init_parallel(nprocgroup); +#endif +} void Parallel_Grid::z_distribution() { assert(!this->numz.empty()); diff --git a/source/source_base/parallel_grid.h b/source/source_base/parallel_grid.h index 8cc7592384c..d8ad5e23c88 100644 --- a/source/source_base/parallel_grid.h +++ b/source/source_base/parallel_grid.h @@ -46,6 +46,18 @@ class Parallel_Grid private: void z_distribution(void); + + void init_serial(const int& ncx_in, + const int& ncy_in, + const int& ncz_in, + const int& nczp_in, + const int& nrxx_in, + const int& nbz_in, + const int& bz_in); + +#ifdef __MPI + void init_parallel(const int nprocgroup); +#endif #ifdef __MPI void zpiece_distribute(double* zpiece, const int& iz, double* rho, const bool is_sdft) const;