PLaSK library

Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Public Attributes | Protected Member Functions | List of all members
plask::RectilinearMesh3D Class Referenceabstract

Rectilinear mesh in 3D space. More...

`#include <plask/mesh/rectilinear3d.hpp>`

Inheritance diagram for plask::RectilinearMesh3D:
[legend]
Collaboration diagram for plask::RectilinearMesh3D:
[legend]

## Classes
class | Element
| Represent FEM-like element in Rectilinear. More...
struct | ElementMesh
| Element mesh class. More...
struct | Elements
| Wrapper to Rectilinear which allow to access to FEM-like elements. More...

## Public Types
enum | IterationOrder { ORDER_012 , ORDER_021 , ORDER_102 , ORDER_120 , ORDER_201 , ORDER_210 }
| Iteration orders: Every other order is proper permutation of indices. More...
Public Types inherited from plask::RectangularMeshBase3D
typedef plask::Boundary< RectangularMeshBase3D > | Boundary
| Boundary type.
Public Types inherited from plask::MeshD< 3 >
enum |
| Number of dimensions. More...
typedef Primitive< DIM >::DVec | LocalCoords
| Type of vector representing coordinates in local space.
typedef IndexedIterator< const MeshD< dimension >, LocalCoords > | const_iterator
| Random access iterator type which allow iterate over all points in this mesh, in order appointed by operator[].
typedef const_iterator | iterator
typedef const_iterator | Iterator

