5#ifndef OILAB_GBPLASTICITY_H
6#define OILAB_GBPLASTICITY_H
10#include "../Math/PeriodicFunction.h"
12#include "../Math/Function.h"
20 Eigen::Vector<double, Eigen::Dynamic>
normal;
24 const Eigen::Vector<double, Eigen::Dynamic> &_normal);
25 double operator()(
const Eigen::Vector<double, Eigen::Dynamic> &x)
const;
30 Eigen::Vector<double, Eigen::Dynamic>
x,
normal;
33 std::complex<double>
operator()(
const Eigen::VectorXd& xi)
const;
39 const Eigen::VectorXd
e1,
e3;
42 explicit HhatInvFunction(
const int&
t,
const int&
i,
const Eigen::MatrixXd& domain);
43 std::complex<double>
operator()(
const Eigen::VectorXd& xi)
const;
50 std::vector<LatticeFunction<std::complex<double>,dim-1>>>;
67 const std::array<Eigen::Index,dim-1>&
n,
70 const std::array<Eigen::Index,dim-1>&
n);
72 const std::array<Eigen::Index,dim-1>&
n,
75 const std::array<Eigen::Index,dim-1>&
n,
81 const Eigen::Matrix<double,dim,dim-1>
gbDomain;
83 std::array<Eigen::Index,dim-1>
n;
86 std::vector<LatticeFunction<std::complex<double>,dim-1>>
bhat;
92 GbContinuum(
const Eigen::Matrix<double, dim,dim-1>& domain,
94 const std::array<Eigen::Index,dim-1>&
n,
96 const bool& verbosity=
false);
double operator()(const Eigen::Vector< double, Eigen::Dynamic > &x) const
Eigen::Vector< double, Eigen::Dynamic > normal
static LatticeFunction< std::complex< double >, dim-1 > get_pihat(const Eigen::Matrix< double, dim, dim-1 > &domain, const std::array< Eigen::Index, dim-1 > &n, const VectorDimD &point)
std::vector< LatticeFunction< std::complex< double >, dim-1 > > bhat
const Eigen::Matrix< double, dim, dim-1 > gbDomain
static thread_local GbLatticeFunctions HhatInvComponents
typename std::vector< LatticeFunction< std::complex< double >, dim-1 > > GbLatticeFunctions
std::vector< PeriodicFunction< double, dim-1 > > b
static thread_local std::map< OrderedTuplet< dim+1 >, PeriodicFunction< double, dim - 1 > > piPeriodicFunctions
typename LatticeCore< dim >::VectorDimD VectorDimD
static FunctionFFTPair calculateb(const Eigen::Matrix< double, dim, dim-1 > &domain, const std::map< OrderedTuplet< dim+1 >, VectorDimD > &xuPairs, const std::array< Eigen::Index, dim-1 > &n, const std::map< OrderedTuplet< dim+1 >, VectorDimD > &points)
typename std::pair< std::vector< PeriodicFunction< double, dim-1 > >, std::vector< LatticeFunction< std::complex< double >, dim-1 > > > FunctionFFTPair
static thread_local std::map< OrderedTuplet< dim+1 >, LatticeFunction< std::complex< double >, dim - 1 > > pihatLatticeFunctions
std::map< OrderedTuplet< dim+1 >, VectorDimD > atoms
static GbLatticeFunctions getHhatInvComponents(const Eigen::Matrix< double, dim, dim-1 > &domain, const std::array< Eigen::Index, dim-1 > &n)
std::vector< PeriodicFunction< double, dim-1 > > get_b() const
std::array< Eigen::Index, dim-1 > n
std::vector< PeriodicFunction< double, dim-1 > > get_alpha() const
VectorDimD displacement(const OrderedTuplet< dim+1 > &x) const
static PeriodicFunction< double, dim-1 > get_pi(const Eigen::Matrix< double, dim, dim-1 > &domain, const std::array< Eigen::Index, dim-1 > &n, const VectorDimD &point)
const std::map< OrderedTuplet< dim+1 >, VectorDimD > xuPairs
std::complex< double > operator()(const Eigen::VectorXd &xi) const
Eigen::Vector< double, Eigen::Dynamic > normal
Eigen::Vector< double, Eigen::Dynamic > x
std::complex< double > operator()(const Eigen::VectorXd &xi) const
Eigen::Matrix< double, dim, 1 > VectorDimD