Finite Volume Solver  prototype
A framework to build finite volume solvers for the AG Klein at the Freie Universität Berlin.
Namespaces | Typedefs | Functions | Variables
Eigen.hpp File Reference
#include <Eigen/Eigen>
#include "fub/Direction.hpp"
#include "fub/PatchDataView.hpp"
#include "fub/config.hpp"
#include <type_traits>
#include <boost/mp11/function.hpp>

Go to the source code of this file.

Namespaces

 fub
 The fub namespace.
 

Typedefs

template<typename T , int N, int M = kDefaultChunkSize>
using fub::Array = std::conditional_t< N==1||M==1, Eigen::Array< T, N, M >, Eigen::Array< T, N, M, Eigen::RowMajor > >
 
using fub::Array1d = Array< double, 1 >
 
using fub::Array2d = Array< double, 2 >
 
using fub::Array3d = Array< double, 3 >
 
using fub::ArrayXd = Array< double, Eigen::Dynamic >
 
using fub::MaskArray = Array< bool, 1 >
 

Functions

template<std::size_t N>
Eigen::Matrix< double, static_cast< int >N), 1 > fub::AsEigenVector (const std::array< double, N > &x)
 
void fub::LoadN (Array< char, 1 > &array, const char *pointer, int n)
 
void fub::StoreN (char *pointer, const Array< char, 1 > &array, int n)
 
template<int N, typename T , int Rank, typename Layout , typename... Indices>
std::enable_if_t< boost::mp11::mp_all< std::is_integral< Indices >... >::value, Eigen::Array< std::remove_cv_t< T >, N, 1 > > fub::LoadN (int_constant< N >, const PatchDataView< T, Rank, Layout > &pdv, int size, std::ptrdiff_t i0, Indices... indices)
 
template<int Rank>
Eigen::Matrix< double, Rank, 1 > fub::Shift (const Eigen::Matrix< double, Rank, 1 > &v, Direction dir, double shift)
 
template<int Rank>
Eigen::Matrix< double, Rank, 1 > fub::UnitVector (Direction dir) noexcept
 
Eigen::Matrix< double, 2, 2 > fub::MakeRotation (const Eigen::Matrix< double, 2, 1 > &a, const Eigen::Matrix< double, 2, 1 > &b)
 
Eigen::Matrix< double, 3, 3 > fub::MakeRotation (const Eigen::Matrix< double, 3, 1 > &a, const Eigen::Matrix< double, 3, 1 > &b)
 
template<int N, typename T , int Rank, typename Layout , typename... Indices>
Eigen::Array< std::remove_cv_t< T >, N, 1 > fub::LoadN (int_constant< N >, const PatchDataView< T, Rank, Layout > &pdv, int size, nodeduce_t< const std::array< std::ptrdiff_t, std::size_t(Rank)> & > index)
 
template<int N, typename T , int Rank, typename Layout , typename... Indices>
Eigen::Array< std::remove_cv_t< T >, N, 1 > fub::Load (int_constant< N > n, const PatchDataView< T, Rank, Layout > &pdv, Indices... indices)
 
template<typename T , int Rank, typename Layout , typename... Indices>
auto fub::Load (const PatchDataView< T, Rank, Layout > &pdv, Indices... indices)
 
template<typename T , typename A , int N, bool B, typename Layout >
void fub::StoreN (const PatchDataView< T, 1, Layout > &pdv, int n, const Eigen::Block< A, 1, N, B > &chunk, std::ptrdiff_t offset)
 
template<typename T , int Rank, typename Layout , int N, int Options, typename... Indices>
void fub::Store (const PatchDataView< T, Rank, Layout > &view, const Eigen::Array< T, 1, N, Options > &chunk, const nodeduce_t< std::array< std::ptrdiff_t, static_cast< std::size_t >(Rank)>> &index)
 
template<typename T , typename Base , int Rank, typename Layout , int N, bool Options, typename... Indices>
void fub::Store (const PatchDataView< T, Rank, Layout > &view, const Eigen::Block< Base, 1, N, Options > &chunk, const nodeduce_t< std::array< std::ptrdiff_t, static_cast< std::size_t >(Rank)>> &index)
 
template<typename T , int Rank, typename L >
void fub::Store (const PatchDataView< T, Rank, L > &view, nodeduce_t< const T & > value, const nodeduce_t< std::array< std::ptrdiff_t, static_cast< std::size_t >(Rank)>> &index)
 

Variables

constexpr const int fub::kDefaultChunkSize