## Public Member Functions
Elements | elements () const
| Accessor to FEM-like elements.
Elements | getElements () const
Element | element (std::size_t i0, std::size_t i1, std::size_t i2) const
Element | getElement (std::size_t i0, std::size_t i1, std::size_t i2) const
Element | element (std::size_t i) const
| Get an element with a given index `i`.
Element | getElement (std::size_t i) const
| Get an element with a given index `i`.
Box3D | getElementBox (std::size_t index0, std::size_t index1, std::size_t index2) const
| Get element as box.
void | setIterationOrder (IterationOrder order)
| Choose iteration order.
IterationOrder | getIterationOrder () const
| Get iteration order.
const char * | getIterationOrderAsArray () const
| Get iteration order as an array, e.g.
const char * | getAxisToIterationOrder () const
| Similar to getIterationOrderAsArray but the resulted array has exchanged indexes with values.
bool | isChangeSlower (std::size_t axis_index1, std::size_t axis_index2) const
| Check if axis with index `axis_index1` changes slower than one with index `axis_index2` when the mesh is changed by 1.
void | setOptimalIterationOrder ()
| Set iteration order to the shortest axis changes fastest.
| RectilinearMesh3D (IterationOrder iterationOrder=ORDER_012)
| Construct mesh which has all axes of type OrderedAxis and all are empty.
| RectilinearMesh3D (shared_ptr< MeshAxis > mesh0, shared_ptr< MeshAxis > mesh1, shared_ptr< MeshAxis > mesh2, IterationOrder iterationOrder=ORDER_012)
| Construct mesh with is based on given 1D meshes.
void | reset (shared_ptr< MeshAxis > mesh0, shared_ptr< MeshAxis > mesh1, shared_ptr< MeshAxis > mesh2, IterationOrder iterationOrder=ORDER_012)
| Change axes and iteration order of this mesh.
| RectilinearMesh3D (const RectilinearMesh3D &src, bool clone_axes=false)
| Copy constructor.
void | reset (const RectilinearMesh3D &src, bool clone_axes=false)
| Change axes and iteration order of this mesh to the ones from `src`.
RectilinearMesh3D & | operator= (const RectilinearMesh3D &src)
RectilinearMesh3D & | operator= (RectilinearMesh3D &&src)
| ~RectilinearMesh3D ()
void | setAxis (std::size_t axis_nr, shared_ptr< MeshAxis > new_val, bool fireResized=true)
| Change axis.
const shared_ptr< MeshAxis > | getAxis0 () const
void | setAxis0 (shared_ptr< MeshAxis > a0)
const shared_ptr< MeshAxis > | getAxis1 () const
void | setAxis1 (shared_ptr< MeshAxis > a1)
const shared_ptr< MeshAxis > | getAxis2 () const
void | setAxis2 (shared_ptr< MeshAxis > a2)
const shared_ptr< MeshAxis > & | getAxis (size_t n) const
| Get numbered axis.
const shared_ptr< MeshAxis > | majorAxis () const
std::size_t | majorAxisIndex () const
const shared_ptr< MeshAxis > | mediumAxis () const
std::size_t | mediumAxisIndex () const
const shared_ptr< MeshAxis > | minorAxis () const
std::size_t | minorAxisIndex () const
bool | operator== (const RectilinearMesh3D &to_compare) const
| Compare meshes.
bool | operator!= (const RectilinearMesh3D &to_compare) const
std::size_t | size () const override
| Get number of points in the mesh.
bool | empty () const override
virtual Vec< 3, double > | at (std::size_t index0, std::size_t index1, std::size_t index2) const =0
| Get point with given mesh indices.
Vec< 3, double > | at (std::size_t index) const override
| Get point with given mesh index.
Vec< 3, double > | operator[] (std::size_t index) const
| Get point with given mesh index.
Vec< 3, double > | operator() (std::size_t index0, std::size_t index1, std::size_t index2) const
| Get point with given x and y indexes.
double | getElementMidpoint0 (std::size_t index0) const
| Get first coordinate of point in center of Elements.
double | getElementMidpoint1 (std::size_t index1) const
| Get second coordinate of point in center of Elements.
double | getElementMidpoint2 (std::size_t index2) const
| Get second coordinate of point in center of Elements.
virtual Vec< 3, double > | getElementMidpoint (std::size_t index0, std::size_t index1, std::size_t index2) const =0
| Get point in center of Elements.
std::size_t | index (std::size_t c0_index, std::size_t c1_index, std::size_t c2_index) const
| Calculate this mesh index using indexes of c0, c1 and c2.
std::size_t | index (const Vec< 3, std::size_t > &indexes) const
| Calculate this mesh index using indexes of axis[0], axis[1] and axis[2].
std::size_t | index0 (std::size_t mesh_index) const
| Calculate index of c0 using this mesh index.
std::size_t | index1 (std::size_t mesh_index) const
| Calculate index of c1 using this mesh index.
std::size_t | index2 (std::size_t mesh_index) const
| Calculate index of c2 using this mesh index.
template<std::size_t axis_nr>
std::size_t | index_axis (std::size_t mesh_index) const
| Calculate index of c<axis_nr> using this mesh index.
Vec< 3, std::size_t > | indexes (std::size_t mesh_index) const
| Calculate indexes of axes.
std::size_t | majorIndex (std::size_t mesh_index) const
| Calculate index of major axis using given mesh index.
std::size_t | middleIndex (std::size_t mesh_index) const
| Calculate index of middle axis using given mesh index.
std::size_t | minorIndex (std::size_t mesh_index) const
| Calculate index of minor axis using given mesh index.
std::size_t | getElementsCount0 () const
| Get number of elements (for FEM method) in the first direction.
std::size_t | getElementsCount1 () const
| Get number of elements (for FEM method) in the second direction.
size_t | getElementsCount2 () const
| Get number of elements (for FEM method) in the third direction.
size_t | getElementsCount () const
| Get number of elements (for FEM method).
std::size_t | getElementMeshLowIndex (std::size_t element_index) const
| Convert element index to mesh index of bottom, left, front element corner.
std::size_t | getElementIndexFromLowIndexes (std::size_t axis0_index, std::size_t axis1_index, std::size_t axis2_index) const
| Convert mesh indexes of a bottom-left corner of an element to the index of this element.
bool | isLowIndexOfElement (std::size_t meshIndex) const
| Check if mesh index is at the bottom, left, front corner of an element.
std::size_t | getElementIndexFromLowIndex (std::size_t mesh_index_of_el_bottom_left) const
| Convert mesh index of bottom, left, front element corner to this element index.
std::size_t | getElementIndexFromLowIndex (std::size_t axis0_index, std::size_t axis1_index, std::size_t axis2_index) const
| Convert indexes of mesh axes of lower (along all axes) element corner to index of this element.
Vec< 3, std::size_t > | getElementMeshLowIndexes (std::size_t element_index) const
| Convert element index to mesh indexes of bottom left element corner.
template<typename RandomAccessContainer >
auto | interpolateLinear (const RandomAccessContainer &data, const Vec< 3 > &point, const InterpolationFlags &flags) const -> typename std::remove_reference< decltype(data[0])>::type
| Calculate (using linear interpolation) value of data in point using data in points describe by this mesh.
template<typename RandomAccessContainer >
auto | interpolateNearestNeighbor (const RandomAccessContainer &data, Vec< 3 > point, const InterpolationFlags &flags) const -> typename std::remove_reference< decltype(data[0])>::type
| Calculate (using nearest neighbor interpolation) value of data in point using data in points describe by this mesh.
BoundaryNodeSet | createIndex0BoundaryAtLine (std::size_t line_nr_axis0) const override
| Create a node set which includes one plane in mesh, which has 0 coordinate equals to `line_nr_axis0`.
BoundaryNodeSet | createBackBoundary () const override
| Create a node set which includes a whole back plane (face) of mesh.
BoundaryNodeSet | createFrontBoundary () const override
| Create a node set which includes a whole front plane (face) of mesh.
BoundaryNodeSet | createIndex1BoundaryAtLine (std::size_t line_nr_axis1) const override
| Create a node set which includes one plane in mesh, which has 1 coordinate equals to `line_nr_axis1`.
BoundaryNodeSet | createLeftBoundary () const override
| Create a node set which includes a whole left plane (face) of mesh.
BoundaryNodeSet | createRightBoundary () const override
| Create a node set which includes a whole right plane (face) of mesh.
BoundaryNodeSet | createIndex2BoundaryAtLine (std::size_t line_nr_axis2) const override
| Create a node set which includes one plane in mesh, which has 2 coordinate equals to `line_nr_axis2`.
BoundaryNodeSet | createBottomBoundary () const override
| Create a node set which shows a whole bottom plane (face) of mesh.
BoundaryNodeSet | createTopBoundary () const override
| Create a node set which shows a whole top plane (face) of mesh.
BoundaryNodeSet | createIndex0BoundaryAtLine (std::size_t line_nr_axis0, std::size_t index1Begin, std::size_t index1End, std::size_t index2Begin, std::size_t index2End) const override
| Create a node set which includes a rectangle in plane of mesh, which has 0 coordinate equals to `line_nr_axis0`.
BoundaryNodeSet | createBackOfBoundary (const Box3D &box) const override
| Create a node set which has fixed index at axis 0 direction and lies on back of the `box` (at nearest plane inside the box).
BoundaryNodeSet | createFrontOfBoundary (const Box3D &box) const override
| Create a node set which has fixed index at axis 0 direction and lies on front of the `box` (at nearest plane inside the box).
BoundaryNodeSet | createIndex1BoundaryAtLine (std::size_t line_nr_axis1, std::size_t index0Begin, std::size_t index0End, std::size_t index2Begin, std::size_t index2End) const override
| Create a node set which includes a rectangle in plane of mesh, which has 0 coordinate equals to `line_nr_axis1`.
BoundaryNodeSet | createLeftOfBoundary (const Box3D &box) const override
| Create a node set which has fixed index at axis 1 direction and lies on left face of the `box` (at nearest plane inside the box).
BoundaryNodeSet | createRightOfBoundary (const Box3D &box) const override
| Create a node set which has fixed index at axis 1 direction and lies on right face of the `box` (at nearest plane inside the box).
BoundaryNodeSet | createIndex2BoundaryAtLine (std::size_t line_nr_axis2, std::size_t index0Begin, std::size_t index0End, std::size_t index1Begin, std::size_t index1End) const override
| Create a node set which includes a rectangle in plane of mesh, which has 2 coordinate equals to `line_nr_axis2`.
BoundaryNodeSet | createBottomOfBoundary (const Box3D &box) const override
| Create a node set which has fixed index at axis 2 direction and lies on bottom face of the `box` (at nearest plane inside the box).
BoundaryNodeSet | createTopOfBoundary (const Box3D &box) const override
| Create a node set which has fixed index at axis 2 direction and lies on top face of the `box` (at nearest plane inside the box).
Public Member Functions inherited from plask::MeshD< 3 >
LocalCoords | operator[] (std::size_t index) const
| Get point with given mesh index.
const_iterator | begin () const
const_iterator | end () const
| MeshD (const MeshD &PLASK_UNUSED(to_copy))
| Initialize this to be the same as `to_copy` but don't copy any changes observer.
| MeshD ()
MeshD & | operator= (const MeshD &PLASK_UNUSED(to_copy))
| Set this to be the same as `to_copy` but doesn't changed changes observer.
bool | operator== (const MeshD &to_compare) const
| Check if this mesh and `to_compare` represent the same sequence of points (have exactly the same points in the same order).
bool | operator!= (const MeshD &to_compare) const
| Check if this mesh and `to_compare` represent different sequences of points.
void | print (std::ostream &out) const override
| Print this to stream `out`.
Public Member Functions inherited from plask::Mesh
template<typename ClassT , typename methodT >
boost::signals2::connection | changedConnectMethod (ClassT *obj, methodT method, boost::signals2::connect_position at=boost::signals2::at_back)
| Connect a method to changed signal.
template<typename ClassT , typename methodT >
void | changedDisconnectMethod (ClassT *obj, methodT method)
template<typename EventT = Event, typename ... Args>
void | fireChanged (Args &&... event_constructor_params_without_source)
| Call changed with this as event source.
void | fireResized ()
| This method is called when the mesh is resized.
virtual void | writeXML (XMLElement &object) const
| Write mesh to XML.
virtual | ~Mesh ()
Public Member Functions inherited from plask::Printable
virtual | ~Printable ()
std::string | str () const
| Get string representation of this using print method.
Public Member Functions inherited from plask::MeshBase
virtual | ~MeshBase ()

## Public Attributes
const shared_ptr< MeshAxis > | axis [3]
| First, second and third coordinates of points in this mesh.
Public Attributes inherited from plask::Mesh
boost::signals2::signal< void(Event &)> | changed
| Changed signal, fired when mesh was changed.

