PLaSK library

Loading...
Searching...
No Matches
Namespaces | Macros
rectilinear3d.cpp File Reference
`#include "rectilinear3d.hpp"`
`#include "regular1d.hpp"`
`#include "ordered1d.hpp"`
Include dependency graph for rectilinear3d.cpp:

Go to the source code of this file.

## Namespaces
namespace | plask
| Patterson quadrature for complex function along specified line.

## Macros
#define | RECTILINEAR_MESH_3D_DECLARE_ITERATION_ORDER(first, second, third)
#define | RECTILINEAR_MESH_3D_CASE_ITERATION_ORDER(o1, o2, o3)
#define | RECTILINEAR_MESH_3D_DETERMINE_ITERATION_ORDER(first, second, third)

## Macro Definition Documentation

## ◆ RECTILINEAR_MESH_3D_CASE_ITERATION_ORDER

#define RECTILINEAR_MESH_3D_CASE_ITERATION_ORDER | ( |  | o1,
|  |  | o2,
|  |  | o3
| ) |  |

Value:
case ORDER_##o1##o2##o3: \
index_f = index_##o1##o2##o3; index0_f = index0_##o1##o2##o3; \
index1_f = index1_##o1##o2##o3; index2_f = index2_##o1##o2##o3; \
major_axis = &axis[o1]; medium_axis = &axis[o2]; minor_axis = &axis[o3]; \
break;

## ◆ RECTILINEAR_MESH_3D_DECLARE_ITERATION_ORDER

#define RECTILINEAR_MESH_3D_DECLARE_ITERATION_ORDER | ( |  | first,
|  |  | second,
|  |  | third
| ) |  |

Value:
static std::size_t index_##first##second##third(const RectilinearMesh3D* mesh, std::size_t index0, std::size_t index1, std::size_t index2) { \
return index##third + mesh->axis[third]->size() * (index##second + mesh->axis[second]->size() * index##first); \
} \
static std::size_t index##first##_##first##second##third(const RectilinearMesh3D* mesh, std::size_t mesh_index) { \
return mesh_index / mesh->axis[third]->size() / mesh->axis[second]->size(); \
} \
static std::size_t index##second##_##first##second##third(const RectilinearMesh3D* mesh, std::size_t mesh_index) { \
return (mesh_index / mesh->axis[third]->size()) % mesh->axis[second]->size(); \
} \
static std::size_t index##third##_##first##second##third(const RectilinearMesh3D* mesh, std::size_t mesh_index) { \
return mesh_index % mesh->axis[third]->size(); \
}

Definition at line 21 of file rectilinear3d.cpp.

## ◆ RECTILINEAR_MESH_3D_DETERMINE_ITERATION_ORDER

#define RECTILINEAR_MESH_3D_DETERMINE_ITERATION_ORDER | ( |  | first,
|  |  | second,
|  |  | third
| ) |  |

Value:
if (this->axis[third]->size() <= this->axis[second]->size() && this->axis[second]->size() <= this->axis[first]->size()) { \
setIterationOrder(ORDER_##first##second##third); return; \
}