FiberVISH 0.2
Fish - The Fiber Bundle API for the Vish Visualization Shell
Public Member Functions | Public Attributes | List of all members
Fiber::FieldID Class Reference

Identifier for Fields within a Grid. More...

#include <FieldID.hpp>

Inheritance diagram for Fiber::FieldID:
MemCore::ReferenceBase< FieldID >

Public Member Functions

 FieldID (const string &n)
 Construct a Field Identifier from a name.
 
 FieldID (const WeakPtr< FiberTypeBase > &FTB, const string &n)
 Construct with an initial type and name.
 
const string & Name () const
 Get the textual description.
 
void rename (const string &NewName)
 
void addSource (const FieldIDPtr &src)
 Specify another FieldID as a source of this FieldID.
 
string xml () const
 
bool operator== (const string &s) const
 
bool operator!= (const string &s) const
 
- Public Member Functions inherited from MemCore::ReferenceBase< FieldID >
auto getObjectCountID () const noexcept
 
bool isIdentical (const WeakPtr< Object, Object > &PossibleSelf) const noexcept
 
void mkAutoDestructive ()
 
refcount_t refcount () const noexcept
 
 ReferenceBase (Object *that) noexcept
 
const auto & self () const
 
refcount_t wrefcount () const noexcept
 

Public Attributes

TypeList FieldType
 The type of this field.
 

Additional Inherited Members

- Public Types inherited from MemCore::ReferenceBase< FieldID >
typedef Object reference_domain_t
 
typedef WeakPtr< Object, Object > SelfPtr_t
 
- Protected Member Functions inherited from MemCore::ReferenceBase< FieldID >
virtual void extremeUnction ()
 
ReferenceBaseoperator= (const ReferenceBase &R)
 
void suicide ()
 

Detailed Description

Identifier for Fields within a Grid.

Grid objects are home to Fields. Each field is accessible through its identifier, which is basically some arbitrary user-defined text. A few names such as "Positions" have particular meanings, otherwise it can be anything and using the full UTF-8 character encoding is encouraged.

A Field in the mathematical sense is more than just a single dataset and may be spread over many Grids. An example is a time evolution of a Field, or a Field given on different geometric instances, such as a 3D volume and a 2D surface. These multiple datasets can be identified through their same textual naming. The FieldID class provides an even stronger relation by allowing all these references to refer to the same instance of a text. Thus, it is even possible to rename all data sets by changing the name of the unique Field identifier. In this sense, the Field identifier takes the role of a mathematical instance of a field, whereas the respective datasets are the representations of the field in a certain discretization (the Grid object).

The FieldID identifier also allows to specify relationships among fields, such as telling that one field is dependant on another field. These properties may well be extended to cover some more semantics in the future.

Note
The FieldID is supposed to only describe the semantics of a field, but not its type. For getting the actual type (scalar, vector, tensor), the Field has to be inspected in the context of a Grid. For instance, a certain field may be a 2D vector in one Grid, but a 3D vector in another Grid.

Member Data Documentation

◆ FieldType

TypeList Fiber::FieldID::FieldType

The type of this field.

Usually this should be only one, unique type, but in theory a field changing its type is supported here in well.