PLaSK library
Loading...
Searching...
No Matches
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; \
}