diff options
author | 2019-09-06 14:06:08 -0700 | |
---|---|---|
committer | 2019-09-06 14:06:08 -0700 | |
commit | 0e0f6b2f11968357ee9890a507d939e63f68bb45 (patch) | |
tree | 04bdb115d0a95ba91728778a9279db652da510b1 /Source/Python/WarpXWrappers.cpp | |
parent | 62496147d69527a138cd1f195e462c4afa89b7f4 (diff) | |
download | WarpX-0e0f6b2f11968357ee9890a507d939e63f68bb45.tar.gz WarpX-0e0f6b2f11968357ee9890a507d939e63f68bb45.tar.zst WarpX-0e0f6b2f11968357ee9890a507d939e63f68bb45.zip |
Updated Python particles interface to allow refined levels
Diffstat (limited to 'Source/Python/WarpXWrappers.cpp')
-rw-r--r-- | Source/Python/WarpXWrappers.cpp | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/Source/Python/WarpXWrappers.cpp b/Source/Python/WarpXWrappers.cpp index a60efd498..2fb7200bb 100644 --- a/Source/Python/WarpXWrappers.cpp +++ b/Source/Python/WarpXWrappers.cpp @@ -308,23 +308,21 @@ extern "C" return getMultiFabLoVects(mf, return_size, ngrow); } - double** warpx_getParticleStructs(int speciesnumber, + double** warpx_getParticleStructs(int speciesnumber, int lev, int* num_tiles, int** particles_per_tile) { auto & mypc = WarpX::GetInstance().GetPartContainer(); auto & myspc = mypc.GetParticleContainer(speciesnumber); - const int level = 0; - int i = 0; - for (WarpXParIter pti(myspc, level); pti.isValid(); ++pti, ++i) {} + for (WarpXParIter pti(myspc, lev); pti.isValid(); ++pti, ++i) {} - // *num_tiles = myspc.numLocalTilesAtLevel(level); + // *num_tiles = myspc.numLocalTilesAtLevel(lev); *num_tiles = i; *particles_per_tile = (int*) malloc(*num_tiles*sizeof(int)); double** data = (double**) malloc(*num_tiles*sizeof(typename WarpXParticleContainer::ParticleType*)); i = 0; - for (WarpXParIter pti(myspc, level); pti.isValid(); ++pti, ++i) { + for (WarpXParIter pti(myspc, lev); pti.isValid(); ++pti, ++i) { auto& aos = pti.GetArrayOfStructs(); data[i] = (double*) aos.data(); (*particles_per_tile)[i] = pti.numParticles(); @@ -332,23 +330,21 @@ extern "C" return data; } - double** warpx_getParticleArrays(int speciesnumber, int comp, + double** warpx_getParticleArrays(int speciesnumber, int comp, int lev, int* num_tiles, int** particles_per_tile) { auto & mypc = WarpX::GetInstance().GetPartContainer(); auto & myspc = mypc.GetParticleContainer(speciesnumber); - const int level = 0; - int i = 0; - for (WarpXParIter pti(myspc, level); pti.isValid(); ++pti, ++i) {} + for (WarpXParIter pti(myspc, lev); pti.isValid(); ++pti, ++i) {} - // *num_tiles = myspc.numLocalTilesAtLevel(level); + // *num_tiles = myspc.numLocalTilesAtLevel(lev); *num_tiles = i; *particles_per_tile = (int*) malloc(*num_tiles*sizeof(int)); double** data = (double**) malloc(*num_tiles*sizeof(double*)); i = 0; - for (WarpXParIter pti(myspc, level); pti.isValid(); ++pti, ++i) { + for (WarpXParIter pti(myspc, lev); pti.isValid(); ++pti, ++i) { auto& soa = pti.GetStructOfArrays(); data[i] = (double*) soa.GetRealData(comp).dataPtr(); (*particles_per_tile)[i] = pti.numParticles(); |