4 releases (breaking)
0.12.0 | Nov 1, 2023 |
---|---|
0.11.0 | Dec 24, 2022 |
0.9.0 | Jul 7, 2021 |
0.8.0 | May 28, 2021 |
#108 in Science
2MB
30K
SLoC
libceed: efficient, extensible discretization
This crate provides an interface to libCEED, which is a performance-portable library for extensible element-based discretization for partial differential equations and related computational problems. The formulation is algebraic and intended to be lightweight and easy to incorporate in higher level abstractions. See the libCEED user manual for details on interface concepts and extensive examples.
Usage
To call libCEED from a Rust package, the following Cargo.toml
can be used.
[dependencies]
libceed = "0.12.0"
For a development version of the libCEED Rust bindings, use the following Cargo.toml
.
[dependencies]
libceed = { git = "https://github.com/CEED/libCEED", branch = "main" }
extern crate libceed;
fn main() -> libceed::Result<()> {
let ceed = libceed::Ceed::init("/cpu/self/ref");
let xc = ceed.vector_from_slice(&[0., 0.5, 1.0])?;
let xs = xc.view()?;
assert_eq!(xs[..], [0., 0.5, 1.0]);
Ok(())
}
This crate provides modules for each object, but they are usually created from the Ceed
object as with the vector above.
The resource string passed to Ceed::init
is used to identify the "backend", which includes algorithmic strategies and hardware such as NVIDIA and AMD GPUs.
See the libCEED documentation for more information on available backends.
Examples
Examples of libCEED can be found in the libCEED repository under the examples/rust
directory.
Documentation
This crate uses katexit
to render equations in the documentation.
To build the documentation locally with katexit
enabled, use
cargo doc --features=katexit
License: BSD-2-Clause
Contributing
The libceed
crate is developed within the libCEED repository.
See the contributing guidelines for details.
Dependencies
~1.3–3.5MB
~72K SLoC