aboutsummaryrefslogtreecommitdiff
path: root/Source/Diagnostics/FieldIO.cpp
diff options
context:
space:
mode:
authorGravatar Axel Huebl <axel.huebl@plasma.ninja> 2020-01-15 10:07:57 -0800
committerGravatar GitHub <noreply@github.com> 2020-01-15 10:07:57 -0800
commitcbec7015b1c52f0875a84c4eebc321c4c760ff1d (patch)
tree3de6933b6bf80c1a1c4c5acf162314fd5ea92620 /Source/Diagnostics/FieldIO.cpp
parentb232c1422a343fbd5bff4f5633b7c74d23f88e10 (diff)
parent83d4a2eb17431fbdf7a67cc1f9d50020568758c3 (diff)
downloadWarpX-cbec7015b1c52f0875a84c4eebc321c4c760ff1d.tar.gz
WarpX-cbec7015b1c52f0875a84c4eebc321c4c760ff1d.tar.zst
WarpX-cbec7015b1c52f0875a84c4eebc321c4c760ff1d.zip
Merge pull request #617 from dpgrote/write_all_rz_components
Removed copy when averaging the field components for diagnostics
Diffstat (limited to 'Source/Diagnostics/FieldIO.cpp')
-rw-r--r--Source/Diagnostics/FieldIO.cpp12
1 files changed, 4 insertions, 8 deletions
diff --git a/Source/Diagnostics/FieldIO.cpp b/Source/Diagnostics/FieldIO.cpp
index 43f204da0..be0e719cc 100644
--- a/Source/Diagnostics/FieldIO.cpp
+++ b/Source/Diagnostics/FieldIO.cpp
@@ -352,7 +352,7 @@ AverageAndPackVectorField( MultiFab& mf_avg,
}
}
-/** \brief Takes the specified component of the three fields and
+/** \brief Takes all of the components of the three fields and
* averages and packs them into the MultiFab mf_avg.
*/
void
@@ -363,14 +363,10 @@ AverageAndPackVectorFieldComponents (MultiFab& mf_avg,
{
if (vector_field[0]->nComp() > 1) {
std::array<std::unique_ptr<MultiFab>,3> vector_field_component;
- vector_field_component[0].reset(new MultiFab(vector_field[0]->boxArray(), dm, 1, vector_field[0]->nGrowVect()));
- vector_field_component[1].reset(new MultiFab(vector_field[1]->boxArray(), dm, 1, vector_field[1]->nGrowVect()));
- vector_field_component[2].reset(new MultiFab(vector_field[2]->boxArray(), dm, 1, vector_field[2]->nGrowVect()));
for (int icomp=0 ; icomp < vector_field[0]->nComp() ; icomp++) {
- // This is a bit inefficient since it copies the data. Can this be done with pointers?
- MultiFab::Copy(*vector_field_component[0], *vector_field[0], icomp, 0, 1, vector_field[0]->nGrowVect());
- MultiFab::Copy(*vector_field_component[1], *vector_field[1], icomp, 0, 1, vector_field[1]->nGrowVect());
- MultiFab::Copy(*vector_field_component[2], *vector_field[2], icomp, 0, 1, vector_field[2]->nGrowVect());
+ vector_field_component[0].reset(new MultiFab(*vector_field[0], amrex::make_alias, icomp, 1));
+ vector_field_component[1].reset(new MultiFab(*vector_field[1], amrex::make_alias, icomp, 1));
+ vector_field_component[2].reset(new MultiFab(*vector_field[2], amrex::make_alias, icomp, 1));
AverageAndPackVectorField(mf_avg, vector_field_component, dm, dcomp, ngrow);
dcomp += 3;
}