OPAL (Object Oriented Parallel Accelerator Library)  2021.1.99
OPAL
AmrPCInterpolater.h
Go to the documentation of this file.
1 //
2 // Class AmrPCInterpolater
3 // Piecewise constant interpolation of data on coarse cells to fine cells.
4 //
5 // Copyright (c) 2017 - 2020, Matthias Frey, Paul Scherrer Institut, Villigen PSI, Switzerland
6 // All rights reserved
7 //
8 // Implemented as part of the PhD thesis
9 // "Precise Simulations of Multibunches in High Intensity Cyclotrons"
10 //
11 // This file is part of OPAL.
12 //
13 // OPAL is free software: you can redistribute it and/or modify
14 // it under the terms of the GNU General Public License as published by
15 // the Free Software Foundation, either version 3 of the License, or
16 // (at your option) any later version.
17 //
18 // You should have received a copy of the GNU General Public License
19 // along with OPAL. If not, see <https://www.gnu.org/licenses/>.
20 //
21 #ifndef AMR_PIECEWISE_CONST_INTERPOLATER_H
22 #define AMR_PIECEWISE_CONST_INTERPOLATER_H
23 
24 #include "AmrInterpolater.h"
25 
26 template <class Level>
27 class AmrPCInterpolater : public AmrInterpolater<Level>
28 {
29 public:
30  typedef typename Level::go_t go_t;
31  typedef typename Level::lo_t lo_t;
32  typedef typename Level::scalar_t scalar_t;
33  typedef typename Level::umap_t umap_t;
34  typedef typename Level::basefab_t basefab_t;
36 
37 public:
39 
40  void stencil(const AmrIntVect_t& iv,
41  const basefab_t& fab,
42  umap_t& map,
43  const scalar_t& scale,
44  Level* mglevel);
45 
46  void coarse(const AmrIntVect_t& iv,
47  umap_t& map,
48  const scalar_t& scale,
49  lo_t dir, lo_t shift, const basefab_t& rfab,
50  const AmrIntVect_t& riv,
51  Level* mglevel);
52 
53  void fine(const AmrIntVect_t& iv,
54  umap_t& map,
55  const scalar_t& scale,
56  lo_t dir, lo_t shift, const basefab_t& fab,
57  Level* mglevel);
58 
59 };
60 
61 #include "AmrPCInterpolater.hpp"
62 
63 #endif
amrex::IntVect AmrIntVect_t
Definition: AmrDefs.h:48
double scalar_t
amr::AmrIntVect_t AmrIntVect_t
Level::scalar_t scalar_t
Level::lo_t lo_t
Level::umap_t umap_t
Level::basefab_t basefab_t
Level::scalar_t scalar_t
Level::basefab_t basefab_t
void stencil(const AmrIntVect_t &iv, const basefab_t &fab, umap_t &map, const scalar_t &scale, Level *mglevel)
amr::AmrIntVect_t AmrIntVect_t
void fine(const AmrIntVect_t &iv, umap_t &map, const scalar_t &scale, lo_t dir, lo_t shift, const basefab_t &fab, Level *mglevel)
void coarse(const AmrIntVect_t &iv, umap_t &map, const scalar_t &scale, lo_t dir, lo_t shift, const basefab_t &rfab, const AmrIntVect_t &riv, Level *mglevel)
Level::umap_t umap_t