OPAL (Object Oriented Parallel Accelerator Library) 2022.1
OPAL
AmrTrilinearInterpolater.h
Go to the documentation of this file.
1//
2// Class AmrTrilinearInterpolater
3// Trilinear 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_TRILINEAR_INTERPOLATER_H
22#define AMR_TRILINEAR_INTERPOLATER_H
23
24#include "AmrInterpolater.h"
25
26#include <algorithm>
27#include <iterator>
28
29template <class Level>
31{
32public:
33 typedef typename Level::go_t go_t;
34 typedef typename Level::lo_t lo_t;
35 typedef typename Level::scalar_t scalar_t;
36 typedef typename Level::umap_t umap_t;
37 typedef typename Level::basefab_t basefab_t;
39
40public:
41
43
44 void stencil(const AmrIntVect_t& iv,
45 const basefab_t& fab,
46 umap_t& map,
47 const scalar_t& scale,
48 Level* mglevel);
49
50 void coarse(const AmrIntVect_t& iv,
51 umap_t& map,
52 const scalar_t& scale,
53 lo_t dir, lo_t shift, const basefab_t& rfab,
54 const AmrIntVect_t& riv,
55 Level* mglevel);
56
57 void fine(const AmrIntVect_t& iv,
58 umap_t& map,
59 const scalar_t& scale,
60 lo_t dir, lo_t shift, const basefab_t& fab,
61 Level* mglevel);
62};
63
64
66
67#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
void stencil(const AmrIntVect_t &iv, const basefab_t &fab, umap_t &map, const scalar_t &scale, Level *mglevel)
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)