9#include <kernel/assembly/bilinear_operator.hpp> 
   39        static constexpr TrafoTags trafo_config = TrafoTags::none;
 
   51        template<
typename AsmTraits_>
 
   57          typedef typename AsmTraits_::DataType 
DataType;
 
   95            return dot(phi.grad, psi.grad);
 
  111      template<
int dimension_>
 
  121        static constexpr TrafoTags trafo_config = TrafoTags::none;
 
  133        template<
typename AsmTraits_>
 
  229        template<
typename AsmTraits_>
 
  301        static constexpr TrafoTags trafo_config = TrafoTags::none;
 
  313        template<
typename AsmTraits_>
 
  357            return phi.hess.trace() * psi.hess.trace();
 
  377        static constexpr TrafoTags trafo_config = TrafoTags::none;
 
  389        template<
typename AsmTraits_>
 
  433            return phi.value * psi.value;
 
  447      template<
int dimension_>
 
  457        static constexpr TrafoTags trafo_config = TrafoTags::none;
 
  469        template<
typename AsmTraits_>
 
  538        static constexpr TrafoTags trafo_config = TrafoTags::none;
 
  550        template<
typename AsmTraits_>
 
  601            return phi.value * psi.grad[
deriv];
 
  638        static constexpr TrafoTags trafo_config = TrafoTags::none;
 
  650        template<
typename AsmTraits_>
 
  701            return phi.value * psi.grad[
deriv];
 
  734        static constexpr TrafoTags trafo_config = TrafoTags::none;
 
  738        template<
typename AsmTraits_>
 
  789            return phi.grad[
ic] * psi.grad[
ir];
 
  842        static constexpr TrafoTags trafo_config = TrafoTags::none;
 
  854        template<
typename AsmTraits_>
 
  905            return ((
ir==
ic) ? dot(phi.grad,psi.grad) : 
DataType(0)) + phi.grad[
ir] * psi.grad[
ic];
 
  948      template<
int dimension_>
 
  958        static constexpr TrafoTags trafo_config = TrafoTags::none;
 
  970        template<
typename AsmTraits_>
 
 1055      template<
int dimension_>
 
 1060        static constexpr int BlockHeight = dimension_;
 
 1061        static constexpr int BlockWidth = dimension_;
 
 1067        template<
typename AsmTraits_>
 
 1093            _normal = tau.normal;
 
 1099            r.add_scalar_main_diag(
Tiny::dot(_normal, phi.grad) * psi.value);
 
 1124      template<
int dimension_>
 
 1129        static constexpr int BlockHeight = dimension_;
 
 1130        static constexpr int BlockWidth = dimension_;
 
 1136        template<
typename AsmTraits_>
 
 1162            _normal = tau.normal;
 
 1168            r.add_outer_product(phi.grad, _normal, psi.value);
 
 1183      template<
int dimension_>
 
 1188        static constexpr int BlockHeight = dimension_;
 
 1189        static constexpr int BlockWidth = 1;
 
 1191        static constexpr TrafoTags trafo_config = TrafoTags::none;
 
 1195        template<
typename AsmTraits_>
 
 1219            for(
int i(0); i < dimension_; ++i)
 
 1220              r(i,0) = phi.grad[i] * psi.value;
 
 1234      template<
int dimension_>
 
 1239        static constexpr int BlockHeight = dimension_;
 
 1240        static constexpr int BlockWidth = 1;
 
 1242        static constexpr TrafoTags trafo_config = TrafoTags::none;
 
 1246        template<
typename AsmTraits_>
 
 1270            for(
int i(0); i < dimension_; ++i)
 
 1271              r(i,0) = phi.value * psi.grad[i];
 
 1298      template<
int dim_, 
int nsc_>
 
 1303        static constexpr int BlockHeight = dim_;
 
 1304        static constexpr int BlockWidth = nsc_;
 
 1306        static constexpr TrafoTags trafo_config = TrafoTags::none;
 
 1310        template<
typename AsmTraits_>
 
 1316          typedef typename AsmTraits_::TestBasisData TestBasisData;
 
 1317          typedef typename AsmTraits_::TrialBasisData TrialBasisData;
 
 1323          template<
