-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
use ndelement::ciarlet::LagrangeElementFamily; | ||
Check warning on line 1 in examples/element_family.rs GitHub Actions / Rust style checks (--features "mpi,strict")
Check warning on line 1 in examples/element_family.rs GitHub Actions / Rust style checks
Check warning on line 1 in examples/element_family.rs GitHub Actions / Rust style checks (--features "mpi,strict")
|
||
use ndelement::{ReferenceCellType, Continuity}; | ||
Check failure on line 2 in examples/element_family.rs GitHub Actions / Run Rust tests (stable, mpich, --features "mpi,strict")
Check failure on line 2 in examples/element_family.rs GitHub Actions / Run Rust tests (stable, openmpi, --features "mpi,strict")
|
||
use ndelement::traits::{ElementFamily, FiniteElement}; | ||
|
||
extern crate blas_src; | ||
extern crate lapack_src; | ||
|
||
fn main() { | ||
// Create the degree 2 Lagrange element family. A family is a set of finite elements with the | ||
// same family type, degree, and continuity across a set of cells | ||
let family = LagrangeElementFamily::<f64>::new(2, Continuity::Continuous); | ||
|
||
// Get the element in the family on a triangle | ||
let element = family.element(ReferenceCellType::Triangle); | ||
println!("Cell: {:?}", element.cell_type()); | ||
|
||
// Get the element in the family on a triangle | ||
let element = family.element(ReferenceCellType::Quadrilateral); | ||
println!("Cell: {:?}", element.cell_type()); | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
use ndelement::ciarlet::lagrange; | ||
Check warning on line 1 in examples/lagrange_element.rs GitHub Actions / Rust style checks (--features "mpi,strict")
Check warning on line 1 in examples/lagrange_element.rs GitHub Actions / Rust style checks
Check warning on line 1 in examples/lagrange_element.rs GitHub Actions / Rust style checks (--features "mpi,strict")
|
||
use ndelement::{types::{Continuity, ReferenceCellType}, traits::FiniteElement}; | ||
use rlst::{rlst_dynamic_array2, rlst_dynamic_array4, RawAccess}; | ||
|
||
extern crate blas_src; | ||
extern crate lapack_src; | ||
|
||
fn main() { | ||
// Create a P2 element on a triangle | ||
let element = lagrange::create::<f64>(ReferenceCellType::Triangle, 2, Continuity::Continuous); | ||
|
||
println!("This element has {} basis functions.", element.dim()); | ||
|
||
// Create an array to store the basis function values | ||
let mut basis_values = rlst_dynamic_array4!(f64, element.tabulate_array_shape(0, 1)); | ||
// Create array containing the point [1/3, 1/3] | ||
let mut points = rlst_dynamic_array2!(f64, [1, 2]); | ||
points[[0, 0]] = 1.0 / 3.0; | ||
points[[0, 1]] = 1.0 / 3.0; | ||
// Tabulate the element's basis functions at the point | ||
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() | ||
); | ||
|
||
// Set point to [1, 0] | ||
points[[0, 0]] = 1.0; | ||
points[[0, 1]] = 0.0; | ||
// Tabulate the element's basis functions at the point | ||
element.tabulate(&points, 0, &mut basis_values); | ||
println!( | ||
"The values of the basis functions at the point (1, 0) are: {:?}", | ||
basis_values.data() | ||
); | ||
} |
This file was deleted.