core
Shared MPI block decomposition + asynchronous ghost-layer exchange (header-only C++20)
Loading...
Searching...
No Matches
peclet::core::amr::DistributedPoissonView< Dim, Bits > Class Template Reference

Device-resident distributed plain-Laplacian Poisson operator: y = ∇²x with cross-block neighbours from the device gather halo. More...

#include <distributed_view.hpp>

Public Member Functions

void init (DistributedOctree< Dim, Bits > &d, double h0)
 
Index numLeaves () const
 
MPI_Comm comm () const
 
void apply (View< const double > x, View< double > y) const
 y = L x (L = ∇², periodic).
 
void jacobi (View< double > x, View< const double > b, int sweeps, double omega=0.8) const
 sweeps damped-Jacobi relaxations of L u = b (in place). Reads only the previous iterate.
 
double residual (View< const double > x, View< const double > b, View< double > res) const
 res = b − L x (device); returns the global L2 norm (the only host scalar).
 
double residualNorm (View< const double > x, View< const double > b) const
 

Detailed Description

template<int Dim, unsigned Bits = (Dim == 2 ? 32u : (Dim == 3 ? 21u : 16u))>
class peclet::core::amr::DistributedPoissonView< Dim, Bits >

Device-resident distributed plain-Laplacian Poisson operator: y = ∇²x with cross-block neighbours from the device gather halo.

apply / jacobi / residual run as Kokkos kernels over the device field.

Definition at line 150 of file distributed_view.hpp.

Member Function Documentation

◆ init()

◆ numLeaves()

template<int Dim, unsigned Bits = (Dim == 2 ? 32u : (Dim == 3 ? 21u : 16u))>
Index peclet::core::amr::DistributedPoissonView< Dim, Bits >::numLeaves ( ) const
inline

Definition at line 164 of file distributed_view.hpp.

◆ comm()

template<int Dim, unsigned Bits = (Dim == 2 ? 32u : (Dim == 3 ? 21u : 16u))>
MPI_Comm peclet::core::amr::DistributedPoissonView< Dim, Bits >::comm ( ) const
inline

◆ apply()

template<int Dim, unsigned Bits = (Dim == 2 ? 32u : (Dim == 3 ? 21u : 16u))>
void peclet::core::amr::DistributedPoissonView< Dim, Bits >::apply ( View< const double x,
View< double y 
) const
inline

◆ jacobi()

template<int Dim, unsigned Bits = (Dim == 2 ? 32u : (Dim == 3 ? 21u : 16u))>
void peclet::core::amr::DistributedPoissonView< Dim, Bits >::jacobi ( View< double x,
View< const double b,
int  sweeps,
double  omega = 0.8 
) const
inline

sweeps damped-Jacobi relaxations of L u = b (in place). Reads only the previous iterate.

Definition at line 183 of file distributed_view.hpp.

References peclet::core::amr::DistributedPoissonView< Dim, Bits >::apply().

◆ residual()

template<int Dim, unsigned Bits = (Dim == 2 ? 32u : (Dim == 3 ? 21u : 16u))>
double peclet::core::amr::DistributedPoissonView< Dim, Bits >::residual ( View< const double x,
View< const double b,
View< double res 
) const
inline

res = b − L x (device); returns the global L2 norm (the only host scalar).

Definition at line 196 of file distributed_view.hpp.

References peclet::core::amr::DistributedPoissonView< Dim, Bits >::apply(), peclet::core::amr::DistributedOctree< Dim, Bits >::comm(), MPI_Allreduce(), MPI_DOUBLE, and MPI_SUM.

◆ residualNorm()

template<int Dim, unsigned Bits = (Dim == 2 ? 32u : (Dim == 3 ? 21u : 16u))>
double peclet::core::amr::DistributedPoissonView< Dim, Bits >::residualNorm ( View< const double x,
View< const double b 
) const
inline

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