## Protected Member Functions
bool | hasSameNodes (const MeshD< 3 > &to_compare) const override
Protected Member Functions inherited from plask::MeshD< 3 >
virtual bool | hasSameNodes (const MeshD< dimension > &to_compare) const
| Check if this mesh and `to_compare` represent the same sequence of points (have exactly the same points in the same order).
Protected Member Functions inherited from plask::Mesh
virtual void | onChange (const Event &evt)
| This method is called when the mesh is changed, just before changed signal.

## Additional Inherited Members
Static Public Member Functions inherited from plask::RectangularMeshBase3D
template<typename Predicate >
static Boundary | getBoundary (Predicate predicate)
static Boundary | getIndex0BoundaryAtLine (std::size_t line_nr_axis0)
| Get boundary which shows one plane in mesh, which has 0 coordinate equals to `line_nr_axis0`.
static Boundary | getIndex0BoundaryAtLine (std::size_t line_nr_axis0, std::size_t index1Begin, std::size_t index1End, std::size_t index2Begin, std::size_t index2End)
| Get boundary which shows a rectangle in plane of mesh, which has 0 coordinate equals to `line_nr_axis0`.
static Boundary | getIndex1BoundaryAtLine (std::size_t line_nr_axis1)
| Get boundary which shows one plane in mesh, which has 1 coordinate equals to `line_nr_axis1`.
static Boundary | getIndex1BoundaryAtLine (std::size_t line_nr_axis1, std::size_t index0Begin, std::size_t index0End, std::size_t index2Begin, std::size_t index2End)
| Get boundary which shows a rectangle in plane of mesh, which has 1 coordinate equals to `line_nr_axis1`.
static Boundary | getIndex2BoundaryAtLine (std::size_t line_nr_axis2)
| Get boundary which shows one plane in mesh, which has 2 coordinate equals to `line_nr_axis2`.
static Boundary | getIndex2BoundaryAtLine (std::size_t line_nr_axis2, std::size_t index0Begin, std::size_t index0End, std::size_t index1Begin, std::size_t index1End)
| Get boundary which shows a rectangle in plane of mesh, which has 2 coordinate equals to `line_nr_axis2`.
static Boundary | getBackBoundary ()
| Get boundary which show a whole back plane (face) of mesh.
static Boundary | getBackOfBoundary (const Box3D &box)
| Get a boundary which has fixed index at axis 0 direction and lies on back of the `box` (at nearest plane inside the box).
static Boundary | getFrontBoundary ()
| Get boundary which show a whole front plane (face) of mesh.
static Boundary | getFrontOfBoundary (const Box3D &box)
| Get a boundary which has fixed index at axis 0 direction and lies on front of the `box` (at nearest plane inside the box).
static Boundary | getLeftBoundary ()
| Get boundary which show a whole left plane (face) of mesh.
static Boundary | getLeftOfBoundary (const Box3D &box)
| Get a boundary which has fixed index at axis 1 direction and lies on left face of the `box` (at nearest plane inside the box).
static Boundary | getRightBoundary ()
| Get boundary which show a whole right plane (face) of mesh.
static Boundary | getRightOfBoundary (const Box3D &box)
| Get a boundary which has fixed index at axis 1 direction and lies on right face of the `box` (at nearest plane inside the box).
static Boundary | getTopBoundary ()
| Get boundary which show a whole top plane (face) of mesh.
static Boundary | getTopOfBoundary (const Box3D &box)
| Get a boundary which has fixed index at axis 2 direction and lies on top face of the `box` (at nearest plane inside the box).
static Boundary | getBottomBoundary ()
| Get boundary which show a whole bottom plane (face) of mesh.
static Boundary | getBottomOfBoundary (const Box3D &box)
| Get a boundary which has fixed index at axis 2 direction and lies on top bottom of the `box` (at nearest plane inside the box).
static Boundary | getLeftOfBoundary (shared_ptr< const GeometryObject > object, const PathHints &path)
| Get boundary which lies on left faces of bounding-boxes of `objects` (in `geometry` coordinates).
static Boundary | getLeftOfBoundary (shared_ptr< const GeometryObject > object, const PathHints *path)
| Get boundary which lies on left faces of bounding-boxes of `objects` (in `geometry` coordinates).
static Boundary | getLeftOfBoundary (shared_ptr< const GeometryObject > object)
| Get boundary which lies on left faces of bounding-boxes of `objects` (in `geometry` coordinates).
static Boundary | getRightOfBoundary (shared_ptr< const GeometryObject > object, const PathHints &path)
| Get boundary which lies on right faces of bounding-boxes of `objects` (in `geometry` coordinates).
static Boundary | getRightOfBoundary (shared_ptr< const GeometryObject > object, const PathHints *path)
| Get boundary which lies on right faces of bounding-boxes of `objects` (in `geometry` coordinates).
static Boundary | getRightOfBoundary (shared_ptr< const GeometryObject > object)
| Get boundary which lies on right faces of bounding-boxes of `objects` (in `geometry` coordinates).
static Boundary | getBottomOfBoundary (shared_ptr< const GeometryObject > object, const PathHints &path)
| Get boundary which lies on bottom faces of bounding-boxes of `objects` (in `geometry` coordinates).
static Boundary | getBottomOfBoundary (shared_ptr< const GeometryObject > object, const PathHints *path)
| Get boundary which lies on bottom faces of bounding-boxes of `objects` (in `geometry` coordinates).
static Boundary | getBottomOfBoundary (shared_ptr< const GeometryObject > object)
| Get boundary which lies on bottom faces of bounding-boxes of `objects` (in `geometry` coordinates).
static Boundary | getTopOfBoundary (shared_ptr< const GeometryObject > object, const PathHints &path)
| Get boundary which lies on top faces of bounding-boxes of `objects` (in `geometry` coordinates).
static Boundary | getTopOfBoundary (shared_ptr< const GeometryObject > object)
| Get boundary which lies on top faces of bounding-boxes of `objects` (in `geometry` coordinates).
static Boundary | getTopOfBoundary (shared_ptr< const GeometryObject > object, const PathHints *path)
| Get boundary which lies on top faces of bounding-boxes of `objects` (in `geometry` coordinates).
static Boundary | getBackOfBoundary (shared_ptr< const GeometryObject > object, const PathHints &path)
| Get boundary which lies on back faces of bounding-boxes of `objects` (in `geometry` coordinates).
static Boundary | getBackOfBoundary (shared_ptr< const GeometryObject > object)
| Get boundary which lies on back faces of bounding-boxes of `objects` (in `geometry` coordinates).
static Boundary | getBackOfBoundary (shared_ptr< const GeometryObject > object, const PathHints *path)
| Get boundary which lies on back of bounding-boxes of `objects` (in `geometry` coordinates).
static Boundary | getFrontOfBoundary (shared_ptr< const GeometryObject > object, const PathHints &path)
| Get boundary which lies on front faces of bounding-boxes of `objects` (in `geometry` coordinates).
static Boundary | getFrontOfBoundary (shared_ptr< const GeometryObject > object)
| Get boundary which lies on front faces of bounding-boxes of `objects` (in `geometry` coordinates).
static Boundary | getFrontOfBoundary (shared_ptr< const GeometryObject > object, const PathHints *path)
| Get boundary which lies on front of bounding-boxes of `objects` (in `geometry` coordinates).
static Boundary | getBoundary (const std::string &boundary_desc)
static Boundary | getBoundary (XMLReader &boundary_desc, Manager &manager)

