band(2rheolef)
π band β the banded level set method π
okay bestie, listen up β this is a rheolef-7.2 situation and it's lowkey iconic, so let's get into it.
β¨ NAME β¨
band β the banded level set method, straight outta rheolef-7.2 π
π¦ DESCRIPTION π¦
So picture this: you've got fh, right? It's a finite element function defined on a geometric domain Lambda. And the set of elements that intersect the zero level set β that's
{x in Lambda, fh(x) = 0}
β is what we call a band. periodt. π
This class represents exactly that band. What's it for, you ask? It's for solving problems defined on a surface, when the surface itself is implicitly defined by a level_set(3) function. No cap, that's the whole vibe. πΈ
π ACESSORS π
Every single side in the surface mesh β the one you get back from the level_set member function β is included into an element of the band mesh, which you get back from the band member function. the way they correspond... obsessed. β¨
And here's the part that's giving main character energy: in the distributed memory environment, this correspondence lives on the same local memory. So local indexes are totally fine to use for it. The whole thing is provided by the sid_ie2bnd_ie member function. iykyk π«Ά
π 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. Let's break it down, bestie:
- The
'zero'vertex domain lists all verticesxisuch thatfh(xi)=0. π - The
'isolated'vertex domain lists all verticesxisuch thatfh(xi)!=0andxiis contained by only one elementKand all verticesxj!=xiofKsatisfiesfh(xj)=0. (yeah it's a mouthful, but it's exactly right π) - The others β the vertices of the band that get separated by the zero and isolated ones β are organized by connected components. The
n_connex_componentmember function returns how many there are. π₯
The corresponding vertex domains of the band are named 'cci' where i should be replaced by any number between 0 and n_connex_component-1. So like cc0, cc1, etc. cute naming scheme fr fr. π
π 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(7) 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; }
};
look at that struct definition. she's beautiful. she's everything. π
πΈ AUTHOR πΈ
Pierre Saramito <Pierre.Saramito@imag.fr> π
β COPYRIGHT β
Copyright (C) 2000-2018 Pierre Saramito <Pierre.Saramito@imag.fr> GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
fr fr, no warranty β read that part twice bestie, it's not a drill π
and that's the whole page, babe β this was rheolef, Version 7.2, and you just read the band(2rheolef) manual. slay, ate, left no crumbs. go solve a surface problem, you got this πβ¨π¦
π¦ where this page comes from
- debian trixie: librheolef-dev 7.2-4 Β· GPL-3.0-or-later
- ubuntu noble: librheolef-dev 7.2-3build5 Β· GPL-3.0-or-later
- ubuntu questing: librheolef-dev 7.2-4build1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms