`band`

banded level set method

# Description

Let `fh` be a finite element function defined on a geometric domain `Lambda`. Then, the set of elements intersecting the zero level set is defined by `{x in Lambda, fh(x) = 0}` and is called a band. This class represents such a band: it is used for solving problems defined on a surface, when the surface itself is implicitly defined by a `level_set` function.

# Acessors

Each side in the surface mesh, as returned by the `level_set` member function, is included into an element of the band mesh, as returned by the `band` member function. Moreover, in the distributed memory environment, this correspondence is on the same local memory, so local indexes can be used for this correspondence: it is provided by the `sid_ie2bnd_ie` member function.

# Topology and domains

For the direct resolution of systems posed on the band, the mesh returned by the `band()` member function provides some domains of vertices. The `"zero"` vertex domain lists all vertices `xi` such that `fh(xi)=0`. The `"isolated"` vertex domain lists all vertices `xi` such that `fh(xi)!=0` and `xi` is contained by only one element `K` and all vertices `xj!=xi` of `K` satisfies `fh(xj)=0`. Others vertices of the band, separated by the zero and isolated ones, are organized by connected components: the `n_connex_component` member function returns its number. Corresponding vertex domains of the band are named `"cci"` where i should be replaced by any number between 0 and `n_connex_component-1`, e.g. `cc0`, `cc1`, etc.

# Implementation

This documentation has been generated from file main/lib/band.h

The `band` class is simply an alias to the `band_basic` class

typedef band_basic<Float> band;

The `band_basic` class provides an interface, via the `smart_pointer` class family, to a mesh container:

template <class T, class M = rheo_default_memory_model>
class band_basic {
public:
typedef typename geo_basic<T,M>::size_type size_type;
// allocators:
band_basic();
band_basic(const field_basic<T,M>& fh,
const level_set_option& opt = level_set_option());
// accessors:
const geo_basic<T,M>& band() const { return _band; }
const geo_basic<T,M>& level_set() const { return _gamma; }
size_type sid_ie2bnd_ie (size_type sid_ie) const { return _sid_ie2bnd_ie [sid_ie]; }
size_type n_connected_component() const { return _ncc; }
};
rheolef::band_basic::level_set
const geo_basic< T, M > & level_set() const
Definition: band.h:109
rheolef::band_basic::_ncc
size_type _ncc
Definition: band.h:119
rheolef::band_basic::band_basic
band_basic()
Definition: band.h:133
rheolef::band_basic::size_type
geo_basic< T, M >::size_type size_type
Definition: band.h:98
rheolef::band_basic::band
const geo_basic< T, M > & band() const
Definition: band.h:108
rheolef::band_basic::_band
geo_basic< T, M > _band
Definition: band.h:117
rheolef::band_basic::_gamma
geo_basic< T, M > _gamma
Definition: band.h:116
rheolef::band_basic::sid_ie2bnd_ie
size_type sid_ie2bnd_ie(size_type sid_ie) const
Definition: band.h:110
rheolef::band_basic::_sid_ie2bnd_ie
disarray< size_type, M > _sid_ie2bnd_ie
Definition: band.h:118
rheolef::band
band_basic< Float > band
Definition: band.h:125
size_type
field::size_type size_type
Definition: branch.cc:425
rheolef::band_basic::n_connected_component
size_type n_connected_component() const
Definition: band.h:111