mod boundary;
mod potential;
use crate::assembly::common::RlstArray;
use rlst::RlstScalar;
#[cfg(feature = "mpi")]
pub use boundary::ParallelBoundaryAssembly;
pub use boundary::{
Access1D, Access2D, BoundaryAssembly, BoundaryIntegrand, CellPairAssembler, GeometryAccess,
};
pub use potential::{CellAssembler, PotentialAssembly, PotentialIntegrand};
pub trait CellGeometry {
type T: RlstScalar<Real = Self::T>;
fn points(&self) -> &RlstArray<Self::T, 2>;
fn normals(&self) -> &RlstArray<Self::T, 2>;
fn jacobians(&self) -> &RlstArray<Self::T, 2>;
fn jdets(&self) -> &[Self::T];
}
pub trait KernelEvaluator {
type T: RlstScalar;
fn assemble_pairwise_st(
&self,
sources: &[<Self::T as RlstScalar>::Real],
targets: &[<Self::T as RlstScalar>::Real],
result: &mut [Self::T],
);
fn assemble_st(
&self,
sources: &[<Self::T as RlstScalar>::Real],
targets: &[<Self::T as RlstScalar>::Real],
result: &mut [Self::T],
);
}