PACMAN
0.1.0
Portable Algorithms for Coupling, Mapping, and Adaptive iNterpolation
Toggle main menu visibility
Loading...
Searching...
No Matches
FTInterpClamp.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
28
template
<
typename
ExecSpace,
int
_t Dim>
29
void
FTInterClamp
(Transfer<ExecSpace, Dim> &transfer) {
30
Kokkos::Profiling::pushRegion(
"FiniteElement::FTInterpClamp"
);
31
Kokkos::Profiling::pushRegion(
"Compute target point FE intersection"
);
32
33
ComputeBoxTargetPointIntersection<ExecSpace, Dim>
(transfer);
34
35
Kokkos::Profiling::popRegion();
// Compute target point FE intersection
36
37
Kokkos::Profiling::pushRegion(
38
"Compute target point projection on triangulated skin mesh"
);
39
ComputeLinearSkin<ExecSpace, Dim>
(transfer);
40
if
constexpr
(Dim == 1) {
41
ComputeProjectionOn1DSkin<ExecSpace>
(transfer,
false
);
42
}
else
if
constexpr
(Dim == 2) {
43
ComputeProjectionOn2DSkin<ExecSpace>
(transfer,
false
);
44
}
else
if
constexpr
(Dim == 3) {
45
ComputeProjectionOn3DSkin<ExecSpace>
(transfer,
false
);
46
}
else
{
47
// LCOV_EXCL_START
48
throw
std::runtime_error(
"Unexpected dimension for projection"
);
49
// LCOV_EXCL_STOP
50
}
51
52
Kokkos::Profiling::popRegion();
// Compute target point projection on
53
// triangulated skin mesh
54
Kokkos::Profiling::popRegion();
// FTInterpClamp
55
}
56
}
// namespace FiniteElements
57
}
// 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::FTInterClamp
void FTInterClamp(Transfer< ExecSpace, Dim > &transfer)
Interpolate target points from FE cells and clamp outside points by projection onto the source mesh s...
Definition
FTInterpClamp.hpp:29
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::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
FTInterpClamp.hpp
Generated on
for PACMAN by
1.17.0