PACMAN
0.1.0
Portable Algorithms for Coupling, Mapping, and Adaptive iNterpolation
Toggle main menu visibility
Loading...
Searching...
No Matches
FTInterpExtrap.hpp
Go to the documentation of this file.
1
//
2
// This file is subject to the terms and conditions defined in
3
// file 'LICENSE', which is part of this source code package.
4
//
5
6
#pragma once
7
8
#include "
finite_elements/utils/ArborXCallbacks.hpp
"
9
#include "
finite_elements/utils/ComputeLinearSkin.hpp
"
10
#include "
finite_elements/utils/FTUtils.hpp
"
11
#include "
finite_elements/utils/SkinProjection.hpp
"
12
13
namespace
PACMAN
{
14
15
namespace
FiniteElements
{
16
29
template
<
typename
ExecSpace,
int
_t Dim>
30
void
FTInterExtrap
(Transfer<ExecSpace, Dim> &transfer) {
31
Kokkos::Profiling::pushRegion(
"FiniteElement::FTInterpExtrap"
);
32
33
Kokkos::Profiling::pushRegion(
"Compute target point FE intersection"
);
34
ComputeBoxTargetPointIntersection<ExecSpace, Dim>
(transfer);
35
36
Kokkos::Profiling::popRegion();
// Compute target point FE intersection
37
38
Kokkos::Profiling::pushRegion(
39
"Compute target point projection on triangulated skin mesh"
);
40
ComputeLinearSkin<ExecSpace, Dim>
(transfer);
41
if
constexpr
(Dim == 1) {
42
ComputeProjectionOn1DSkin<ExecSpace>
(transfer,
true
);
43
}
else
if
constexpr
(Dim == 2) {
44
ComputeProjectionOn2DSkin<ExecSpace>
(transfer,
true
);
45
}
else
if
constexpr
(Dim == 3) {
46
ComputeProjectionOn3DSkin<ExecSpace>
(transfer,
true
);
47
}
else
{
48
// LCOV_EXCL_START
49
throw
std::runtime_error(
"Unexpected dimension for projection"
);
50
// LCOV_EXCL_STOP
51
}
52
Kokkos::Profiling::popRegion();
// Compute target point projection on
53
// triangulated skin mesh
54
55
Kokkos::Profiling::popRegion();
// FTInterpExtrap
56
}
57
}
// namespace FiniteElements
58
}
// namespace PACMAN
ArborXCallbacks.hpp
ArborX predicate/callback helpers for PACMAN finite-elements kernels.
ComputeLinearSkin.hpp
FTUtils.hpp
SkinProjection.hpp
PACMAN::FiniteElements
Definition
FTInterpClamp.hpp:15
PACMAN::FiniteElements::ComputeProjectionOn3DSkin
void ComputeProjectionOn3DSkin(Transfer< ExecSpace, 3 > &transfer, bool extrapol=false)
Project outside target points on a 3D skin and evaluate FE values.
Definition
SkinProjection.hpp:52
PACMAN::FiniteElements::ComputeProjectionOn2DSkin
void ComputeProjectionOn2DSkin(Transfer< ExecSpace, 2 > &transfer, bool extrapol=false)
Project outside target points on a 2D skin and evaluate FE values.
Definition
SkinProjection.hpp:182
PACMAN::FiniteElements::ComputeLinearSkin
void ComputeLinearSkin(Transfer< ExecSpace, Dim > &transfer)
Build tetrahedralized boundary skin from source elements.
Definition
ComputeLinearSkin.hpp:68
PACMAN::FiniteElements::ComputeProjectionOn1DSkin
void ComputeProjectionOn1DSkin(Transfer< ExecSpace, 1 > &transfer, bool extrapol=false)
Project outside target points on a 1D skin and evaluate FE values.
Definition
SkinProjection.hpp:294
PACMAN::FiniteElements::FTInterExtrap
void FTInterExtrap(Transfer< ExecSpace, Dim > &transfer)
Interpolate target points from FE cells and extrapolate outside points via projection onto the source...
Definition
FTInterpExtrap.hpp:30
PACMAN::FiniteElements::ComputeBoxTargetPointIntersection
void ComputeBoxTargetPointIntersection(Transfer< ExecSpace, Dim > &transfer)
Intersect target points with source-element bounding boxes, then evaluate FE interpolation for inters...
Definition
FTUtils.hpp:33
PACMAN
Definition
concepts.hpp:14
src
finite_elements
FTInterpExtrap.hpp
Generated on
for PACMAN by
1.17.0