12#ifndef GOOSEFEM_CONFIG_H
13#define GOOSEFEM_CONFIG_H
18#define _USE_MATH_DEFINES
36#include <xtensor/xadapt.hpp>
37#include <xtensor/xarray.hpp>
38#include <xtensor/xfixed.hpp>
39#include <xtensor/xinfo.hpp>
40#include <xtensor/xio.hpp>
41#include <xtensor/xlayout.hpp>
42#include <xtensor/xmath.hpp>
43#include <xtensor/xnoalias.hpp>
44#include <xtensor/xshape.hpp>
45#include <xtensor/xsort.hpp>
46#include <xtensor/xstrided_view.hpp>
47#include <xtensor/xtensor.hpp>
48#include <xtensor/xutils.hpp>
49#include <xtensor/xview.hpp>
54using namespace xt::placeholders;
59#define UNUSED(p) ((void)(p))
61#define GOOSEFEM_WARNING_IMPL(message, file, line, function) \
62 std::cout << std::string(file) + ":" + std::to_string(line) + " (" + std::string(function) + \
63 ")" + ": " message ") \n\t";
65#define GOOSEFEM_ASSERT_IMPL(expr, file, line, function) \
67 throw std::runtime_error( \
68 std::string(file) + ":" + std::to_string(line) + " (" + std::string(function) + ")" + \
69 ": assertion failed (" #expr ") \n\t" \
94#ifdef GOOSEFEM_ENABLE_ASSERT
95#define GOOSEFEM_ASSERT(expr) GOOSEFEM_ASSERT_IMPL(expr, __FILE__, __LINE__, __FUNCTION__)
97#define GOOSEFEM_ASSERT(expr)
107#define GOOSEFEM_CHECK(expr) GOOSEFEM_ASSERT_IMPL(expr, __FILE__, __LINE__, __FUNCTION__)
117#define GOOSEFEM_WIP_ASSERT(expr) GOOSEFEM_ASSERT_IMPL(expr, __FILE__, __LINE__, __FUNCTION__)
128#ifdef GOOSEFEM_DISABLE_WARNING
129#define GOOSEFEM_WARNING(message)
131#define GOOSEFEM_WARNING(message) GOOSEFEM_WARNING_IMPL(message, __FILE__, __LINE__, __FUNCTION__)
143#ifdef GOOSEFEM_ENABLE_WARNING_PYTHON
144#define GOOSEFEM_WARNING_PYTHON(message) \
145 GOOSEFEM_WARNING_IMPL(message, __FILE__, __LINE__, __FUNCTION__)
147#define GOOSEFEM_WARNING_PYTHON(message)
161namespace array_type {
163#ifdef GOOSEFEM_USE_XTENSOR_PYTHON
168template <
typename T,
size_t N>
169using tensor = xt::pytensor<T, N>;
176template <
typename T,
size_t N>
xt::xtensor< T, N > tensor
Fixed (static) rank array.
Toolbox to perform finite element computations.