## Detailed Description

Rectilinear mesh in 3D space.

Includes three 1d rectilinear meshes:

- axis0
- axis1
- axis2 Represent all points (c0, c1, c2) such that c0 is in axis0, c1 is in axis1, c2 is in axis2.

Definition at line 39 of file rectilinear3d.hpp.

## Member Enumeration Documentation

## ◆ IterationOrder

enum plask::RectilinearMesh3D::IterationOrder

Iteration orders: Every other order is proper permutation of indices.

They mean ORDER_major,medium,minor, i.e. the last index changes fastest

See also
  setIterationOrder, getIterationOrder, setOptimalIterationOrder

Enumerator
ORDER_012 |
ORDER_021 |
ORDER_102 |
ORDER_120 |
ORDER_201 |
ORDER_210 |

Definition at line 349 of file rectilinear3d.hpp.

## Constructor & Destructor Documentation

## ◆ RectilinearMesh3D() [1/3]

plask::RectilinearMesh3D::RectilinearMesh3D | ( | IterationOrder | iterationOrder = `ORDER_012` | ) |
| explicit

Construct mesh which has all axes of type OrderedAxis and all are empty.

Parameters

  iterationOrder | iteration order

Definition at line 92 of file rectilinear3d.cpp.

## ◆ RectilinearMesh3D() [2/3]

plask::RectilinearMesh3D::RectilinearMesh3D | ( | shared_ptr< MeshAxis > | mesh0,
|  | shared_ptr< MeshAxis > | mesh1,
|  | shared_ptr< MeshAxis > | mesh2,
|  | IterationOrder | iterationOrder = `ORDER_012`
| ) |  |

Construct mesh with is based on given 1D meshes.

Parameters

  mesh0 | mesh for the first coordinate
  mesh1 | mesh for the second coordinate
  mesh2 | mesh for the third coordinate
  iterationOrder | iteration order

Definition at line 100 of file rectilinear3d.cpp.

## ◆ RectilinearMesh3D() [3/3]

plask::RectilinearMesh3D::RectilinearMesh3D | ( | const RectilinearMesh3D & | src,
|  | bool | clone_axes = `false`
| ) |  |

Copy constructor.

Parameters

  src | mesh to copy
  clone_axes | whether axes of the `src` should be cloned (if true) or shared (if false; default)

Definition at line 116 of file rectilinear3d.cpp.

## ◆ ~RectilinearMesh3D()

plask::RectilinearMesh3D::~RectilinearMesh3D | ( |  | ) |

Definition at line 136 of file rectilinear3d.cpp.

## Member Function Documentation

## ◆ at() [1/2]

Vec< 3, double > plask::RectilinearMesh3D::at | ( | std::size_t | index | ) | const
| inline override virtual

Get point with given mesh index.

Parameters

  index | index of point, from 0 to size()-1

Returns
  point with given `index`

Implements plask::MeshD< 3 >.

Definition at line 550 of file rectilinear3d.hpp.

## ◆ at() [2/2]

virtual Vec< 3, double > plask::RectilinearMesh3D::at | ( | std::size_t | index0,
|  | std::size_t | index1,
|  | std::size_t | index2
| ) |  | const
| pure virtual

Get point with given mesh indices.

Parameters

  index0 | index of point in axis0
  index1 | index of point in axis1
  index2 | index of point in axis2

Returns
  point with given `index`

Implemented in plask::EquilateralMesh3D, plask::RectangularMesh3D, and plask::RectangularMesh3D.

## ◆ createBackBoundary()

BoundaryNodeSet plask::RectilinearMesh3D::createBackBoundary | ( |  | ) | const
| override virtual

Create a node set which includes a whole back plane (face) of mesh.

Returns
  node set which includes a whole back plane (face) of mesh.

Implements plask::RectangularMeshBase3D.

Definition at line 158 of file rectilinear3d.cpp.

## ◆ createBackOfBoundary()

BoundaryNodeSet plask::RectilinearMesh3D::createBackOfBoundary | ( | const Box3D & | box | ) | const
| override virtual

Create a node set which has fixed index at axis 0 direction and lies on back of the `box` (at nearest plane inside the box).

Parameters

  box | box in which boundary should lie

Returns
  node set which includes a back face of the `box`

Implements plask::RectangularMeshBase3D.

Definition at line 205 of file rectilinear3d.cpp.

## ◆ createBottomBoundary()

BoundaryNodeSet plask::RectilinearMesh3D::createBottomBoundary | ( |  | ) | const
| override virtual

Create a node set which shows a whole bottom plane (face) of mesh.

Returns
  node set which shows a whole bottom plane (face) of mesh

Implements plask::RectangularMeshBase3D.

Definition at line 188 of file rectilinear3d.cpp.

## ◆ createBottomOfBoundary()

BoundaryNodeSet plask::RectilinearMesh3D::createBottomOfBoundary | ( | const Box3D & | box | ) | const
| override virtual

Create a node set which has fixed index at axis 2 direction and lies on bottom face of the `box` (at nearest plane inside the box).

Parameters

  box | box in which boundary should lie

Returns
  node set which includes a bottom face of the `box`

Implements plask::RectangularMeshBase3D.

Definition at line 265 of file rectilinear3d.cpp.

## ◆ createFrontBoundary()

BoundaryNodeSet plask::RectilinearMesh3D::createFrontBoundary | ( |  | ) | const
| override virtual

Create a node set which includes a whole front plane (face) of mesh.

Returns
  node set which includes a whole front plane (face) of mesh.

Implements plask::RectangularMeshBase3D.

Definition at line 162 of file rectilinear3d.cpp.

## ◆ createFrontOfBoundary()

BoundaryNodeSet plask::RectilinearMesh3D::createFrontOfBoundary | ( | const Box3D & | box | ) | const
| override virtual

Create a node set which has fixed index at axis 0 direction and lies on front of the `box` (at nearest plane inside the box).

Parameters

  box | box in which boundary should lie

Returns
  node set which includes a front face of the `box`

Implements plask::RectangularMeshBase3D.

Definition at line 215 of file rectilinear3d.cpp.

## ◆ createIndex0BoundaryAtLine() [1/2]

BoundaryNodeSet plask::RectilinearMesh3D::createIndex0BoundaryAtLine | ( | std::size_t | line_nr_axis0 | ) | const
| override virtual

Create a node set which includes one plane in mesh, which has 0 coordinate equals to `line_nr_axis0`.

Parameters

  line_nr_axis0 | index of axis[0] mesh

Returns
  node set which includes the plane in mesh

Implements plask::RectangularMeshBase3D.

Definition at line 151 of file rectilinear3d.cpp.

## ◆ createIndex0BoundaryAtLine() [2/2]

BoundaryNodeSet plask::RectilinearMesh3D::createIndex0BoundaryAtLine | ( | std::size_t | line_nr_axis0,
|  | std::size_t | index1Begin,
|  | std::size_t | index1End,
|  | std::size_t | index2Begin,
|  | std::size_t | index2End
| ) |  | const
| override virtual

