diff options
author | 2020-09-08 09:53:02 -0700 | |
---|---|---|
committer | 2020-09-08 09:53:02 -0700 | |
commit | d3deb238aee2fca44a099ec45c08dc265223ca52 (patch) | |
tree | 6813c6f0a47f4282b9d0c7aca94925cbd633db05 /Source/Utils/RelativeCellPosition.cpp | |
parent | b452f85552c7fe07289f8e1033b7a8b631744eb5 (diff) | |
download | WarpX-d3deb238aee2fca44a099ec45c08dc265223ca52.tar.gz WarpX-d3deb238aee2fca44a099ec45c08dc265223ca52.tar.zst WarpX-d3deb238aee2fca44a099ec45c08dc265223ca52.zip |
openPMD: Generalize Mesh Position (#1296)
This adds a small utility that returns the relative in-cell position of values
on each cell depending on an `amrex::MultiFab`'s `Box`'s `IndexType`.
This does not change the output of openPMD yet, since we spatially and
temporally center fields before output, but makes the routines
more general overall for future use.
Diffstat (limited to 'Source/Utils/RelativeCellPosition.cpp')
-rw-r--r-- | Source/Utils/RelativeCellPosition.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/Source/Utils/RelativeCellPosition.cpp b/Source/Utils/RelativeCellPosition.cpp new file mode 100644 index 000000000..58c35fa52 --- /dev/null +++ b/Source/Utils/RelativeCellPosition.cpp @@ -0,0 +1,29 @@ +/* Copyright 2020 Axel Huebl + * + * This file is part of WarpX. + * + * License: BSD-3-Clause-LBNL + */ +#include "RelativeCellPosition.H" + +#include <AMReX_IndexType.H> + + +std::vector< double > +utils::getRelativeCellPosition(amrex::MultiFab const& mf) +{ + amrex::IndexType const idx_type = mf.ixType(); + + std::vector< double > relative_position(AMREX_SPACEDIM, 0.0); + + // amrex::CellIndex::CELL means: 0.5 from lower corner for that index/direction + // amrex::CellIndex::NODE means: at corner for that index/direction + // WarpX::do_nodal means: all indices/directions on CellIndex::NODE + for (int d = 0; d < AMREX_SPACEDIM; d++) + { + if (idx_type.cellCentered(d)) + relative_position.at(d) = 0.5; + } + + return relative_position; +} |