band(2rheolef)

πŸ“¦
version 7.2 Β· 4 versions
, in debian trixie, ubuntu noble, ubuntu questing

πŸ’– 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 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. (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_component member 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 (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