Create a node set which includes a rectangle in plane of mesh, which has 0 coordinate equals to `line_nr_axis0`.

Parameters

  line_nr_axis0 | index of axis[0] mesh
  index1Begin,index1End,index2Begin,index2End | indexes which showes rectangle [index1Begin, index1End) x [index2Begin, index2End)

Returns
  node set which includes the plane in mesh

Implements plask::RectangularMeshBase3D.

Definition at line 196 of file rectilinear3d.cpp.

## ◆ createIndex1BoundaryAtLine() [1/2]

BoundaryNodeSet plask::RectilinearMesh3D::createIndex1BoundaryAtLine | ( | std::size_t | line_nr_axis1 | ) | const
| override virtual

Create a node set which includes one plane in mesh, which has 1 coordinate equals to `line_nr_axis1`.

Parameters

  line_nr_axis0 | index of axis[1] mesh

Returns
  node set which includes the plane in mesh

Implements plask::RectangularMeshBase3D.

Definition at line 166 of file rectilinear3d.cpp.

## ◆ createIndex1BoundaryAtLine() [2/2]

BoundaryNodeSet plask::RectilinearMesh3D::createIndex1BoundaryAtLine | ( | std::size_t | line_nr_axis1,
|  | std::size_t | index0Begin,
|  | std::size_t | index0End,
|  | std::size_t | index2Begin,
|  | std::size_t | index2End
| ) |  | const
| override virtual

Create a node set which includes a rectangle in plane of mesh, which has 0 coordinate equals to `line_nr_axis1`.

Parameters

  line_nr_axis1 | index of axis[1] mesh
  index0Begin,index0End,index2Begin,index2End | indexes which showes rectangle [index0Begin, index0End) x [index2Begin, index2End)

Returns
  node set which includes includes the plane in mesh

Implements plask::RectangularMeshBase3D.

Definition at line 225 of file rectilinear3d.cpp.

## ◆ createIndex2BoundaryAtLine() [1/2]

BoundaryNodeSet plask::RectilinearMesh3D::createIndex2BoundaryAtLine | ( | std::size_t | line_nr_axis2 | ) | const
| override virtual

Create a node set which includes one plane in mesh, which has 2 coordinate equals to `line_nr_axis2`.

Parameters

  line_nr_axis2 | index of axis[2] mesh

Returns
  node set which includes the plane in mesh

Implements plask::RectangularMeshBase3D.

Definition at line 181 of file rectilinear3d.cpp.

## ◆ createIndex2BoundaryAtLine() [2/2]

BoundaryNodeSet plask::RectilinearMesh3D::createIndex2BoundaryAtLine | ( | std::size_t | line_nr_axis2,
|  | std::size_t | index0Begin,
|  | std::size_t | index0End,
|  | std::size_t | index1Begin,
|  | std::size_t | index1End
| ) |  | const
| override virtual

Create a node set which includes a rectangle in plane of mesh, which has 2 coordinate equals to `line_nr_axis2`.

Parameters

  line_nr_axis2 | index of axis[2] mesh
  index0Begin,index0End,index1Begin,index1End | indexes which showes rectangle [index0Begin, index0End) x [index1Begin, index1End)

Returns
  node set which includes includes the plane in mesh

Implements plask::RectangularMeshBase3D.

Definition at line 255 of file rectilinear3d.cpp.

## ◆ createLeftBoundary()

BoundaryNodeSet plask::RectilinearMesh3D::createLeftBoundary | ( |  | ) | const
| override virtual

Create a node set which includes a whole left plane (face) of mesh.

Returns
  node set which includes a whole left plane (face) of mesh.

Implements plask::RectangularMeshBase3D.

Definition at line 173 of file rectilinear3d.cpp.

## ◆ createLeftOfBoundary()

BoundaryNodeSet plask::RectilinearMesh3D::createLeftOfBoundary | ( | const Box3D & | box | ) | const
| override virtual

Create a node set which has fixed index at axis 1 direction and lies on left face of the `box` (at nearest plane inside the box).

Parameters

  box | box in which boundary should lie

Returns
  node set which includes a left face of the `box`

Implements plask::RectangularMeshBase3D.

Definition at line 235 of file rectilinear3d.cpp.

## ◆ createRightBoundary()

BoundaryNodeSet plask::RectilinearMesh3D::createRightBoundary | ( |  | ) | const
| override virtual

Create a node set which includes a whole right plane (face) of mesh.

Returns
  node set which includes a whole right plane (face) of mesh.

Implements plask::RectangularMeshBase3D.

Definition at line 177 of file rectilinear3d.cpp.

## ◆ createRightOfBoundary()

BoundaryNodeSet plask::RectilinearMesh3D::createRightOfBoundary | ( | const Box3D & | box | ) | const
| override virtual

Create a node set which has fixed index at axis 1 direction and lies on right face of the `box` (at nearest plane inside the box).

Parameters

  box | box in which boundary should lie

Returns
  node set which includes a right face of the `box`

Implements plask::RectangularMeshBase3D.

Definition at line 245 of file rectilinear3d.cpp.

## ◆ createTopBoundary()

BoundaryNodeSet plask::RectilinearMesh3D::createTopBoundary | ( |  | ) | const
| override virtual

Create a node set which shows a whole top plane (face) of mesh.

Returns
  node set which shows a whole top plane (face) of mesh

Implements plask::RectangularMeshBase3D.

Definition at line 192 of file rectilinear3d.cpp.

## ◆ createTopOfBoundary()

BoundaryNodeSet plask::RectilinearMesh3D::createTopOfBoundary | ( | const Box3D & | box | ) | const
| override virtual

Create a node set which has fixed index at axis 2 direction and lies on top face of the `box` (at nearest plane inside the box).

Parameters

  box | box in which boundary should lie

Returns
  node set which includes a top face of the `box`

Implements plask::RectangularMeshBase3D.

Definition at line 275 of file rectilinear3d.cpp.

## ◆ element() [1/2]

Element plask::RectilinearMesh3D::element | ( | std::size_t | i | ) | const
| inline

Get an element with a given index `i`.

Parameters

  i | index of the element

Returns
  the element

Definition at line 324 of file rectilinear3d.hpp.

## ◆ element() [2/2]

Element plask::RectilinearMesh3D::element | ( | std::size_t | i0,
|  | std::size_t | i1,
|  | std::size_t | i2
| ) |  | const
| inline

Definition at line 316 of file rectilinear3d.hpp.

## ◆ elements()

Elements plask::RectilinearMesh3D::elements | ( |  | ) | const
| inline

Accessor to FEM-like elements.

Definition at line 313 of file rectilinear3d.hpp.

## ◆ empty()

bool plask::RectilinearMesh3D::empty | ( |  | ) | const
| inline override virtual

Returns
  true only if there are no points in mesh

Reimplemented from plask::Mesh.

Definition at line 534 of file rectilinear3d.hpp.

## ◆ getAxis()

const shared_ptr< MeshAxis > & plask::RectilinearMesh3D::getAxis | ( | size_t | n | ) | const
| inline

Get numbered axis.

Parameters

  n | number of axis

