# Crate libceed[−][src]

## Expand description

# 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.8.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() { let ceed = libceed::Ceed::init("/cpu/self/ref"); let xc = ceed.vector_from_slice(&[0., 0.5, 1.0]).unwrap(); let xs = xc.view(); assert_eq!(xs[..], [0., 0.5, 1.0]); }

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.

## License: BSD-2-Clause

## Contributing

The `libceed`

crate is developed within the libCEED
repository. See the contributing
guidelines for details.

## Modules

basis | A Ceed Basis defines the discrete finite element basis and associated quadrature rule. |

elem_restriction | A Ceed ElemRestriction decomposes elements and groups the degrees of freedom (dofs) according to the different elements they belong to. |

operator | A Ceed Operator defines the finite/spectral element operator associated to a Ceed QFunction. A Ceed Operator connects Ceed ElemRestrictions, Ceed Bases, and Ceed QFunctions. |

prelude | |

qfunction | A Ceed QFunction represents the spatial terms of the point-wise functions describing the physics at the quadrature points. |

vector | A Ceed Vector constitutes the main data structure and serves as input/output for Ceed Operators. |

## Structs

Ceed | A Ceed is a library context representing control of a logical hardware resource. |

CeedError |

## Enums

CeedErrorHandler | |

ElemTopology | Type of basis shape to create non-tensor H1 element basis |

EvalMode | Basis evaluation mode |

MemType | Many Ceed interfaces take or return pointers to memory. This enum is used to specify where the memory being provided or requested must reside. |

NormType | Denotes type of vector norm to be computed |

QuadMode | Type of quadrature; also used for location of nodes |

TransposeMode | Denotes whether a linear transformation or its transpose should be applied |

## Constants

CEED_STRIDES_BACKEND | |

MAX_QFUNCTION_FIELDS |