use ndelement::ciarlet::lagrange;
use ndelement::{
traits::FiniteElement,
types::{Continuity, ReferenceCellType},
};
use rlst::{DynArray, rlst_dynamic_array};
fn main() {
let element = lagrange::create::<f64, f64>(
ReferenceCellType::Triangle,
2,
Continuity::Standard,
lagrange::Variant::Equispaced,
);
println!("This element has {} basis functions.", element.dim());
let mut basis_values = DynArray::<f64, 4>::from_shape(element.tabulate_array_shape(0, 1));
let mut points = rlst_dynamic_array!(f64, [2, 1]);
points[[0, 0]] = 1.0 / 3.0;
points[[1, 0]] = 1.0 / 3.0;
element.tabulate(&points, 0, &mut basis_values);
println!(
"The values of the basis functions at the point (1/3, 1/3) are: {:?}",
basis_values.data().unwrap()
);
points[[0, 0]] = 1.0;
points[[1, 0]] = 0.0;
element.tabulate(&points, 0, &mut basis_values);
println!(
"The values of the basis functions at the point (1, 0) are: {:?}",
basis_values.data().unwrap()
);
}