Definition at line 468 of file rectilinear3d.hpp.

## ◆ getAxis0()

const shared_ptr< MeshAxis > plask::RectilinearMesh3D::getAxis0 | ( |  | ) | const
| inline

Definition at line 452 of file rectilinear3d.hpp.

## ◆ getAxis1()

const shared_ptr< MeshAxis > plask::RectilinearMesh3D::getAxis1 | ( |  | ) | const
| inline

Definition at line 456 of file rectilinear3d.hpp.

## ◆ getAxis2()

const shared_ptr< MeshAxis > plask::RectilinearMesh3D::getAxis2 | ( |  | ) | const
| inline

Definition at line 460 of file rectilinear3d.hpp.

## ◆ getAxisToIterationOrder()

const char * plask::RectilinearMesh3D::getAxisToIterationOrder | ( |  | ) | const
| inline

Similar to getIterationOrderAsArray but the resulted array has exchanged indexes with values.

Resulted array is indexed by axis number (0, 1, 2) and the bigger value means that the index of the axis changes faster when index of the mesh is changed by 1.

Returns
  the array which maps axis number to position in iteration order

Definition at line 381 of file rectilinear3d.hpp.

## ◆ getElement() [1/2]

Element plask::RectilinearMesh3D::getElement | ( | std::size_t | i | ) | const
| inline

Get an element with a given index `i`.

Parameters

  i | index of the element

Returns
  the element

Definition at line 331 of file rectilinear3d.hpp.

## ◆ getElement() [2/2]

Element plask::RectilinearMesh3D::getElement | ( | std::size_t | i0,
|  | std::size_t | i1,
|  | std::size_t | i2
| ) |  | const
| inline

Definition at line 317 of file rectilinear3d.hpp.

## ◆ getElementBox()

Box3D plask::RectilinearMesh3D::getElementBox | ( | std::size_t | index0,
|  | std::size_t | index1,
|  | std::size_t | index2
| ) |  | const
| inline

Get element as box.

Parameters

  index0,index1,index2 | index of element

Returns
  box of elements with given indexes

Definition at line 338 of file rectilinear3d.hpp.

## ◆ getElementIndexFromLowIndex() [1/2]

std::size_t plask::RectilinearMesh3D::getElementIndexFromLowIndex | ( | std::size_t | axis0_index,
|  | std::size_t | axis1_index,
|  | std::size_t | axis2_index
| ) |  | const
| inline

Convert indexes of mesh axes of lower (along all axes) element corner to index of this element.

Parameters

  axis0_index,axis1_index,axis2_index | indexes of corner

Returns
  index of element, from 0 to getElementsCount()-1

Definition at line 780 of file rectilinear3d.hpp.

## ◆ getElementIndexFromLowIndex() [2/2]

std::size_t plask::RectilinearMesh3D::getElementIndexFromLowIndex | ( | std::size_t | mesh_index_of_el_bottom_left | ) | const
| inline

Convert mesh index of bottom, left, front element corner to this element index.

Parameters

  mesh_index_of_el_bottom_left | mesh index

Returns
  index of the element, from 0 to getElementsCount()-1

Definition at line 769 of file rectilinear3d.hpp.

## ◆ getElementIndexFromLowIndexes()

std::size_t plask::RectilinearMesh3D::getElementIndexFromLowIndexes | ( | std::size_t | axis0_index,
|  | std::size_t | axis1_index,
|  | std::size_t | axis2_index
| ) |  | const
| inline

Convert mesh indexes of a bottom-left corner of an element to the index of this element.

Parameters

  axis0_index,axis1_index,axis2_index | indexs of the lower corner along the axis[0, 1 and 2]

Returns
  index of the element, from 0 to getElementsCount()-1

Definition at line 751 of file rectilinear3d.hpp.

## ◆ getElementMeshLowIndex()

std::size_t plask::RectilinearMesh3D::getElementMeshLowIndex | ( | std::size_t | element_index | ) | const
| inline

Convert element index to mesh index of bottom, left, front element corner.

Parameters

  element_index | index of element, from 0 to getElementsCount()-1

Returns
  mesh index

Definition at line 739 of file rectilinear3d.hpp.

## ◆ getElementMeshLowIndexes()

Vec< 3, std::size_t > plask::RectilinearMesh3D::getElementMeshLowIndexes | ( | std::size_t | element_index | ) | const
| inline

Convert element index to mesh indexes of bottom left element corner.

Parameters

  element_index | index of element, from 0 to getElementsCount()-1

Returns
  axis 0, axis 1 and axis 2 indexes of mesh, you can easy calculate rest indexes of element corner adding 1 to returned coordinates

Definition at line 790 of file rectilinear3d.hpp.

## ◆ getElementMidpoint()

virtual Vec< 3, double > plask::RectilinearMesh3D::getElementMidpoint | ( | std::size_t | index0,
|  | std::size_t | index1,
|  | std::size_t | index2
| ) |  | const
| pure virtual

Get point in center of Elements.

Parameters

  index0,index1,index2 | index of Elements

Returns
  point in center of element with given index

Implemented in plask::EquilateralMesh3D, and plask::RectangularMesh3D.

## ◆ getElementMidpoint0()

double plask::RectilinearMesh3D::getElementMidpoint0 | ( | std::size_t | index0 | ) | const
| inline

Get first coordinate of point in center of Elements.

Parameters

  index0 | index of Elements (axis0 index)

Returns
  first coordinate of point point in center of Elements with given index

Definition at line 580 of file rectilinear3d.hpp.

## ◆ getElementMidpoint1()

double plask::RectilinearMesh3D::getElementMidpoint1 | ( | std::size_t | index1 | ) | const
| inline

Get second coordinate of point in center of Elements.

Parameters

  index1 | index of Elements (axis1 index)

Returns
  second coordinate of point point in center of Elements with given index

Definition at line 587 of file rectilinear3d.hpp.

## ◆ getElementMidpoint2()

double plask::RectilinearMesh3D::getElementMidpoint2 | ( | std::size_t | index2 | ) | const
| inline

Get second coordinate of point in center of Elements.

Parameters

  index2 | index of Elements (axis2 index)

Returns
  second coordinate of point point in center of Elements with given index

Definition at line 594 of file rectilinear3d.hpp.

## ◆ getElements()

Elements plask::RectilinearMesh3D::getElements | ( |  | ) | const
| inline

Definition at line 314 of file rectilinear3d.hpp.

## ◆ getElementsCount()

size_t plask::RectilinearMesh3D::getElementsCount | ( |  | ) | const
| inline

Get number of elements (for FEM method).

Returns
  number of elements in this mesh

Definition at line 730 of file rectilinear3d.hpp.

## ◆ getElementsCount0()

std::size_t plask::RectilinearMesh3D::getElementsCount0 | ( |  | ) | const
| inline

Get number of elements (for FEM method) in the first direction.

Returns
  number of elements in this mesh in the first direction (axis0 direction).

Definition at line 703 of file rectilinear3d.hpp.

## ◆ getElementsCount1()

std::size_t plask::RectilinearMesh3D::getElementsCount1 | ( |  | ) | const
| inline

Get number of elements (for FEM method) in the second direction.

