@@ -49,51 +49,44 @@ namespace amrex::VectorGrowthStrategy
4949 detail::ValidateUserInput ();
5050 }
5151
52- std::size_t GetNewCapacity ([[maybe_unused]] std::size_t old_size, std::size_t old_capacity,
53- std::size_t new_size, amrex::GrowthStrategy strategy,
54- std::size_t sizeof_T) {
55-
56- std::size_t new_capacity = 0 ;
52+ std::size_t GetNewCapacityImp ([[maybe_unused]] std::size_t old_size, std::size_t old_capacity,
53+ std::size_t new_size, amrex::GrowthStrategy strategy,
54+ std::size_t sizeof_T) {
5755
5856 if (override_strategy != amrex::GrowthStrategy::Default) {
59- return GetNewCapacity (old_size, old_capacity, new_size, override_strategy, sizeof_T);
57+ return GetNewCapacityImp (old_size, old_capacity, new_size, override_strategy, sizeof_T);
6058 }
6159
6260 switch (strategy) {
6361 case GrowthStrategy::Default:
6462 AMREX_ALWAYS_ASSERT_WITH_MESSAGE (default_strategy != GrowthStrategy::Default,
6563 " Must set default growth strategy to something other than Default" );
66- return GetNewCapacity (old_size, old_capacity, new_size, default_strategy, sizeof_T);
64+ return GetNewCapacityImp (old_size, old_capacity, new_size,
65+ default_strategy, sizeof_T);
6766 case GrowthStrategy::Exact:
6867 if (new_size > old_capacity) {
69- new_capacity = new_size;
68+ return new_size;
7069 } else {
71- new_capacity = old_capacity;
70+ return old_capacity;
7271 }
73- break ;
7472 case GrowthStrategy::Geometric:
7573 if (new_size > old_capacity) {
7674 const std::size_t min_capacity = std::max (64 /sizeof_T, new_size);
7775 Real const gf = GetGrowthFactor ();
7876 if (amrex::almostEqual (gf, Real (1.5 ))) {
79- new_capacity = std::max ((old_capacity*3 +1 )/2 , min_capacity);
77+ return std::max ((old_capacity*3 +1 )/2 , min_capacity);
8078 } else {
81- new_capacity = std::max (std::size_t (gf*Real (old_capacity+1 )), min_capacity);
79+ return std::max (std::size_t (gf*Real (old_capacity+1 )), min_capacity);
8280 }
8381 } else {
84- new_capacity = old_capacity;
82+ return old_capacity;
8583 }
86- break ;
8784 case GrowthStrategy::Poisson:
8885 if (new_size > old_capacity) {
89- new_capacity = new_size + static_cast <std::size_t >(3 * std::sqrt (new_size));
86+ return new_size + static_cast <std::size_t >(3 * std::sqrt (new_size));
9087 } else {
91- new_capacity = old_capacity;
88+ return old_capacity;
9289 }
93- break ;
9490 }
95-
96- AMREX_ALWAYS_ASSERT (new_capacity >= new_size);
97- return new_capacity;
9891 }
9992}
0 commit comments