From 27f2cd347e64e67f340e47206a31dced02dcbe90 Mon Sep 17 00:00:00 2001 From: Weiqun Zhang Date: Thu, 16 Jan 2025 13:47:17 -0800 Subject: [PATCH] Fix new coverity scan warnings --- Src/Amr/AMReX_Amr.cpp | 1 + Src/Amr/AMReX_StateData.cpp | 6 +++--- Src/AmrCore/AMReX_AmrCore.cpp | 1 + Src/AmrCore/AMReX_Cluster.H | 2 +- Src/Base/AMReX_DistributionMapping.H | 2 ++ Src/Base/AMReX_DistributionMapping.cpp | 2 ++ Src/Base/AMReX_OpenMP.cpp | 2 +- Src/Base/AMReX_ParmParse.cpp | 2 +- Src/Base/AMReX_TinyProfiler.cpp | 4 ++-- Src/Base/AMReX_VisMF.cpp | 2 +- Src/LinearSolvers/MLMG/AMReX_MLCellLinOp.H | 12 +++++------- 11 files changed, 20 insertions(+), 16 deletions(-) diff --git a/Src/Amr/AMReX_Amr.cpp b/Src/Amr/AMReX_Amr.cpp index 2f8c110359b..12ad655c549 100644 --- a/Src/Amr/AMReX_Amr.cpp +++ b/Src/Amr/AMReX_Amr.cpp @@ -2890,6 +2890,7 @@ Amr::printGridInfo (std::ostream& os, int numgrid = static_cast(bs.size()); Long ncells = amr_level[lev]->countCells(); double ntot = Geom(lev).Domain().d_numPts(); + AMREX_ASSERT(ntot > 0.); Real frac = Real(100.0 * double(ncells) / ntot); const DistributionMapping& map = amr_level[lev]->get_new_data(0).DistributionMap(); diff --git a/Src/Amr/AMReX_StateData.cpp b/Src/Amr/AMReX_StateData.cpp index 87960d8a55c..a72485cdb1c 100644 --- a/Src/Amr/AMReX_StateData.cpp +++ b/Src/Amr/AMReX_StateData.cpp @@ -807,13 +807,13 @@ StateData::checkPoint (const std::string& name, if (dump_old) { os << 2 << '\n' << mf_name_new << '\n' << mf_name_old << '\n'; - fabArrayHeaderNames.push_back(mf_name_new); - fabArrayHeaderNames.push_back(mf_name_old); + fabArrayHeaderNames.push_back(std::move(mf_name_new)); + fabArrayHeaderNames.push_back(std::move(mf_name_old)); } else { os << 1 << '\n' << mf_name_new << '\n'; - fabArrayHeaderNames.push_back(mf_name_new); + fabArrayHeaderNames.push_back(std::move(mf_name_new)); } } else diff --git a/Src/AmrCore/AMReX_AmrCore.cpp b/Src/AmrCore/AMReX_AmrCore.cpp index 1e56c1652d2..6a7610b290e 100644 --- a/Src/AmrCore/AMReX_AmrCore.cpp +++ b/Src/AmrCore/AMReX_AmrCore.cpp @@ -145,6 +145,7 @@ AmrCore::printGridSummary (std::ostream& os, int min_lev, int max_lev) const noe int numgrid = static_cast(bs.size()); Long ncells = bs.numPts(); double ntot = Geom(lev).Domain().d_numPts(); + AMREX_ASSERT(ntot > 0.); Real frac = Real(100.0*double(ncells) / ntot); os << " Level " diff --git a/Src/AmrCore/AMReX_Cluster.H b/Src/AmrCore/AMReX_Cluster.H index 7d60131e6cf..80c367e49f8 100644 --- a/Src/AmrCore/AMReX_Cluster.H +++ b/Src/AmrCore/AMReX_Cluster.H @@ -62,7 +62,7 @@ public: /** * \brief Does cluster contain any points? */ - [[nodiscard]] bool ok () const noexcept { return m_ar != nullptr && m_len > 0; } + [[nodiscard]] bool ok () const noexcept { return m_bx.d_numPts() > 0. && m_ar != nullptr && m_len > 0; } /** * \brief Returns number of tagged points in cluster. diff --git a/Src/Base/AMReX_DistributionMapping.H b/Src/Base/AMReX_DistributionMapping.H index bc8d54e6851..eb0aa1fa651 100644 --- a/Src/Base/AMReX_DistributionMapping.H +++ b/Src/Base/AMReX_DistributionMapping.H @@ -437,6 +437,8 @@ void DistributionMapping::ComputeDistributionMappingEfficiency ( sum_weight += w; } + AMREX_ASSERT(nprocs > 0 && max_weight > T(0)); + *efficiency = static_cast(sum_weight) / (static_cast(nprocs) * static_cast(max_weight)); } diff --git a/Src/Base/AMReX_DistributionMapping.cpp b/Src/Base/AMReX_DistributionMapping.cpp index 7e524d0a7d2..5641063174d 100644 --- a/Src/Base/AMReX_DistributionMapping.cpp +++ b/Src/Base/AMReX_DistributionMapping.cpp @@ -649,6 +649,7 @@ knapsack (const std::vector& wgts, } } + AMREX_ASSERT(nprocs > 0 && max_weight > Real(0)); efficiency = sum_weight/(static_cast(nprocs)*max_weight); std::sort(wblv.begin(), wblv.end()); @@ -982,6 +983,7 @@ DistributionMapping::KnapSackProcessorMap (const DistributionMapping& olddm, } } + AMREX_ASSERT(max_weight > Real(0)); new_efficiency = avg_weight / max_weight; if (new_efficiency < max_efficiency && wblv.size() > 1) { diff --git a/Src/Base/AMReX_OpenMP.cpp b/Src/Base/AMReX_OpenMP.cpp index 56225253fa7..c04bcd80171 100644 --- a/Src/Base/AMReX_OpenMP.cpp +++ b/Src/Base/AMReX_OpenMP.cpp @@ -80,7 +80,7 @@ namespace amrex // and record the siblings group // (assumes: ascending and unique sets per cpuIndex) - uniqueThreadSets.insert(siblings); + uniqueThreadSets.insert(std::move(siblings)); cpuIndex++; } diff --git a/Src/Base/AMReX_ParmParse.cpp b/Src/Base/AMReX_ParmParse.cpp index 6a1fda5bc0f..37b5897a9f2 100644 --- a/Src/Base/AMReX_ParmParse.cpp +++ b/Src/Base/AMReX_ParmParse.cpp @@ -606,7 +606,7 @@ bldTable (const char*& str, ParmParse::Table& tab) { if ( cur_name.empty() ) { - cur_name = tokname; + cur_name = std::move(tokname); break; } // diff --git a/Src/Base/AMReX_TinyProfiler.cpp b/Src/Base/AMReX_TinyProfiler.cpp index 78a16858551..5a8fb227f25 100644 --- a/Src/Base/AMReX_TinyProfiler.cpp +++ b/Src/Base/AMReX_TinyProfiler.cpp @@ -695,7 +695,7 @@ TinyProfiler::PrintStats (std::map& regstats, double dt_max, std::sort(allprocstats.begin(), allprocstats.end(), ProcStats::compin); if (print_other_procstat) { // make sure "Other" is printed at the end of the list - allprocstats.push_back(other_procstat); + allprocstats.push_back(std::move(other_procstat)); } *os << "\n" << hline << "\n"; *os << std::left @@ -805,7 +805,7 @@ TinyProfiler::PrintMemStats (std::map& memstats, pst.avgmem_avg /= nprocs; pst.maxmem_avg /= nprocs; pst.fname = it.first; - allprocstats.push_back(pst); + allprocstats.push_back(std::move(pst)); } } diff --git a/Src/Base/AMReX_VisMF.cpp b/Src/Base/AMReX_VisMF.cpp index 8b9a80d0d38..a8562487da9 100644 --- a/Src/Base/AMReX_VisMF.cpp +++ b/Src/Base/AMReX_VisMF.cpp @@ -1710,7 +1710,7 @@ VisMF::Read (FabArray &mf, frcIter = FileReadChains.find(fileName); BL_ASSERT(frcIter != FileReadChains.end()); Vector &frc = frcIter->second; - for(NFilesIter nfi(std::move(fullFileName), readRanks); nfi.ReadyToRead(); ++nfi) { + for(NFilesIter nfi(std::move(fullFileName), std::move(readRanks)); nfi.ReadyToRead(); ++nfi) { // ---- confirm the data is contiguous in the stream Long firstOffset(-1); diff --git a/Src/LinearSolvers/MLMG/AMReX_MLCellLinOp.H b/Src/LinearSolvers/MLMG/AMReX_MLCellLinOp.H index b318b318eb2..e46041a6f7e 100644 --- a/Src/LinearSolvers/MLMG/AMReX_MLCellLinOp.H +++ b/Src/LinearSolvers/MLMG/AMReX_MLCellLinOp.H @@ -1967,13 +1967,11 @@ MLCellLinOpT::computeVolInv () const else #endif { - if (this->m_coarse_fine_bc_type == LinOpBCType::Dirichlet) { - m_volinv[amrlev][mglev] - = RT(1.0 / this->compactify(this->Geom(amrlev,mglev).Domain()).d_numPts()); - } else { - m_volinv[amrlev][mglev] - = RT(1.0 / this->m_grids[amrlev][mglev].d_numPts()); - } + auto const npts = (this->m_coarse_fine_bc_type == LinOpBCType::Dirichlet) + ? this->compactify(this->Geom(amrlev,mglev).Domain()).d_numPts() + : this->m_grids[amrlev][mglev].d_numPts(); + AMREX_ASSERT(npts > 0.); + m_volinv[amrlev][mglev] = RT(1.0 / npts); } };