Loading...
Searching...
No Matches
grid_types.hpp File Reference
#include "../kokkos/kokkos_wrapper.hpp"
#include "../types.hpp"
#include "dense/mat.hpp"

Go to the source code of this file.

Namespaces

namespace  terra
 
namespace  terra::grid
 

Typedefs

using terra::grid::Layout = Kokkos::LayoutRight
 
template<typename ScalarType >
using terra::grid::Grid0DDataScalar = Kokkos::View< ScalarType, Layout >
 
template<typename ScalarType >
using terra::grid::Grid1DDataScalar = Kokkos::View< ScalarType *, Layout >
 
template<typename ScalarType >
using terra::grid::Grid2DDataScalar = Kokkos::View< ScalarType **, Layout >
 
template<typename ScalarType >
using terra::grid::Grid3DDataScalar = Kokkos::View< ScalarType ***, Layout >
 
template<typename ScalarType >
using terra::grid::Grid4DDataScalar = Kokkos::View< ScalarType ****, Layout >
 
template<typename ScalarType >
using terra::grid::Grid5DDataScalar = Kokkos::View< ScalarType *****, Layout >
 
template<typename ScalarType , int VecDim>
using terra::grid::Grid0DDataVec = Kokkos::View< ScalarType[VecDim], Layout >
 
template<typename ScalarType , int VecDim>
using terra::grid::Grid1DDataVec = Kokkos::View< ScalarType *[VecDim], Layout >
 
template<typename ScalarType , int VecDim>
using terra::grid::Grid2DDataVec = Kokkos::View< ScalarType **[VecDim], Layout >
 
template<typename ScalarType , int VecDim>
using terra::grid::Grid3DDataVec = Kokkos::View< ScalarType ***[VecDim], Layout >
 
template<typename ScalarType , int VecDim>
using terra::grid::Grid4DDataVec = Kokkos::View< ScalarType ****[VecDim], Layout >
 
template<typename ScalarType , int Rows, int Cols, int NumMatrices>
using terra::grid::Grid4DDataMatrices = Kokkos::View< dense::Mat< ScalarType, Rows, Cols > ****[NumMatrices], Layout >
 

Enumerations

enum class  terra::grid::BoundaryPosition : int { terra::grid::P0 = 0 , terra::grid::P1 = 1 , terra::grid::PV = 2 }
 Enum for encoding the boundary type tuples (in BoundaryVertex, BoundaryEdge, BoundaryFace). More...
 
enum class  terra::grid::BoundaryVertex : int {
  terra::grid::V_000 = boundary_position_encoding( BoundaryPosition::P0, BoundaryPosition::P0, BoundaryPosition::P0 ) , terra::grid::V_100 = boundary_position_encoding( BoundaryPosition::P1, BoundaryPosition::P0, BoundaryPosition::P0 ) , terra::grid::V_010 = boundary_position_encoding( BoundaryPosition::P0, BoundaryPosition::P1, BoundaryPosition::P0 ) , terra::grid::V_110 = boundary_position_encoding( BoundaryPosition::P1, BoundaryPosition::P1, BoundaryPosition::P0 ) ,
  terra::grid::V_001 = boundary_position_encoding( BoundaryPosition::P0, BoundaryPosition::P0, BoundaryPosition::P1 ) , terra::grid::V_101 = boundary_position_encoding( BoundaryPosition::P1, BoundaryPosition::P0, BoundaryPosition::P1 ) , terra::grid::V_011 = boundary_position_encoding( BoundaryPosition::P0, BoundaryPosition::P1, BoundaryPosition::P1 ) , terra::grid::V_111 = boundary_position_encoding( BoundaryPosition::P1, BoundaryPosition::P1, BoundaryPosition::P1 )
}
 Enum for identification of the 8 boundary vertices of a subdomain. More...
 
