IPPL (Independent Parallel Particle Layer)
IPPL
Loading...
Searching...
No Matches
second_order_abc_corner< _scalar, x0, y0, z0 > Struct Template Reference

#include <AbsorbingBC.h>

Collaboration diagram for second_order_abc_corner< _scalar, x0, y0, z0 >:

Public Types

using scalar = _scalar

Public Member Functions

KOKKOS_FUNCTION second_order_abc_corner (ippl::Vector< scalar, 3 > hr, scalar dt)
 Constructor for the second-order ABC corner.
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 corner of the field.
template<typename value_type>
KOKKOS_INLINE_FUNCTION value_type advanceCornerS (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, value_type v20, value_type v21, value_type v22, value_type v23) const noexcept
 Advances the corner boundary condition using the precomputed weights.

Public Attributes

scalar Cweights [17]

Detailed Description

template<typename _scalar, bool x0, bool y0, bool z0>
struct second_order_abc_corner< _scalar, x0, y0, z0 >

Definition at line 287 of file AbsorbingBC.h.

Member Typedef Documentation

◆ scalar

template<typename _scalar, bool x0, bool y0, bool z0>
using second_order_abc_corner< _scalar, x0, y0, z0 >::scalar = _scalar

Definition at line 288 of file AbsorbingBC.h.

Constructor & Destructor Documentation

◆ second_order_abc_corner()

template<typename _scalar, bool x0, bool y0, bool z0>
KOKKOS_FUNCTION second_order_abc_corner< _scalar, x0, y0, z0 >::second_order_abc_corner ( ippl::Vector< scalar, 3 > hr,
scalar dt )
inline

Constructor for the second-order ABC corner.

Parameters
hrMesh spacing in each dimension.
dtTime step size.

Definition at line 297 of file AbsorbingBC.h.

References Cweights.

Member Function Documentation

◆ advanceCornerS()

template<typename _scalar, bool x0, bool y0, bool z0>
template<typename value_type>
KOKKOS_INLINE_FUNCTION value_type second_order_abc_corner< _scalar, x0, y0, z0 >::advanceCornerS ( 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,
value_type v20,
value_type v21,
value_type v22,
value_type v23 ) const
inlinenoexcept

Advances the corner boundary condition using the precomputed weights.

Definition at line 377 of file AbsorbingBC.h.

References Cweights.

Referenced by operator()().

Here is the caller graph for this function:

◆ operator()()

template<typename _scalar, bool x0, bool y0, bool z0>
template<typename view_type, typename Coords>
KOKKOS_INLINE_FUNCTION auto second_order_abc_corner< _scalar, x0, y0, z0 >::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 corner 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 corner.

Definition at line 343 of file AbsorbingBC.h.

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

Here is the call graph for this function:

Member Data Documentation

◆ Cweights

template<typename _scalar, bool x0, bool y0, bool z0>
scalar second_order_abc_corner< _scalar, x0, y0, z0 >::Cweights[17]

Definition at line 289 of file AbsorbingBC.h.

Referenced by advanceCornerS(), and second_order_abc_corner().


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