Returns
  number of elements in this mesh in the second direction (axis1 direction).

Definition at line 712 of file rectilinear3d.hpp.

## ◆ getElementsCount2()

size_t plask::RectilinearMesh3D::getElementsCount2 | ( |  | ) | const
| inline

Get number of elements (for FEM method) in the third direction.

Returns
  number of elements in this mesh in the third direction (axis2 direction).

Definition at line 721 of file rectilinear3d.hpp.

## ◆ getIterationOrder()

RectilinearMesh3D::IterationOrder plask::RectilinearMesh3D::getIterationOrder | ( |  | ) | const

Get iteration order.

Returns
  iteration order used by this mesh

See also
  IterationOrder

Definition at line 65 of file rectilinear3d.cpp.

## ◆ getIterationOrderAsArray()

const char * plask::RectilinearMesh3D::getIterationOrderAsArray | ( |  | ) | const
| inline

Get iteration order as an array, e.g.

[1, 0, 2] is returned for ORDER_102.

Returns
  the array of length 3, pointer to static memory

Definition at line 369 of file rectilinear3d.hpp.

## ◆ hasSameNodes()

bool plask::RectilinearMesh3D::hasSameNodes | ( | const MeshD< 3 > & | to_compare | ) | const
| inline override protected

Definition at line 863 of file rectilinear3d.hpp.

## ◆ index() [1/2]

std::size_t plask::RectilinearMesh3D::index | ( | const Vec< 3, std::size_t > & | indexes | ) | const
| inline

Calculate this mesh index using indexes of axis[0], axis[1] and axis[2].

Parameters

  indexes | index of axis[0], axis[1] and axis[2]

Returns
  this mesh index, from 0 to size()-1

Definition at line 619 of file rectilinear3d.hpp.

## ◆ index() [2/2]

std::size_t plask::RectilinearMesh3D::index | ( | std::size_t | c0_index,
|  | std::size_t | c1_index,
|  | std::size_t | c2_index
| ) |  | const
| inline

Calculate this mesh index using indexes of c0, c1 and c2.

Parameters

  c0_index | index of c0, from 0 to c0.size()-1
  c1_index | index of c1, from 0 to c1.size()-1
  c2_index | index of c2, from 0 to c2.size()-1

Returns
  this mesh index, from 0 to size()-1

Definition at line 610 of file rectilinear3d.hpp.

## ◆ index0()

std::size_t plask::RectilinearMesh3D::index0 | ( | std::size_t | mesh_index | ) | const
| inline

Calculate index of c0 using this mesh index.

Parameters

  mesh_index | this mesh index, from 0 to size()-1

Returns
  index of c0, from 0 to c0.size()-1

Definition at line 628 of file rectilinear3d.hpp.

## ◆ index1()

std::size_t plask::RectilinearMesh3D::index1 | ( | std::size_t | mesh_index | ) | const
| inline

Calculate index of c1 using this mesh index.

Parameters

  mesh_index | this mesh index, from 0 to size()-1

Returns
  index of c1, from 0 to c1.size()-1

Definition at line 637 of file rectilinear3d.hpp.

## ◆ index2()

std::size_t plask::RectilinearMesh3D::index2 | ( | std::size_t | mesh_index | ) | const
| inline

Calculate index of c2 using this mesh index.

Parameters

  mesh_index | this mesh index, from 0 to size()-1

Returns
  index of c2, from 0 to c2.size()-1

Definition at line 646 of file rectilinear3d.hpp.

## ◆ index_axis()

template<std::size_t axis_nr>

std::size_t plask::RectilinearMesh3D::index_axis | ( | std::size_t | mesh_index | ) | const
| inline

Calculate index of c<axis_nr> using this mesh index.

Parameters

  mesh_index | this mesh index, from 0 to size()-1

Returns
  index of c<axis_nr>, from 0 to c<axis_nr>.size()-1

Definition at line 656 of file rectilinear3d.hpp.

## ◆ indexes()

Vec< 3, std::size_t > plask::RectilinearMesh3D::indexes | ( | std::size_t | mesh_index | ) | const
| inline

Calculate indexes of axes.

Parameters

  mesh_index | this mesh index, from 0 to size()-1

Returns
  index of axis[0], axis[1], and axis[2]

Definition at line 668 of file rectilinear3d.hpp.

## ◆ interpolateLinear()

template<typename RandomAccessContainer >

auto plask::RectilinearMesh3D::interpolateLinear | ( | const RandomAccessContainer & | data,
|  | const Vec< 3 > & | point,
|  | const InterpolationFlags & | flags
| ) |  | const -> typename std::remove_reference<decltype(data[0])>::type
| inline

Calculate (using linear interpolation) value of data in point using data in points describe by this mesh.

Parameters

  data | values of data in points describe by this mesh
  point | point in which value should be calculate

Returns
  interpolated value in point `point`

Definition at line 802 of file rectilinear3d.hpp.

## ◆ interpolateNearestNeighbor()

template<typename RandomAccessContainer >

auto plask::RectilinearMesh3D::interpolateNearestNeighbor | ( | const RandomAccessContainer & | data,
|  | Vec< 3 > | point,
|  | const InterpolationFlags & | flags
| ) |  | const -> typename std::remove_reference<decltype(data[0])>::type
| inline

Calculate (using nearest neighbor interpolation) value of data in point using data in points describe by this mesh.

Parameters

  data | values of data in points describe by this mesh
  point | point in which value should be calculate

Returns
  interpolated value in point `point`

Definition at line 853 of file rectilinear3d.hpp.

## ◆ isChangeSlower()

bool plask::RectilinearMesh3D::isChangeSlower | ( | std::size_t | axis_index1,
|  | std::size_t | axis_index2
| ) |  | const
| inline

Check if axis with index `axis_index1` changes slower than one with index `axis_index2` when the mesh is changed by 1.

Parameters

  array_index1,array_index2 | indexes of axes, 0, 1, or 2

Returns
  whether axis with index `axis_index1` changes slower than one with index `axis_index2`

Definition at line 391 of file rectilinear3d.hpp.

## ◆ isLowIndexOfElement()

bool plask::RectilinearMesh3D::isLowIndexOfElement | ( | std::size_t | meshIndex | ) | const
| inline

Check if mesh index is at the bottom, left, front corner of an element.

Parameters

  meshIndex | mesh index

Returns
  true only if `meshIndex` is at the bottom, left, front corner of an element

Definition at line 760 of file rectilinear3d.hpp.

## ◆ majorAxis()

const shared_ptr< MeshAxis > plask::RectilinearMesh3D::majorAxis | ( |  | ) | const
| inline

Returns
  major (changing slowest) axis

Definition at line 474 of file rectilinear3d.hpp.

## ◆ majorAxisIndex()

std::size_t plask::RectilinearMesh3D::majorAxisIndex | ( |  | ) | const
| inline

Returns
  index of major axis

Definition at line 479 of file rectilinear3d.hpp.

## ◆ majorIndex()

std::size_t plask::RectilinearMesh3D::majorIndex | ( | std::size_t | mesh_index | ) | const
| inline

Calculate index of major axis using given mesh index.

Parameters

  mesh_index | this mesh index, from 0 to size()-1

