use crate::DType;
use numr::runtime::Runtime;
use numr::tensor::Tensor;
use crate::pde::error::PdeResult;
use crate::pde::types::{BoundarySpec, SpectralResult};
pub trait SpectralAlgorithms<R: Runtime<DType = DType>> {
fn spectral_1d(
&self,
f_rhs: &Tensor<R>,
q: Option<&Tensor<R>>,
n: usize,
boundary: &[BoundarySpec<R>],
) -> PdeResult<SpectralResult<R>>;
fn spectral_2d(
&self,
f_rhs: &Tensor<R>,
nx: usize,
ny: usize,
boundary: &[BoundarySpec<R>],
) -> PdeResult<SpectralResult<R>>;
}