IPPL (Independent Parallel Particle Layer)
IPPL
Loading...
Searching...
No Matches
second_order_abc_edge< _scalar, edge_axis, normal_axis1, normal_axis2, na1_zero, na2_zero > Struct Template Reference

#include <AbsorbingBC.h>

Collaboration diagram for second_order_abc_edge< _scalar, edge_axis, normal_axis1, normal_axis2, na1_zero, na2_zero >:

Public Types

using scalar = _scalar

Public Member Functions

KOKKOS_FUNCTION second_order_abc_edge (ippl::Vector< scalar, 3 > hr, scalar dt)
 Constructor for the second-order ABC edge.
template<typename view_type, typename Coords>
KOKKOS_INLINE_FUNCTION auto operator() (const view_type &A_n, const view_type &A_nm1, const view_type &A_np1, const Coords &c) const -> typename view_type::value_type
 Applies the second-order ABC to the edge of the field.
template<typename value_type>
KOKKOS_INLINE_FUNCTION value_type advanceEdgeS (value_type v1, value_type v2, value_type v3, value_type v4, value_type v5, value_type v6, value_type v7, value_type v8, value_type v9, value_type v10, value_type v11, value_type v12, value_type v13, value_type v14, value_type v15, value_type v16, value_type v17, value_type v18, value_type v19) const noexcept
 Advances the edge boundary condition using the precomputed weights.

Public Attributes

scalar Eweights [5]

Detailed Description

template<typename _scalar, unsigned edge_axis, unsigned normal_axis1, unsigned normal_axis2, bool na1_zero, bool na2_zero>
struct second_order_abc_edge< _scalar, edge_axis, normal_axis1, normal_axis2, na1_zero, na2_zero >

Definition at line 161 of file AbsorbingBC.h.

Member Typedef Documentation

◆ scalar

template<typename _scalar, unsigned edge_axis, unsigned normal_axis1, unsigned normal_axis2, bool na1_zero, bool na2_zero>
using second_order_abc_edge< _scalar, edge_axis, normal_axis1, normal_axis2, na1_zero, na2_zero >::scalar = _scalar

Definition at line 162 of file AbsorbingBC.h.

Constructor & Destructor Documentation

◆ second_order_abc_edge()

template<typename _scalar, unsigned edge_axis, unsigned normal_axis1, unsigned normal_axis2, bool na1_zero, bool na2_zero>
KOKKOS_FUNCTION second_order_abc_edge< _scalar, edge_axis, normal_axis1, normal_axis2, na1_zero, na2_zero >::second_order_abc_edge ( ippl::Vector< scalar, 3 > hr,
scalar dt )
inline

Constructor for the second-order ABC edge.

Parameters
hrMesh spacing in each dimension.
dtTime step size.

Definition at line 171 of file AbsorbingBC.h.

References Eweights.

Member Function Documentation

◆ advanceEdgeS()

template<typename _scalar, unsigned edge_axis, unsigned normal_axis1, unsigned normal_axis2, bool na1_zero, bool na2_zero>
template<typename value_type>
KOKKOS_INLINE_FUNCTION value_type second_order_abc_edge< _scalar, edge_axis, normal_axis1, normal_axis2, na1_zero, na2_zero >::advanceEdgeS ( value_type v1,
value_type v2,
value_type v3,
value_type v4,
value_type v5,
value_type v6,
value_type v7,
value_type v8,
value_type v9,
value_type v10,
value_type v11,
value_type v12,
value_type v13,
value_type v14,
value_type v15,
value_type v16,
value_type v17,
value_type v18,
value_type v19 ) const
inlinenoexcept

Advances the edge boundary condition using the precomputed weights.

Definition at line 253 of file AbsorbingBC.h.

References Eweights.

Referenced by operator()().

Here is the caller graph for this function:

◆ operator()()

template<typename _scalar, unsigned edge_axis, unsigned normal_axis1, unsigned normal_axis2, bool na1_zero, bool na2_zero>
template<typename view_type, typename Coords>
KOKKOS_INLINE_FUNCTION auto second_order_abc_edge< _scalar, edge_axis, normal_axis1, normal_axis2, na1_zero, na2_zero >::operator() ( const view_type & A_n,
const view_type & A_nm1,
const view_type & A_np1,
const Coords & c ) const -> typename view_type::value_type
inline

Applies the second-order ABC to the edge of the field.

Parameters
A_nCurrent time step field.
A_nm1Previous time step field.
A_np1Next time step field.
cCoordinates of the current point in the field.
Returns
Updated value at the edge.

Definition at line 213 of file AbsorbingBC.h.

References advanceEdgeS(), and ippl::apply().

Here is the call graph for this function:

Member Data Documentation

◆ Eweights

template<typename _scalar, unsigned edge_axis, unsigned normal_axis1, unsigned normal_axis2, bool na1_zero, bool na2_zero>
scalar second_order_abc_edge< _scalar, edge_axis, normal_axis1, normal_axis2, na1_zero, na2_zero >::Eweights[5]

Definition at line 163 of file AbsorbingBC.h.

Referenced by advanceEdgeS(), and second_order_abc_edge().


The documentation for this struct was generated from the following file: