Namespaces | Typedefs | Functions | Variables
MarmotNumericalDifferentiationForFastor.h File Reference
#include "Fastor/Fastor.h"
#include "Marmot/MarmotConstants.h"
#include "Marmot/MarmotFastorTensorBasics.h"
#include "Marmot/MarmotMath.h"
#include "Marmot/MarmotNumericalDifferentiation.h"
#include "Marmot/MarmotTypedefs.h"
#include <Fastor/config/macros.h>
#include <Fastor/tensor/Tensor.h>
#include <functional>
Include dependency graph for MarmotNumericalDifferentiationForFastor.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

 Marmot
 This file includes functions needed for calculations with stress and strain tensors written in voigt notation.
 
 Marmot::NumericalAlgorithms
 
 Marmot::NumericalAlgorithms::Differentiation
 
 Marmot::NumericalAlgorithms::Differentiation::ScalarToTensor
 
 Marmot::NumericalAlgorithms::Differentiation::TensorToScalar
 
 Marmot::NumericalAlgorithms::Differentiation::TensorToTensor
 
 Marmot::NumericalAlgorithms::Differentiation::Complex
 
 Marmot::NumericalAlgorithms::Differentiation::Complex::ScalarToTensor
 
 Marmot::NumericalAlgorithms::Differentiation::Complex::TensorToScalar
 
 Marmot::NumericalAlgorithms::Differentiation::Complex::TensorToTensor
 

Typedefs

template<size_t... Rest>
using Marmot::NumericalAlgorithms::Differentiation::TensorToScalar::tensor_to_scalar_function_type = std::function< double(const Fastor::Tensor< double, Rest... > &T) >
 
using Marmot::NumericalAlgorithms::Differentiation::Complex::complexDouble = std::complex< double >
 
template<size_t dim>
using Marmot::NumericalAlgorithms::Differentiation::Complex::tensor_to_scalar_function_type = std::function< std::complex< double >(const Fastor::Tensor< std::complex< double >, dim, dim > &T) >
 
template<size_t... Rest>
using Marmot::NumericalAlgorithms::Differentiation::Complex::TensorToScalar::tensor_to_scalar_function_type = std::function< complexDouble(const Fastor::Tensor< complexDouble, Rest... > &T) >
 

Functions

template<size_t... Rest>
Fastor::Tensor< double, Rest... > Marmot::NumericalAlgorithms::Differentiation::ScalarToTensor::forwardDifference (const std::function< Fastor::Tensor< double, Rest... >(const double) > &F, const double x)
 
template<size_t... Rest>
Fastor::Tensor< double, Rest... > Marmot::NumericalAlgorithms::Differentiation::ScalarToTensor::centralDifference (const std::function< Fastor::Tensor< double, Rest... >(const double) > &F, const double x)
 
template<size_t dim>
Fastor::Tensor< double, dim, dim > Marmot::NumericalAlgorithms::Differentiation::TensorToScalar::forwardDifference (const tensor_to_scalar_function_type< dim, dim > &f, const Fastor::Tensor< double, dim, dim > &T)
 
template<size_t dim>
Fastor::Tensor< double, dim, dim > Marmot::NumericalAlgorithms::Differentiation::TensorToScalar::centralDifference (const tensor_to_scalar_function_type< dim, dim > &F, const Fastor::Tensor< double, dim, dim > &T)
 
template<size_t... RestF, size_t... RestT>
Fastor::Tensor< double, RestF..., RestT... > Marmot::NumericalAlgorithms::Differentiation::TensorToTensor::forwardDifference (const std::function< Fastor::Tensor< double, RestF... >(const Fastor::Tensor< double, RestT... > &) > &F, const Fastor::Tensor< double, RestT... > &T)
 
template<size_t... Rest1, size_t... Rest2>
Fastor::Tensor< double, Rest1..., Rest2... > Marmot::NumericalAlgorithms::Differentiation::TensorToTensor::centralDifference (const std::function< Fastor::Tensor< double, Rest1... >(const Fastor::Tensor< double, Rest2... > &) > &F, const Fastor::Tensor< double, Rest2... > &T)
 
template<size_t dim>
Fastor::Tensor< double, dim, dim > Marmot::NumericalAlgorithms::Differentiation::Complex::forwardDifference (const tensor_to_scalar_function_type< dim > &F, const Fastor::Tensor< double, dim, dim > &T)
 
template<size_t... Rest>
std::tuple< Fastor::Tensor< double, Rest... >, Fastor::Tensor< double, Rest... > > Marmot::NumericalAlgorithms::Differentiation::Complex::ScalarToTensor::forwardDifference (const std::function< Fastor::Tensor< complexDouble, Rest... >(const complexDouble) > &F, const double x)
 
template<size_t dim>
Fastor::Tensor< double, dim, dim > Marmot::NumericalAlgorithms::Differentiation::Complex::TensorToScalar::forwardDifference (const tensor_to_scalar_function_type< dim, dim > &f, const Fastor::Tensor< double, dim, dim > &T)
 
template<size_t... RestF, size_t... RestT>
Fastor::Tensor< double, RestF..., RestT... > Marmot::NumericalAlgorithms::Differentiation::Complex::TensorToTensor::forwardDifference (std::function< Fastor::Tensor< complexDouble, RestF... >(const Fastor::Tensor< complexDouble, RestT... > &) > &F, const Fastor::Tensor< double, RestT... > &T)
 

Variables

static const double Marmot::NumericalAlgorithms::Differentiation::Complex::imaginaryPerturbationSize = 1e-20
 
static const complexDouble Marmot::NumericalAlgorithms::Differentiation::Complex::imaginaryPerturbation = imaginaryPerturbationSize * imaginaryUnit