typename T_>
 
 1328            R(0,0) = u * der(0);
 
 1329            R(0,1) = u * der(1);
 
 1337            R(1,2) = u * der(0);
 
 1338            R(1,3) = u * der(1);
 
 1342          template<
typename T_>
 
 1351            R(0,0) = u * der(0);
 
 1353            R(0,2) = u * der(1);
 
 1358            R(1,1) = u * der(1);
 
 1359            R(1,2) = u * der(0);
 
 1363          template<
typename T_>
 
 1367            R(0,0) = u * der(0);
 
 1368            R(0,1) = u * der(1);
 
 1369            R(0,2) = u * der(2);
 
 1381            R(1,3) = u * der(0);
 
 1382            R(1,4) = u * der(1);
 
 1383            R(1,5) = u * der(2);
 
 1395            R(2,6) = u * der(0);
 
 1396            R(2,7) = u * der(1);
 
 1397            R(2,8) = u * der(2);
 
 1401          template<
typename T_>
 
 1410            R(0,0) = u * der(0);
 
 1413            R(0,3) = u * der(1);
 
 1415            R(0,5) = u * der(2);
 
 1419            R(1,1) = u * der(1);
 
 1421            R(1,3) = u * der(0);
 
 1422            R(1,4) = u * der(2);
 
 1428            R(2,2) = u * der(2);
 
 1430            R(2,4) = u * der(1);
 
 1431            R(2,5) = u * der(0);
 
 1434          ValueType 
eval(
const TrialBasisData& phi, 
const TestBasisData& psi)
 
 1437            eval(R, phi.grad, psi.value);
 
 1464      template<
int dim_, 
int nsc_>
 
 1469        static constexpr int BlockHeight = nsc_;
 
 1470        static constexpr int BlockWidth = dim_;
 
 1472        static constexpr TrafoTags trafo_config = TrafoTags::none;
 
 1476        template<
typename AsmTraits_>
 
 1482          typedef typename AsmTraits_::TestBasisData TestBasisData;
 
 1483          typedef typename AsmTraits_::TrialBasisData TrialBasisData;
 
 1489          template<
typename T_>
 
 1493            K(0,0) = s * der(0);
 
 1497            K(1,0) = s * der(1) / T_(2);
 
 1498            K(1,1) = s * der(0) / T_(2);
 
 1501            K(2,0) = s * der(1) / T_(2);
 
 1502            K(2,1) = s * der(0) / T_(2);
 
 1506            K(3,1) = s * der(1);
 
 1510          template<
typename T_>
 
 1518            K(0,0) = s * der(0);
 
 1523            K(1,1) = s * der(1);
 
 1526            K(2,0) = s * der(1) / T_(2);
 
 1527            K(2,1) = s * der(0) / T_(2);
 
 1531          template<
typename T_>
 
 1535            K(0,0) = s * der(0);
 
 1540            K(1,0) = s * der(1) / T_(2);
 
 1541            K(1,1) = s * der(0) / T_(2);
 
 1545            K(2,0) = s * der(2) / T_(2);
 
 1547            K(2,2) = s * der(0) / T_(2);
 
 1550            K(3,0) = s * der(1) / T_(2);
 
 1551            K(3,1) = s * der(0) / T_(2);
 
 1556            K(4,1) = s * der(1);
 
 1561            K(5,1) = s * der(2) / T_(2);
 
 1562            K(5,2) = s * der(1) / T_(2);
 
 1565            K(6,0) = s * der(2) / T_(2);
 
 1567            K(6,1) = s * der(0) / T_(2);
 
 1571            K(7,1) = s * der(2) / T_(2);
 
 1572            K(7,2) = s * der(1) / T_(2);
 
 1577            K(8,2) = s * der(2);
 
 1581          template<
typename T_>
 
 1590            K(0,0) = s * der(0);
 
 1596            K(1,1) = s * der(1);
 
 1602            K(2,2) = s * der(2);
 
 1605            K(3,0) = s * der(1) / T_(2);
 
 1606            K(3,1) = s * der(0) / T_(2);
 
 1611            K(4,1) = s * der(2) / T_(2);
 
 1612            K(4,2) = s * der(1) / T_(2);
 
 1615            K(5,0) = s * der(2) / T_(2);
 
 1617            K(5,2) = s * der(0) / T_(2);
 
 1620          ValueType 
