Skip to content

Commit 55d4a34

Browse files
committed
Updating Particles function signature and testing
1 parent 84bbf37 commit 55d4a34

File tree

3 files changed

+14
-5
lines changed

3 files changed

+14
-5
lines changed

Src/Particle/AMReX_ParticleContainer.H

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -578,10 +578,9 @@ public:
578578

579579
/**
580580
* \brief Return capacity of memory for particles at specific grid
581-
* Level is defaulted to 0.
582581
*/
583-
584-
void CapacityOfParticlesInGrid (LayoutData<std::size_t>& mem, int lev) const;
582+
template <typename I, std::enable_if_t<std::is_integral_v<I> && sizeof(I) >= sizeof(Long), int> = 0>
583+
void CapacityOfParticlesInGrid (LayoutData<I>& mem, int lev) const;
585584

586585
/**
587586
* \brief Returns # of particles at all levels

Src/Particle/AMReX_ParticleContainerI.H

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -588,8 +588,9 @@ Long ParticleContainer_impl<ParticleType, NArrayReal, NArrayInt, Allocator, Cell
588588

589589
template <typename ParticleType, int NArrayReal, int NArrayInt,
590590
template<class> class Allocator, class CellAssignor>
591+
template <typename I, std::enable_if_t<std::is_integral_v<I> && sizeof(I) >= sizeof(Long), int> FOO>
591592
void
592-
ParticleContainer_impl<ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor>::CapacityOfParticlesInGrid (LayoutData<std::size_t>& mem, int lev) const
593+
ParticleContainer_impl<ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor>::CapacityOfParticlesInGrid (LayoutData<I>& mem, int lev) const
593594
{
594595
AMREX_ASSERT(lev >= 0 && lev < int(m_particles.size()));
595596

@@ -600,7 +601,7 @@ ParticleContainer_impl<ParticleType, NArrayReal, NArrayInt, Allocator, CellAssig
600601
for (ParConstIterType pti(*this, lev); pti.isValid(); ++pti)
601602
{
602603
int gid = pti.index();
603-
mem[gid] += (std::size_t)pti.capacity();
604+
mem[gid] += static_cast<I>(pti.capacity());
604605
}
605606
}
606607

Tests/Particles/NeighborList/main.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,4 +138,13 @@ void testNeighborList ()
138138
auto& nlist2 = neighbors_type_2[0][std::make_pair(gid, tid)];
139139
nlist2.print();
140140
}
141+
142+
LayoutData<std::size_t> mem(ba, dm);
143+
pc1.CapacityOfParticlesInGrid(mem, 0);
144+
145+
Vector<Long> particles_in_grid = pc1.NumberOfParticlesInGrid(0, false,true);
146+
for (amrex::MFIter mfi(mem); mfi.isValid(); ++mfi) {
147+
amrex::Print() << "Box " << mfi.index() << " uses "
148+
<< mem[mfi] << " bytes and have " << particles_in_grid[mfi.LocalIndex()] << " particles\n";
149+
}
141150
}

0 commit comments

Comments
 (0)