#include <CylindricalVectorField.hpp>

Public Member Functions | |
| int | dimension () const override |
| double | exponent () const |
| double | unityRadius () const |
| Vec | vector (Position bfr) const override |
| Public Member Functions inherited from SimulationItem | |
| template<class T> | |
| T * | find (bool setup=true) const |
| template<class T> | |
| T * | interface (int upLevels, int downLevels, bool setup) const |
| virtual string | itemName () const |
| void | setup () |
| string | typeAndName () const |
| Public Member Functions inherited from Item | |
| Item (const Item &)=delete | |
| virtual | ~Item () |
| void | addChild (Item *child) |
| const vector< Item * > & | children () const |
| virtual void | clearItemListProperty (const PropertyDef *property) |
| void | destroyChild (Item *child) |
| virtual bool | getBoolProperty (const PropertyDef *property) const |
| virtual vector< double > | getDoubleListProperty (const PropertyDef *property) const |
| virtual double | getDoubleProperty (const PropertyDef *property) const |
| virtual string | getEnumProperty (const PropertyDef *property) const |
| virtual int | getIntProperty (const PropertyDef *property) const |
| virtual vector< Item * > | getItemListProperty (const PropertyDef *property) const |
| virtual Item * | getItemProperty (const PropertyDef *property) const |
| virtual string | getStringProperty (const PropertyDef *property) const |
| int | getUtilityProperty (string name) const |
| virtual void | insertIntoItemListProperty (const PropertyDef *property, int index, Item *item) |
| Item & | operator= (const Item &)=delete |
| Item * | parent () const |
| virtual void | removeFromItemListProperty (const PropertyDef *property, int index) |
| virtual void | setBoolProperty (const PropertyDef *property, bool value) |
| virtual void | setDoubleListProperty (const PropertyDef *property, vector< double > value) |
| virtual void | setDoubleProperty (const PropertyDef *property, double value) |
| virtual void | setEnumProperty (const PropertyDef *property, string value) |
| virtual void | setIntProperty (const PropertyDef *property, int value) |
| virtual void | setItemProperty (const PropertyDef *property, Item *item) |
| virtual void | setStringProperty (const PropertyDef *property, string value) |
| void | setUtilityProperty (string name, int value) |
| virtual string | type () const |
Protected Member Functions | |
| CylindricalVectorField () | |
| Protected Member Functions inherited from VectorField | |
| VectorField () | |
| Protected Member Functions inherited from SimulationItem | |
| SimulationItem () | |
| virtual bool | offersInterface (const std::type_info &interfaceTypeInfo) const |
| virtual void | setupSelfAfter () |
| virtual void | setupSelfBefore () |
| Protected Member Functions inherited from Item | |
| Item () | |
Private Types | |
| using | BaseType |
| using | ItemType |
Private Attributes | |
| double | _exponent |
| double | _unityRadius |
Friends | |
| class | ItemRegistry |
CylindricalVectorField represents a vector field with vectors rotating around the z-axis in a plane parallel to the xy-plane. The orientation is clockwise when looking along with the positive z-axis, and counterclockwise when looking down from the positive z-axis towards the xy-plane.
The magnitude of the vectors varies with radial distance from the z-axis. The class has two configuration properties: the distance at which the vector magnitude becomes unity and a power law exponent. If the exponent is positive, the magnitude ramps up from zero at the z-axis to unity at the specified distance, and remains unity from there on. If the power law index is negative, the magnitude is unity from the z-axis to the specified distance, and then ramps down from there to zero at infinity.
Given the user-configurable unity radius \(R_1\ge 0\) and power-law exponent \(\alpha\), the magnitude \(v(R)\) of the vectors as a function of radial distance \(R=\sqrt{x^2+y^2}\) is given by
\[ R_1=0 \lor \alpha=0 \qquad v(R) = \begin{cases} 0 & \mathrm{for}\;R=0 \\ 1 & \mathrm{for}\;R>0 \end{cases} \]
\[ R_1>0 \land \alpha>0 \qquad v(R) = \begin{cases} 0 & \mathrm{for}\;R=0 \\ (R/R_1)^\alpha & \mathrm{for}\;0<R<R_1 \\ 1 & \mathrm{for}\;R\ge R_1 \end{cases} \]
\[ R_1>0 \land \alpha<0 \qquad v(R) = \begin{cases} 0 & \mathrm{for}\;R=0 \\ 1 & \mathrm{for}\;0<R<R_1 \\ (R/R_1)^\alpha & \mathrm{for}\;R \ge R_1 \end{cases} \]
The first equation defines the vector field for the special values \(R_1=0\) and/or \(\alpha=0\) to consist solely of unit vectors except at the z-axis, where the direction of the vector is undefined. The default value of \(R_1=0\) causes this behavior. If the unity radius is set to a value \(R_1>0\), the default value of \(\alpha=1\) specifies linear behavior: the vector magnitude scales linearly from zero at the z-axis to unity at \(R=R_1\), and stays at unity for larger radii.
When an item of this type is used, the names provided by the conditional value expression "InMedia:MediaDimension3,Dimension3;SourceDimension3,Dimension3" are inserted into the name sets used for evaluating Boolean expressions.
|
inlineprotected |
Default constructor for concrete Item subclass CylindricalVectorField: "a vector field rotating clockwise around the z-axis".
|
overridevirtual |
This function returns the dimension of the vector field, which is 3 for this class, indicating no symmetries (the vectors point in a different direction at each position).
Implements VectorField.
|
inline |
This function returns the value of the discoverable double property exponent: "the power-law exponent governing the radial dependence of the magnitude".
The default value for this property is given by the conditional value expression "1".
|
inline |
This function returns the value of the discoverable double property unityRadius: "the radius where the magnitude of the vectors is unity".
This property represents a physical quantity of type "length".
The minimum value for this property is "[0".
The default value for this property is given by the conditional value expression "0".
This function returns a vector that is parallel with the xy-plane and orthogonal to the cylindrical radius component of the given position \(\bf{r}\) according to the definitions given in the class header.
Implements VectorField.