enum class  terra::grid::BoundaryEdge : int {
  terra::grid::E_X00 = boundary_position_encoding( BoundaryPosition::PV, BoundaryPosition::P0, BoundaryPosition::P0 ) , terra::grid::E_X10 = boundary_position_encoding( BoundaryPosition::PV, BoundaryPosition::P1, BoundaryPosition::P0 ) , terra::grid::E_X01 = boundary_position_encoding( BoundaryPosition::PV, BoundaryPosition::P0, BoundaryPosition::P1 ) , terra::grid::E_X11 = boundary_position_encoding( BoundaryPosition::PV, BoundaryPosition::P1, BoundaryPosition::P1 ) ,
  terra::grid::E_0Y0 = boundary_position_encoding( BoundaryPosition::P0, BoundaryPosition::PV, BoundaryPosition::P0 ) , terra::grid::E_1Y0 = boundary_position_encoding( BoundaryPosition::P1, BoundaryPosition::PV, BoundaryPosition::P0 ) , terra::grid::E_0Y1 = boundary_position_encoding( BoundaryPosition::P0, BoundaryPosition::PV, BoundaryPosition::P1 ) , terra::grid::E_1Y1 = boundary_position_encoding( BoundaryPosition::P1, BoundaryPosition::PV, BoundaryPosition::P1 ) ,
  terra::grid::E_00R = boundary_position_encoding( BoundaryPosition::P0, BoundaryPosition::P0, BoundaryPosition::PV ) , terra::grid::E_10R = boundary_position_encoding( BoundaryPosition::P1, BoundaryPosition::P0, BoundaryPosition::PV ) , terra::grid::E_01R = boundary_position_encoding( BoundaryPosition::P0, BoundaryPosition::P1, BoundaryPosition::PV ) , terra::grid::E_11R = boundary_position_encoding( BoundaryPosition::P1, BoundaryPosition::P1, BoundaryPosition::PV )
}
 Enum for identification of the 12 boundary edges of a subdomain. More...
 
enum class  terra::grid::BoundaryFace : int {
  terra::grid::F_XY0 = boundary_position_encoding( BoundaryPosition::PV, BoundaryPosition::PV, BoundaryPosition::P0 ) , terra::grid::F_XY1 = boundary_position_encoding( BoundaryPosition::PV, BoundaryPosition::PV, BoundaryPosition::P1 ) , terra::grid::F_X0R = boundary_position_encoding( BoundaryPosition::PV, BoundaryPosition::P0, BoundaryPosition::PV ) , terra::grid::F_X1R = boundary_position_encoding( BoundaryPosition::PV, BoundaryPosition::P1, BoundaryPosition::PV ) ,
  terra::grid::F_0YR = boundary_position_encoding( BoundaryPosition::P0, BoundaryPosition::PV, BoundaryPosition::PV ) , terra::grid::F_1YR = boundary_position_encoding( BoundaryPosition::P1, BoundaryPosition::PV, BoundaryPosition::PV )
}
 Enum for identification of the 6 boundary faces of a subdomain. More...
 
enum class  terra::grid::BoundaryDirection : int { terra::grid::FORWARD = 0 , terra::grid::BACKWARD }
 Enum for the iteration direction at a boundary. More...
 

Functions

template<typename GridDataType >
constexpr int terra::grid::grid_data_vec_dim ()
 
constexpr int terra::grid::boundary_position_encoding (const BoundaryPosition x, const BoundaryPosition y, const BoundaryPosition r)
 
template<typename BoundaryType >
constexpr BoundaryPosition terra::grid::boundary_position_from_boundary_type_x (const BoundaryType &boundary_type)
 
template<typename BoundaryType >
constexpr BoundaryPosition terra::grid::boundary_position_from_boundary_type_y (const BoundaryType &boundary_type)
 
template<typename BoundaryType >
constexpr BoundaryPosition terra::grid::boundary_position_from_boundary_type_r (const BoundaryType &boundary_type)
 
constexpr bool terra::grid::is_edge_boundary_radial (const BoundaryEdge id)
 
constexpr bool terra::grid::is_face_boundary_normal_to_radial_direction (const BoundaryFace id)
 
constexpr BoundaryVertex terra::grid::other_side_r (BoundaryVertex boundary_vertex)
 
std::string terra::grid::to_string (BoundaryVertex v)
 
std::string terra::grid::to_string (BoundaryEdge e)
 
std::string terra::grid::to_string (BoundaryFace f)
 
std::ostream & terra::grid::operator<< (std::ostream &os, BoundaryVertex v)
 
std::ostream & terra::grid::operator<< (std::ostream &os, BoundaryEdge e)
 
std::ostream & terra::grid::operator<< (std::ostream &os, BoundaryFace f)
 

Variables

constexpr std::array terra::grid::all_boundary_vertices
 
constexpr std::array terra::grid::all_boundary_edges
 
constexpr std::array terra::grid::all_boundary_faces