diff options
author | 2020-01-15 10:07:57 -0800 | |
---|---|---|
committer | 2020-01-15 10:07:57 -0800 | |
commit | cbec7015b1c52f0875a84c4eebc321c4c760ff1d (patch) | |
tree | 3de6933b6bf80c1a1c4c5acf162314fd5ea92620 /Source/Diagnostics/FieldIO.cpp | |
parent | b232c1422a343fbd5bff4f5633b7c74d23f88e10 (diff) | |
parent | 83d4a2eb17431fbdf7a67cc1f9d50020568758c3 (diff) | |
download | WarpX-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.cpp | 12 |
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; } |