You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
## Summary
When using a PureSoA particle container, trying to access the AoS
components will now result in a compile-time error.
Previously it still compiled, and I suspect it even allocated memory for
AoS.
New error message:
```
/hipace/src/Hipace.cpp:1499:39: error: ‘struct amrex::ThisParticleTileHasNoAoS’ has no member named ‘begin’
1499 | const auto& pos_structs = aos.begin() + nreal;
| ^~~~~
```
Using this I found more places that needed to be updated to account for
PureSoA.
PureSoA still has the following issues:
- [x] I believe it’s not possible to use the binning functions (in
`DenseBins.H`) as they require a particle pointer.
- [ ] The `ParticleTileData` struct that is used to access SoA data can
be very large, over 300 bytes in some cases. I recommend changing the
array-of-pointers to a full 2D array. This way ParticleTileData could be
as small as 24 bytes (real pointer, int pointer, stride).
## Additional background
Follow-up to #2878.
## Checklist
The proposed changes:
- [x] fix a bug or incorrect behavior in AMReX
- [ ] add new capabilities to AMReX
- [ ] changes answers in the test suite to more than roundoff level
- [ ] are likely to significantly affect the results of downstream AMReX
users
- [ ] include documentation in the code and/or rst files, if appropriate
---------
Co-authored-by: Axel Huebl <[email protected]>
0 commit comments