eval(
const TrialBasisData& phi, 
const TestBasisData& psi)
 
 1623            eval(K, phi.grad, psi.value);
 
Bilinear Operator Evaluator class template.
Base class for Bilinear Operators.
Biharmonic evaluator class template.
AsmTraits_::TrialBasisData TrialBasisData
the assembler's trial-function data type
AsmTraits_::TrafoData TrafoData
the assembler's trafo data type
DataType ValueType
the operator's value type
ValueType eval(const TrialBasisData &phi, const TestBasisData &psi)
Evaluation operator.
Evaluator(const BiharmonicOperator &operat)
Constructor.
AsmTraits_::DataType DataType
the data type to be used
AsmTraits_::TestBasisData TestBasisData
the assembler's test-function data type
Biharmonic "Laplace^2" operator implementation.
AsmTraits_::DataType DataType
the data type to be used
AsmTraits_::TrafoData TrafoData
the assembler's trafo data type
AsmTraits_::TrialBasisData TrialBasisData
the assembler's trial-function data type
DataType ValueType
the operator's value type
const int ic
Column index.
ValueType eval(const TrialBasisData &phi, const TestBasisData &psi)
Evaluation operator.
Evaluator(const DivDivOperator &operat)
Constructor.
AsmTraits_::TestBasisData TestBasisData
the assembler's test-function data type
div(phi) * div(psi) operator implementation
DivDivOperator(int ir_, int ic_)
Constructor.
Du : Dv evaluator class template.
const int ic
Column index.
Evaluator(const DuDvOperator &operat)
Constructor.
AsmTraits_::DataType DataType
the data type to be used
AsmTraits_::TrafoData TrafoData
the assembler's trafo data type
DataType ValueType
the operator's value type
AsmTraits_::TestBasisData TestBasisData
the assembler's test-function data type
ValueType eval(const TrialBasisData &phi, const TestBasisData &psi)
Evaluation operator.
AsmTraits_::TrialBasisData TrialBasisData
the assembler's trial-function data type
Du : Dv evaluator class template.
ValueType eval(const TrialBasisData &phi, const TestBasisData &psi)
Evaluation operator.
AsmTraits_::TrafoData TrafoData
the assembler's trafo data type
Evaluator(const DuDvOperatorBlocked &operat)
Constructor.
Tiny::Matrix< DataType, dimension_, dimension_ > ValueType
the data type for the block system
AsmTraits_::TrialBasisData TrialBasisData
the assembler's trial-function data type
AsmTraits_::TestBasisData TestBasisData
the assembler's test-function data type
AsmTraits_::DataType DataType
the data type to be used
Du:Dv operator implementation.
static constexpr int BlockWidth
Every block is a dimension x dimension matrix.
static constexpr int BlockHeight
Every block is a dimension x dimension matrix.
Du:Dv operator implementation.
DuDvOperator(int ir_, int ic_)
Constructor.
AsmTraits_::DataType DataType
the data type to be used
AsmTraits_::TestBasisData TestBasisData
the assembler's test-function data type
AsmTraits_::TrafoData TrafoData
the assembler's trafo data type
Tiny::Matrix< DataType, dimension_, 1 > ValueType
the data type for the block system
AsmTraits_::TrialBasisData TrialBasisData
the assembler's trial-function data type
Gradient operator applied onto the test function.
AsmTraits_::TestBasisData TestBasisData
the assembler's test-function data type
AsmTraits_::DataType DataType
the data type to be used
AsmTraits_::TrafoData TrafoData
the assembler's trafo data type
Tiny::Matrix< DataType, dimension_, 1 > ValueType
the data type for the block system
AsmTraits_::TrialBasisData TrialBasisData
the assembler's trial-function data type
Gradient operator applied onto the trial function.
Bilinear scalar Identity evaluator class template.
AsmTraits_::TrialBasisData TrialBasisData
the assembler's trial-function data type
AsmTraits_::TrafoData TrafoData
the assembler's trafo data type
Evaluator(const IdentityOperator &operat)
Constructor.
ValueType eval(const TrialBasisData &phi, const TestBasisData &psi)
Evaluation operator.
DataType ValueType
the operator's value type
AsmTraits_::DataType DataType
the data type to be used
AsmTraits_::TestBasisData TestBasisData
the assembler's test-function data type
Vector-valued identity operator evaluator class template.
AsmTraits_::TrialBasisData TrialBasisData
the assembler's trial-function data type
AsmTraits_::DataType DataType
the data type to be used
Evaluator(const IdentityOperatorBlocked &operat)
Constructor.
AsmTraits_::TestBasisData TestBasisData
the assembler's test-function data type
AsmTraits_::TrafoData TrafoData
the assembler's trafo data type
Tiny::Matrix< DataType, dimension_, dimension_ > ValueType
the data type for the block system
ValueType eval(const TrialBasisData &phi, const TestBasisData &psi)
Evaluation operator.
Vector-valued identity operator implementation.
static constexpr int BlockHeight
Every block is a dimension x dimension matrix.
static constexpr int BlockWidth
Every block is a dimension x dimension matrix.
Identity operator implementation.
Laplace-Beltrami evaluator class template.
AsmTraits_::TestBasisData TestBasisData
the assembler's test-function data type
ValueType eval(const TrialBasisData &phi, const TestBasisData &psi)
Evaluation operator.
Tiny::Matrix< DataType, TrafoEvaluator::domain_dim, TrafoEvaluator::domain_dim > gram_mat
the transformation Gram matrix and its inverse
DataType ValueType
the operator's value type
AsmTraits_::DataType DataType
the data type to be used
AsmTraits_::TrialBasisData TrialBasisData
the assembler's trial-function data type
AsmTraits_::TrafoEvaluator TrafoEvaluator
trafo evaluator type
AsmTraits_::TrafoData TrafoData
the assembler's trafo data type
Laplace-Beltrami operator implementation.
static constexpr SpaceTags trial_config
we need reference gradients from the trial space
static constexpr SpaceTags test_config
we need reference gradients from the test space
Laplace evaluator class template.
ValueType eval(const TrialBasisData &phi, const TestBasisData &psi)
Evaluation operator.
DataType ValueType
the operator's value type
AsmTraits_::TrialBasisData TrialBasisData
the assembler's trial-function data type
AsmTraits_::TestBasisData TestBasisData
the assembler's test-function data type
AsmTraits_::TrafoData TrafoData
the assembler's trafo data type
Evaluator(const LaplaceOperator &operat)
Constructor.
AsmTraits_::DataType DataType
the data type to be used
Laplace evaluator class template.
AsmTraits_::TrialBasisData TrialBasisData
the assembler's trial-function data type
Evaluator(const LaplaceOperatorBlocked &operat)
Constructor.
ValueType eval(const TrialBasisData &phi, const TestBasisData &psi)
Evaluation operator.
AsmTraits_::TrafoData TrafoData
the assembler's trafo data type
Tiny::Matrix< DataType, dimension_, dimension_ > ValueType
the operator's value type
AsmTraits_::DataType DataType
the data type to be used
AsmTraits_::TestBasisData TestBasisData
the assembler's test-function data type
-Laplace operator implementation
static constexpr int BlockWidth
Every block is a dimension x dimension matrix.
static constexpr int BlockHeight
Every block is a dimension x dimension matrix.
-Laplace operator implementation
AsmTraits_::DataType DataType
the data type to be used
AsmTraits_::TrialBasisData TrialBasisData
the assembler's trial-function data type
Tiny::Matrix< DataType, dimension_, dimension_ > ValueType
the data type for the block system
AsmTraits_::TestBasisData TestBasisData
the assembler's test-function data type
AsmTraits_::TrafoData TrafoData
the assembler's trafo data type
(gradu*n)*v operator implementation
AsmTraits_::TrialBasisData TrialBasisData
the assembler's trial-function data type
AsmTraits_::TrafoData TrafoData
the assembler's trafo data type
AsmTraits_::DataType DataType
the data type to be used
Tiny::Matrix< DataType, dimension_, dimension_ > ValueType
the data type for the block system
AsmTraits_::TestBasisData TestBasisData
the assembler's test-function data type
(gradu^T*n)*v operator implementation
static void eval(Tiny::Matrix< T_, 6, 3, 6, 3 > &K, const Tiny::Vector< T_, 3, 3 > &der, const T_ s)
symmetric 3D version with 6 stress components
static void eval(Tiny::Matrix< T_, 4, 2, 4, 2 > &K, const Tiny::Vector< T_, 2, 2 > &der, const T_ s)
unsymmetric 2D version with 4 stress components
static void eval(Tiny::Matrix< T_, 3, 2, 3, 2 > &K, const Tiny::Vector< T_, 2, 2 > &der, const T_ s)
symmetric 2D version with 3 stress components
static void eval(Tiny::Matrix< T_, 9, 3, 9, 3 > &K, const Tiny::Vector< T_, 3, 3 > &der, const T_ s)
unsymmetric 3D version with 9 stress components
Strain-Rate-Tensor Operator.
static void eval(Tiny::Matrix< T_, 3, 9, 3, 9 > &R, const Tiny::Vector< T_, 3, 3 > &der, const T_ u)
unsymmetric 3D version with 9 stress components
static void eval(Tiny::Matrix< T_, 2, 4, 2, 4 > &R, const Tiny::Vector< T_, 2, 2 > &der, const T_ u)
unsymmetric 2D version with 4 stress components
static void eval(Tiny::Matrix< T_, 3, 6, 3, 6 > &R, const Tiny::Vector< T_, 3, 3 > &der, const T_ u)
symmetric 3D version with 6 stress components
static void eval(Tiny::Matrix< T_, 2, 3, 2, 3 > &R, const Tiny::Vector< T_, 2, 2 > &der, const T_ u)
symmetric 2D version with 3 stress components
Stress-Divergence Operator.
Test-Derivative evaluator class template.
AsmTraits_::TestBasisData TestBasisData
the assembler's test-function data type
DataType ValueType
the operator's value type
ValueType eval(const TrialBasisData &phi, const TestBasisData &psi)
Evaluation operator.
const int deriv
the desired derivative
Evaluator(const TestDerivativeOperator &operat)
Constructor.
AsmTraits_::TrafoData TrafoData
the assembler's trafo data type
AsmTraits_::DataType DataType
the data type to be used
AsmTraits_::TrialBasisData TrialBasisData
the assembler's trial-function data type
Test-Derivative operator implementation.
int deriv
the desired derivative
Trial-Derivative evaluator class template.
ValueType eval(const TrialBasisData &phi, const TestBasisData &psi)
Evaluation operator.
AsmTraits_::DataType DataType
the data type to be used
const int deriv
the desired derivative
AsmTraits_::TrialBasisData TrialBasisData
the assembler's trial-function data type
Evaluator(const TrialDerivativeOperator &operat)
Constructor.
DataType ValueType
the operator's value type
AsmTraits_::TestBasisData TestBasisData
the assembler's test-function data type
AsmTraits_::TrafoData TrafoData
the assembler's trafo data type
Trial-Derivative operator implementation.
int deriv
the desired derivative
Tiny Matrix class template.
CUDA_HOST_DEVICE Matrix & add_scalar_main_diag(DataType alpha)
Adds a value onto the matrix's main diagonal.
CUDA_HOST_DEVICE Matrix & set_inverse(const Matrix< T_, m_, n_, sma_, sna_ > &a)
Sets this matrix to the inverse of another matrix.
CUDA_HOST_DEVICE DataType scalar_product(const Vector< T_, m_, snx_ > &x, const Vector< T_, n_, sny_ > &y) const
Computes the scalar product of two vectors with this matrix.
CUDA_HOST_DEVICE Matrix & set_gram(const Matrix< T_, l_, n_, sla_, sna_ > &a)
Sets this matrix to the Gram matrix of another matrix.
CUDA_HOST_DEVICE Matrix & set_outer_product(const Vector< T_, m_, snx_ > &x, const Vector< T_, n_, sny_ > &y)
Sets this matrix to the outer product of two vectors.
Tiny Vector class template.
CUDA_HOST_DEVICE T_ dot(const T_ &a, const T_ &b)
Computes the dot-product of two scalars.
SpaceTags
Space configuration tags enum.
@ value
specifies whether the space should supply basis function values
@ hess
specifies whether the space should supply basis function hessians
@ ref_grad
specifies whether the space should supply reference basis function gradients
@ grad
specifies whether the space should supply basis function gradients
TrafoTags
Trafo configuration tags enum.
@ jac_det
specifies whether the trafo should supply jacobian determinants