7#ifndef FRICTIONQPOTFEM_CONFIG_H
8#define FRICTIONQPOTFEM_CONFIG_H
12#include <xtensor/xtensor.hpp>
20#define FRICTIONQPOTFEM_ASSERT_IMPL(expr, file, line) \
22 throw std::runtime_error( \
23 std::string(file) + ':' + std::to_string(line) + \
24 ": assertion failed (" #expr ") \n\t"); \
27#define FRICTIONQPOTFEM_WIP_IMPL(expr, file, line) \
29 throw std::out_of_range( \
30 std::string(file) + ':' + std::to_string(line) + \
31 ": assertion failed (" #expr ") \n\t"); \
34#define FRICTIONQPOTFEM_WARNING_IMPL(message, file, line) \
35 std::cout << std::string(file) + ':' + std::to_string(line) + ": " message ") \n\t";
59#ifdef FRICTIONQPOTFEM_ENABLE_ASSERT
60#define FRICTIONQPOTFEM_ASSERT(expr) FRICTIONQPOTFEM_ASSERT_IMPL(expr, __FILE__, __LINE__)
62#define FRICTIONQPOTFEM_ASSERT(expr)
70#define FRICTIONQPOTFEM_REQUIRE(expr) FRICTIONQPOTFEM_ASSERT_IMPL(expr, __FILE__, __LINE__)
77#define FRICTIONQPOTFEM_WIP(expr) FRICTIONQPOTFEM_WIP_IMPL(expr, __FILE__, __LINE__)
88#ifdef FRICTIONQPOTFEM_DISABLE_WARNING
89#define FRICTIONQPOTFEM_WARNING(message)
91#define FRICTIONQPOTFEM_WARNING(message) FRICTIONQPOTFEM_WARNING_IMPL(message, __FILE__, __LINE__)
103#ifdef FRICTIONQPOTFEM_ENABLE_WARNING_PYTHON
104#define FRICTIONQPOTFEM_WARNING_PYTHON(message) \
105 FRICTIONQPOTFEM_WARNING_IMPL(message, __FILE__, __LINE__)
107#define FRICTIONQPOTFEM_WARNING_PYTHON(message)
131#ifndef FRICTIONQPOTFEM_VERSION
132#define FRICTIONQPOTFEM_VERSION "@PROJECT_VERSION@"
144namespace array_type {
146#ifdef FRICTIONQPOTFEM_USE_XTENSOR_PYTHON
151template <
typename T,
size_t N>
152using tensor = xt::pytensor<T, N>;
159template <
typename T,
size_t N>
168inline std::string unquote(
const std::string& arg)
170 std::string ret = arg;
171 ret.erase(std::remove(ret.begin(), ret.end(),
'\"'), ret.end());
xt::xtensor< T, N > tensor
Fixed (static) rank array.
Friction simulations based on a disorder potential energy landscape and the finite element method.
std::string version()
Return version string, e.g.
#define FRICTIONQPOTFEM_VERSION
Current version.