1#ifndef DUNE_FEM_SPACE_BASISFUNCTIONSET_TRANSFORMATION_HH
2#define DUNE_FEM_SPACE_BASISFUNCTIONSET_TRANSFORMATION_HH
4#include <dune/common/exceptions.hh>
5#include <dune/common/fmatrix.hh>
6#include <dune/common/fvector.hh>
20 template<
class GeometryJacobianInverseTransposed,
class K,
int ROWS >
22 const FieldMatrix< K, ROWS, GeometryJacobianInverseTransposed::cols > &a,
23 FieldMatrix< K, ROWS, GeometryJacobianInverseTransposed::rows > &b )
25 for(
int r = 0; r < ROWS; ++r )
26 gjit.mv( a[ r ], b[ r ] );
34 template<
class Geometry >
41 : gjit_( geometry.jacobianInverseTransposed( x ) )
44 template<
class A,
class B >
59 template<
class GeometryJacobianInverseTransposed,
class K,
int SIZE >
61 const ExplicitFieldVector< FieldMatrix< K, GeometryJacobianInverseTransposed::cols, GeometryJacobianInverseTransposed::cols >, SIZE > &a,
62 ExplicitFieldVector< FieldMatrix< K, GeometryJacobianInverseTransposed::rows, GeometryJacobianInverseTransposed::rows >, SIZE > &b )
64 const int dimLocal = GeometryJacobianInverseTransposed::cols;
65 const int dimGlobal = GeometryJacobianInverseTransposed::rows;
67 for(
int r = 0; r < SIZE; ++r )
70 FieldMatrix< K, dimLocal, dimGlobal > c;
71 for(
int i = 0; i < dimLocal; ++i )
72 gjit.mv( a[ r ][ i ], c[ i ] );
75 for(
int i = 0; i < dimGlobal; ++i )
90 template<
class Geometry >
97 : gjit_( geometry.jacobianInverseTransposed( x ) )
99 if( !geometry.affine() )
100 DUNE_THROW( NotImplemented,
"HessianTransformation not implemented for non-affine geometries." );
103 template<
class A,
class B >
Definition: bindguard.hh:11
void jacobianTransformation(const GeometryJacobianInverseTransposed &gjit, const FieldMatrix< K, ROWS, GeometryJacobianInverseTransposed::cols > &a, FieldMatrix< K, ROWS, GeometryJacobianInverseTransposed::rows > &b)
Definition: transformation.hh:21
void hessianTransformation(const GeometryJacobianInverseTransposed &gjit, const ExplicitFieldVector< FieldMatrix< K, GeometryJacobianInverseTransposed::cols, GeometryJacobianInverseTransposed::cols >, SIZE > &a, ExplicitFieldVector< FieldMatrix< K, GeometryJacobianInverseTransposed::rows, GeometryJacobianInverseTransposed::rows >, SIZE > &b)
Definition: transformation.hh:60
Definition: explicitfieldvector.hh:75
Definition: fmatrixcol.hh:16
Definition: transformation.hh:36
void operator()(const A &a, B &b) const
Definition: transformation.hh:45
Geometry::LocalCoordinate LocalCoordinate
Definition: transformation.hh:37
JacobianTransformation(const Geometry &geometry, const LocalCoordinate &x)
Definition: transformation.hh:40
Geometry::JacobianInverseTransposed GeometryJacobianInverseTransposed
Definition: transformation.hh:38
Definition: transformation.hh:92
Geometry::JacobianInverseTransposed GeometryJacobianInverseTransposed
Definition: transformation.hh:94
Geometry::LocalCoordinate LocalCoordinate
Definition: transformation.hh:93
HessianTransformation(const Geometry &geometry, const LocalCoordinate &x)
Definition: transformation.hh:96
void operator()(const A &a, B &b) const
Definition: transformation.hh:104