Returns
  index of major axis, from 0 to majorAxis.size()-1

Definition at line 677 of file rectilinear3d.hpp.

## ◆ mediumAxis()

const shared_ptr< MeshAxis > plask::RectilinearMesh3D::mediumAxis | ( |  | ) | const
| inline

Returns
  middle (between major and minor) axis

Definition at line 486 of file rectilinear3d.hpp.

## ◆ mediumAxisIndex()

std::size_t plask::RectilinearMesh3D::mediumAxisIndex | ( |  | ) | const
| inline

Returns
  index of middle axis

Definition at line 491 of file rectilinear3d.hpp.

## ◆ middleIndex()

std::size_t plask::RectilinearMesh3D::middleIndex | ( | std::size_t | mesh_index | ) | const
| inline

Calculate index of middle axis using given mesh index.

Parameters

  mesh_index | this mesh index, from 0 to size()-1

Returns
  index of middle axis, from 0 to mediumAxis.size()-1

Definition at line 686 of file rectilinear3d.hpp.

## ◆ minorAxis()

const shared_ptr< MeshAxis > plask::RectilinearMesh3D::minorAxis | ( |  | ) | const
| inline

Returns
  minor (changing fastes) axis

Definition at line 498 of file rectilinear3d.hpp.

## ◆ minorAxisIndex()

std::size_t plask::RectilinearMesh3D::minorAxisIndex | ( |  | ) | const
| inline

Returns
  index of minor (changing fastes) axis

Definition at line 503 of file rectilinear3d.hpp.

## ◆ minorIndex()

std::size_t plask::RectilinearMesh3D::minorIndex | ( | std::size_t | mesh_index | ) | const
| inline

Calculate index of minor axis using given mesh index.

Parameters

  mesh_index | this mesh index, from 0 to size()-1

Returns
  index of minor axis, from 0 to minorAxis.size()-1

Definition at line 695 of file rectilinear3d.hpp.

## ◆ operator!=()

bool plask::RectilinearMesh3D::operator!= | ( | const RectilinearMesh3D & | to_compare | ) | const
| inline

Definition at line 523 of file rectilinear3d.hpp.

## ◆ operator()()

Vec< 3, double > plask::RectilinearMesh3D::operator() | ( | std::size_t | index0,
|  | std::size_t | index1,
|  | std::size_t | index2
| ) |  | const
| inline

Get point with given x and y indexes.

Parameters

  index0 | index of point in axis0
  index1 | index of point in axis1
  index2 | index of point in axis2

Returns
  point with given c0, c1 and c2 indexes

Definition at line 571 of file rectilinear3d.hpp.

## ◆ operator=() [1/2]

RectilinearMesh3D & plask::RectilinearMesh3D::operator= | ( | const RectilinearMesh3D & | src | ) |
| inline

Definition at line 438 of file rectilinear3d.hpp.

## ◆ operator=() [2/2]

RectilinearMesh3D & plask::RectilinearMesh3D::operator= | ( | RectilinearMesh3D && | src | ) |
| inline

Definition at line 440 of file rectilinear3d.hpp.

## ◆ operator==()

bool plask::RectilinearMesh3D::operator== | ( | const RectilinearMesh3D & | to_compare | ) | const
| inline

Compare meshes.

Parameters

  to_compare | mesh to compare

Returns
  `true` only if this mesh and `to_compare` represents the same sequence of points

Definition at line 514 of file rectilinear3d.hpp.

## ◆ operator[]()

Vec< 3, double > plask::RectilinearMesh3D::operator[] | ( | std::size_t | index | ) | const
| inline

Get point with given mesh index.

Points are in order: (c0[0], c1[0], c2[0]), (c0[1], c1[0], c2[0]), ..., (c0[c0.size-1], c1[0], c2[0]), (c0[0], c1[1], c2[0]), ..., (c0[c0.size()-1], c1[c1.size()-1], c2[c2.size()-1])

Parameters

  index | index of point, from 0 to size()-1

Returns
  point with given `index`

Definition at line 560 of file rectilinear3d.hpp.

## ◆ reset() [1/2]

void plask::RectilinearMesh3D::reset | ( | const RectilinearMesh3D & | src,
|  | bool | clone_axes = `false`
| ) |  |

Change axes and iteration order of this mesh to the ones from `src`.

Parameters

  src | mesh to copy

Definition at line 128 of file rectilinear3d.cpp.

## ◆ reset() [2/2]

void plask::RectilinearMesh3D::reset | ( | shared_ptr< MeshAxis > | mesh0,
|  | shared_ptr< MeshAxis > | mesh1,
|  | shared_ptr< MeshAxis > | mesh2,
|  | RectilinearMesh3D::IterationOrder | iterationOrder = `ORDER_012`
| ) |  |

Change axes and iteration order of this mesh.

Parameters

  mesh0 | mesh for the first coordinate
  mesh1 | mesh for the second coordinate
  mesh2 | mesh for the third coordinate
  iterationOrder | iteration order

Definition at line 109 of file rectilinear3d.cpp.

## ◆ setAxis()

void plask::RectilinearMesh3D::setAxis | ( | std::size_t | axis_nr,
|  | shared_ptr< MeshAxis > | new_val,
|  | bool | fireResized = `true`
| ) |  |

Change axis.

Parameters

  axis_nr | number of axis to change
  new_val | new value for axis
  fireResized | whether to call fireResized()

Definition at line 142 of file rectilinear3d.cpp.

## ◆ setAxis0()

void plask::RectilinearMesh3D::setAxis0 | ( | shared_ptr< MeshAxis > | a0 | ) |
| inline

Definition at line 454 of file rectilinear3d.hpp.

## ◆ setAxis1()

void plask::RectilinearMesh3D::setAxis1 | ( | shared_ptr< MeshAxis > | a1 | ) |
| inline

Definition at line 458 of file rectilinear3d.hpp.

## ◆ setAxis2()

void plask::RectilinearMesh3D::setAxis2 | ( | shared_ptr< MeshAxis > | a2 | ) |
| inline

Definition at line 462 of file rectilinear3d.hpp.

## ◆ setIterationOrder()

void plask::RectilinearMesh3D::setIterationOrder | ( | IterationOrder | order | ) |

Choose iteration order.

Parameters

  order | iteration order to use

See also
  IterationOrder

Definition at line 43 of file rectilinear3d.cpp.

## ◆ setOptimalIterationOrder()

void plask::RectilinearMesh3D::setOptimalIterationOrder | ( |  | ) |

Set iteration order to the shortest axis changes fastest.

Definition at line 74 of file rectilinear3d.cpp.

## ◆ size()

std::size_t plask::RectilinearMesh3D::size | ( |  | ) | const
| inline override virtual

Get number of points in the mesh.

Returns
  number of points in the mesh

Implements plask::Mesh.

Definition at line 531 of file rectilinear3d.hpp.

## Member Data Documentation

## ◆ axis

const shared_ptr<MeshAxis> plask::RectilinearMesh3D::axis[3]

First, second and third coordinates of points in this mesh.

Definition at line 310 of file rectilinear3d.hpp.

The documentation for this class was generated from the following files:

- plask/mesh/rectilinear3d.hpp
- plask/mesh/rectilinear3d.cpp