12#include <dune/common/fvector.hh>
31 template <
class F,
int dimD,
unsigned int deriv>
41 typedef Dune::FieldVector<F,size>
Block;
46 block() = field_cast< F >( f );
93 template <
class F,
unsigned int deriv>
105 template <
class F,
int dimD>
113 typedef Dune::FieldVector<F,size>
Block;
118 block() = field_cast< F >( f );
167 namespace DerivativeLayoutNS {
170 template <
class F,
int dimD,
int dimR,
unsigned int deriv,
175 template <
class F,
int dimD,
int dimR,
unsigned int deriv>
177 :
public Derivatives<F,dimD,dimR,deriv-1,DerivativeLayoutNS::value>
187 static const unsigned int dimDomain = dimD;
188 static const unsigned int dimRange = dimR;
189 constexpr static int size = Base::size+ThisLFETensor::size*dimR;
190 typedef Dune::FieldVector<F,size>
Block;
202 template <
unsigned int dorder>
205 tensor<dorder>() = t;
222 block().axpy(a,y.
block());
236 for (
int rr=0; rr<dimR; ++rr)
237 tensor_[rr] = y[rr].
template tensor<deriv>()[0];
240 template <
class Fy,
int dimRy>
243 assign<Fy,dimRy>(y.block(),r);
259 return reinterpret_cast<Block&
>(*this);
263 return reinterpret_cast<const Block&
>(*this);
266 template <
unsigned int dorder>
267 const Dune::FieldVector<LFETensor<F,dimD,dorder>,dimR> &
tensor()
const
270 const std::integral_constant<int,dorder> a = {};
273 template <
unsigned int dorder>
274 Dune::FieldVector<LFETensor<F,dimD,dorder>,dimR> &
tensor()
277 return tensor(std::integral_constant<int,dorder>());
279 template <
unsigned int dorder>
280 const Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR> &
block()
const
283 const std::integral_constant<int,dorder> a = {};
284 return reinterpret_cast<const Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR
>&>(tensor(a));
286 template <
unsigned int dorder>
287 Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR> &
block()
290 const std::integral_constant<int,dorder> a = {};
291 return reinterpret_cast<Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR
>&>(tensor(a));
300 template <
class Fy,
int dimRy>
301 void assign(
const FieldVector<Fy,size*dimRy> &y,
unsigned int r)
303 Base::template assign<Fy,dimRy>(
reinterpret_cast<const FieldVector<Fy,Base::size*dimRy>&
>(y),r);
304 tensor_[0] =
reinterpret_cast<const FieldVector<Fy,ThisLFETensor::size>&
>(y[Base::size*dimRy+r*ThisLFETensor::size]);
307 void assign(
unsigned int r,
const FieldVector<Fy,size/dimR> &y)
309 Base::assign(r,
reinterpret_cast<const FieldVector<Fy,Base::size/dimR
>&>(y));
310 tensor_[r] =
reinterpret_cast<const FieldVector<Fy,ThisLFETensor::size>&
>(y[Base::size/dimR]);
313 template <
class Fy,
unsigned int dy>
317 for (
int rr=0; rr<dimR; ++rr)
318 tensor_[rr] = y[rr].
template tensor<deriv>()[0];
321 template <
int dorder>
322 const Dune::FieldVector<LFETensor<F,dimD,dorder>,dimR> &
323 tensor(
const std::integral_constant<int,dorder> &dorderVar)
const
325 return Base::tensor(dorderVar);
327 const Dune::FieldVector<LFETensor<F,dimD,deriv>,dimR> &
328 tensor(
const std::integral_constant<int,deriv> &dorderVar)
const
332 template <
int dorder>
333 Dune::FieldVector<LFETensor<F,dimD,dorder>,dimR> &
334 tensor(
const std::integral_constant<int,dorder> &dorderVar)
336 return Base::tensor(dorderVar);
338 Dune::FieldVector<LFETensor<F,dimD,deriv>,dimR> &
339 tensor(
const std::integral_constant<int,deriv> &dorderVar)
343 Dune::FieldVector<ThisLFETensor,dimR>
tensor_;
346 template <
class F,
int dimD,
int dimR>
356 static const unsigned int dimDomain = dimD;
357 static const unsigned int dimRange = dimR;
358 constexpr static int size = ThisLFETensor::size*dimR;
359 typedef Dune::FieldVector<F,size>
Block;
364 for (
int r=0; r<dimR; ++r)
365 tensor_[r] = field_cast<F>(f);
388 block().axpy(a,y.
block());
398 for (
int rr=0; rr<dimR; ++rr)
399 tensor_[rr] = y[rr].
template tensor<0>()[0];
401 template <
class Fy,
int dimRy>
404 assign<Fy,dimRy>(y.block(),r);
409 tensor_[r].assign(y[0]);
414 tensor_[r].assign(y[0][0]);
419 return reinterpret_cast<Block&
>(*this);
423 return reinterpret_cast<const Block&
>(*this);
432 template <
int dorder>
433 const Dune::FieldVector<LFETensor<F,dimD,0>,dimR> &
tensor()
const
437 Dune::FieldVector<LFETensor<F,dimD,0>,dimR> &
tensor()
441 template <
unsigned int dorder>
442 const Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR> &
block()
const
445 const std::integral_constant<int,dorder> a = {};
446 return reinterpret_cast<const Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR
>&>(tensor(a));
448 template <
unsigned int dorder>
449 Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR> &
block()
452 const std::integral_constant<int,dorder> a = {};
453 return reinterpret_cast<Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR
>&>(tensor(a));
457 const Dune::FieldVector<LFETensor<F,dimD,0>,dimR> &
458 tensor(
const std::integral_constant<int,0> &dorderVar)
const
462 Dune::FieldVector<LFETensor<F,dimD,0>,dimR> &
463 tensor(
const std::integral_constant<int,0> &dorderVar)
467 template <
class Fy,
unsigned int dy>
470 for (
int rr=0; rr<dimR; ++rr)
471 tensor_[rr] = y[rr].
template tensor<0>()[0];
473 template <
class Fy,
int dimRy>
474 void assign(
const FieldVector<Fy,size*dimRy> &y,
unsigned int r)
476 tensor_[0] =
reinterpret_cast<const FieldVector<Fy,ThisLFETensor::size>&
>(y[r*ThisLFETensor::size]);
479 void assign(
unsigned int r,
const FieldVector<Fy,size/dimR> &y)
483 Dune::FieldVector<ThisLFETensor,dimR>
tensor_;
487 template <
class F,
int dimD,
int dimR,
unsigned int deriv>
497 static const unsigned int dimDomain = dimD;
498 static const unsigned int dimRange = dimR;
499 constexpr static int size = ScalarDeriv::size*dimR;
500 typedef Dune::FieldVector<F,size>
Block;
505 block() = field_cast<F>(f);
523 block().axpy(field_cast<F>(a),y.
block());
535 for (
unsigned int rr=0; rr<dimR; ++rr)
536 deriv_[rr].assign(y,rr);
539 template <
class Fy,DerivativeLayoutNS::DerivativeLayout layouty>
542 deriv_[r].assign(r,y);
547 return reinterpret_cast<Block&
>(*this);
551 return reinterpret_cast<const Block&
>(*this);
561 Dune::FieldVector<ScalarDeriv,dimR>
deriv_;
567 template <
class Vec1,
class Vec2,
unsigned int deriv>
570 template <
class Field>
571 static void apply(
unsigned int r,
const Field &a,
572 const Vec1 &x, Vec2 &y)
577 template <
class F1,
int dimD,
int dimR,
584 template <
class Field>
585 static void apply(
unsigned int r,
const Field &a,
586 const Vec1 &x, Vec2 &y)
588 const FieldVector<F1,Vec2::size> &xx = x.template block<deriv>();
589 for (
int i=0; i<y.size; ++i)
593 template <
class F1,
int dimD,
int dimR,
600 template <
class Field>
601 static void apply(
unsigned int r,
const Field &a,
602 const Vec1 &x, Vec2 &y)
604 for (
int rr=0; rr<dimR; ++rr)
606 Vec2,deriv>
::apply(rr,a,x[rr],y);
609 template <
class F1,
int dimD,
616 template <
class Field>
617 static void apply(
unsigned int r,
const Field &a,
618 const Vec1 &x, Vec2 &y)
621 Vec2,deriv>
::apply(r,a,x[0],y);
624 template <
class F1,
int dimD,
631 template <
class Field>
632 static void apply(
unsigned int r,
const Field &a,
633 const Vec1 &x, Vec2 &y)
636 const unsigned int rr = r*LFETensorType::size;
637 const FieldVector<F1,LFETensorType::size> &xx = x.template block<deriv>();
638 for (
int i=0; i<FieldVector<F1,LFETensorType::size>::dimension; ++i)
646 template <
class Vec1,
class Vec2>
649 static void apply(
unsigned int r,
const Vec1 &vec1,Vec2 &vec2)
666 template <
int dimD,
int dimR,
unsigned int deriv,
669 Derivatives<F2,dimD,dimR,deriv,DerivativeLayoutNS::derivative> >
678 template <
int dimD,
int dimR,
unsigned int deriv,
681 Derivatives<F2,dimD,dimR,deriv,DerivativeLayoutNS::value> >
714 template <
int dimD,
unsigned int deriv,
717 Derivatives<F2,dimD,1,deriv,DerivativeLayoutNS::value> >
726 template <
int dimD,
unsigned int deriv,
729 Derivatives<F2,dimD,1,deriv,DerivativeLayoutNS::derivative> >
738 template <
int dimD,
unsigned int deriv,
741 Derivatives<F2,dimD,1,deriv,DerivativeLayoutNS::value> >
750 template <
int dimD,
unsigned int deriv,
753 Derivatives<F2,dimD,1,deriv,DerivativeLayoutNS::derivative> >
774 template <
int dimD,
int dimR,
775 class F1,
unsigned int deriv,
780 typedef FieldVector<F2,dimR>
Vec2;
786 template <
int dimD,
int dimR,
787 class F1,
unsigned int deriv,
792 typedef FieldVector<F2,dimR>
Vec2;
795 for (
int rr=0; rr<dimR; ++rr)
796 field_cast(vec1[rr].
template tensor<0>()[0].block(),vec2[rr]);
800 class F1,
unsigned int deriv,
805 typedef FieldVector<F2,dimR>
Vec2;
808 field_cast(vec1.template tensor<0>()[0].block(),vec2[r]);
812 class F1,
unsigned int deriv,
817 typedef FieldVector<F2,dimR>
Vec2;
820 field_cast(vec1[0].
template tensor<0>()[0].block(),vec2[r]);
824 class F1,
unsigned int deriv,
829 typedef FieldVector<F2,1>
Vec2;
832 field_cast(vec1.template tensor<0>()[0].block(),vec2);
836 class F1,
unsigned int deriv,
841 typedef FieldVector<F2,1>
Vec2;
844 field_cast(vec1[0].
template tensor<0>()[0].block(),vec2);
851 template <
class F,
int dimD,
unsigned int deriv>
854 return out << tensor.
block();
857 template <
class F,
int dimD,
unsigned int deriv>
858 std::ostream &
operator<< ( std::ostream &out,
const ScalarDerivatives< F,dimD,deriv > &d )
860 out <<
static_cast<const ScalarDerivatives< F,dimD,deriv-1
> &>(d);
861 out <<
" , " << d.tensor() << std::endl;
864 template <
class F,
int dimD>
865 std::ostream &
operator<< ( std::ostream &out,
const ScalarDerivatives< F,dimD,0 > &d )
867 out << d.tensor() << std::endl;
871 template <
class F,
int dimD,
int dimR,
unsigned int deriv>
876 for (
int r=1; r<dimR; ++r)
878 out <<
" , " << d[r];
880 out <<
" ) " << std::endl;
883 template <
class F,
int dimD,
int dimR,
unsigned int deriv>
889 for (
int r=1; r<dimR; ++r)
891 out <<
" , " << d[r];
893 out <<
" ) " << std::endl;
896 template <
class F,
int dimD,
int dimR>
901 for (
int r=1; r<dimR; ++r)
903 out <<
" , " << d[r];
905 out <<
" ) " << std::endl;
908 template <
class F,
int dimD,
int dimR>
913 for (
int r=1; r<dimR; ++r)
915 out <<
" , " << d[r];
917 out <<
" ) " << std::endl;
920 template <
class F,
int dimD,
int dimR,
unsigned int deriv,DerivativeLayoutNS::DerivativeLayout layout>
923 out <<
"Number of basis functions: " << y.size() << std::endl;
924 for (
unsigned int i=0; i<y.size(); ++i)
926 out <<
"Base " << i <<
" : " << std::endl;
Definition: bdfmcube.hh:18
void field_cast(const F1 &f1, F2 &f2)
a helper class to cast from one field to another
Definition: field.hh:159
std::ostream & operator<<(std::ostream &out, const LFEMatrix< Field > &mat)
Definition: lfematrix.hh:152
DerivativeLayout
Definition: tensor.hh:168
@ derivative
Definition: tensor.hh:168
@ value
Definition: tensor.hh:168
const Block & block() const
Definition: tensor.hh:76
This & operator*=(const field_type &f)
Definition: tensor.hh:56
Dune::FieldVector< F, size > Block
Definition: tensor.hh:41
This & operator=(const FF &f)
Definition: tensor.hh:44
Block block_
Definition: tensor.hh:89
F field_type
Definition: tensor.hh:39
void axpy(const F &a, const This &y)
Definition: tensor.hh:80
Block & block()
Definition: tensor.hh:72
void assign(const LFETensor< Fy, dimD, deriv > &y)
Definition: tensor.hh:85
static const unsigned int size
Definition: tensor.hh:40
const field_type & operator[](const unsigned int i) const
Definition: tensor.hh:62
Definition: tensor.hh:107
Block & block()
Definition: tensor.hh:154
F field_type
Definition: tensor.hh:111
Block block_
Definition: tensor.hh:162
void assign(const LFETensor< Fy, dimD, 0 > &y)
Definition: tensor.hh:149
const Block & block() const
Definition: tensor.hh:158
void axpy(const F &a, const This &y)
Definition: tensor.hh:144
Dune::FieldVector< F, size > Block
Definition: tensor.hh:113
Definition: tensor.hh:172
Definition: tensor.hh:178
F Field
Definition: tensor.hh:183
Derivatives< F, dimD, dimR, deriv, DerivativeLayoutNS::value > This
Definition: tensor.hh:179
This & operator=(const Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > &t)
Definition: tensor.hh:203
F field_type
Definition: tensor.hh:184
Derivatives< F, dimD, dimR, deriv-1, DerivativeLayoutNS::value > Base
Definition: tensor.hh:180
const Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor(const std::integral_constant< int, dorder > &dorderVar) const
Definition: tensor.hh:323
void assign(const FieldVector< Fy, size *dimRy > &y, unsigned int r)
Definition: tensor.hh:301
void assign(const Derivatives< Fy, dimD, dimR, deriv, DerivativeLayoutNS::value > &y)
Definition: tensor.hh:227
void assign(const Derivatives< Fy, dimD, dimR, dy, DerivativeLayoutNS::derivative > &y)
Definition: tensor.hh:314
This & operator=(const F &f)
Definition: tensor.hh:192
const ThisLFETensor & operator[](int r) const
Definition: tensor.hh:296
Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block()
Definition: tensor.hh:287
LFETensor< F, dimD, deriv > ThisLFETensor
Definition: tensor.hh:181
void assign(unsigned int r, const Derivatives< Fy, dimD, 1, deriv, DerivativeLayoutNS::value > &y)
Definition: tensor.hh:247
const Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block() const
Definition: tensor.hh:280
Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor(const std::integral_constant< int, dorder > &dorderVar)
Definition: tensor.hh:334
const Block & block() const
Definition: tensor.hh:261
void axpy(const F &a, const This &y)
Definition: tensor.hh:220
void assign(const Derivatives< Fy, dimD, dimR, deriv, DerivativeLayoutNS::derivative > &y)
Definition: tensor.hh:233
This & operator=(const Dune::FieldVector< ThisLFETensor, dimR > &t)
Definition: tensor.hh:197
void assign(unsigned int r, const Derivatives< Fy, dimD, 1, deriv, DerivativeLayoutNS::derivative > &y)
Definition: tensor.hh:252
This & operator=(const Block &t)
Definition: tensor.hh:208
Dune::FieldVector< F, size > Block
Definition: tensor.hh:190
Dune::FieldVector< ThisLFETensor, dimR > tensor_
Definition: tensor.hh:343
Dune::FieldVector< LFETensor< F, dimD, deriv >, dimR > & tensor(const std::integral_constant< int, deriv > &dorderVar)
Definition: tensor.hh:339
Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor()
Definition: tensor.hh:274
void assign(const Derivatives< Fy, dimD, dimRy, deriv, DerivativeLayoutNS::value > &y, unsigned int r)
Definition: tensor.hh:241
const Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor() const
Definition: tensor.hh:267
const Dune::FieldVector< LFETensor< F, dimD, deriv >, dimR > & tensor(const std::integral_constant< int, deriv > &dorderVar) const
Definition: tensor.hh:328
ThisLFETensor & operator[](int r)
Definition: tensor.hh:293
Block & block()
Definition: tensor.hh:257
void assign(unsigned int r, const FieldVector< Fy, size/dimR > &y)
Definition: tensor.hh:307
Definition: tensor.hh:348
ThisLFETensor & operator[](int r)
Definition: tensor.hh:426
LFETensor< F, dimD, 0 > ThisLFETensor
Definition: tensor.hh:350
Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block()
Definition: tensor.hh:449
Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor(const std::integral_constant< int, 0 > &dorderVar)
Definition: tensor.hh:463
void assign(const Derivatives< Fy, dimD, dimR, 0, DerivativeLayoutNS::value > &y)
Definition: tensor.hh:391
F Field
Definition: tensor.hh:352
Derivatives< F, dimD, dimR, 0, DerivativeLayoutNS::value > This
Definition: tensor.hh:349
void assign(const Derivatives< Fy, dimD, dimR, dy, DerivativeLayoutNS::derivative > &y)
Definition: tensor.hh:468
void assign(const Derivatives< Fy, dimD, dimRy, 0, DerivativeLayoutNS::value > &y, unsigned int r)
Definition: tensor.hh:402
const Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor() const
Definition: tensor.hh:433
Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor()
Definition: tensor.hh:437
This & operator=(const Block &t)
Definition: tensor.hh:374
F field_type
Definition: tensor.hh:353
const ThisLFETensor & operator[](int r) const
Definition: tensor.hh:429
const Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor(const std::integral_constant< int, 0 > &dorderVar) const
Definition: tensor.hh:458
Dune::FieldVector< F, size > Block
Definition: tensor.hh:359
const Block & block() const
Definition: tensor.hh:421
const Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block() const
Definition: tensor.hh:442
void assign(unsigned int r, const Derivatives< Fy, dimD, 1, 0, DerivativeLayoutNS::derivative > &y)
Definition: tensor.hh:412
void assign(const Derivatives< Fy, dimD, dimR, 0, DerivativeLayoutNS::derivative > &y)
Definition: tensor.hh:396
void assign(unsigned int r, const Derivatives< Fy, dimD, 1, 0, DerivativeLayoutNS::value > &y)
Definition: tensor.hh:407
This & operator=(const Dune::FieldVector< ThisLFETensor, dimR > &t)
Definition: tensor.hh:368
void assign(const FieldVector< Fy, size *dimRy > &y, unsigned int r)
Definition: tensor.hh:474
Dune::FieldVector< ThisLFETensor, dimR > tensor_
Definition: tensor.hh:483
void assign(unsigned int r, const FieldVector< Fy, size/dimR > &y)
Definition: tensor.hh:479
This & operator=(const FF &f)
Definition: tensor.hh:362
Block & block()
Definition: tensor.hh:417
void axpy(const F &a, const This &y)
Definition: tensor.hh:386
Definition: tensor.hh:489
This & operator=(const FF &f)
Definition: tensor.hh:503
Block & block()
Definition: tensor.hh:545
F Field
Definition: tensor.hh:493
const Block & block() const
Definition: tensor.hh:549
F field_type
Definition: tensor.hh:494
void assign(unsigned int r, const Derivatives< Fy, dimD, 1, deriv, layouty > &y)
Definition: tensor.hh:540
ScalarDeriv & operator[](int r)
Definition: tensor.hh:554
void assign(const Derivatives< Fy, dimD, dimR, deriv, DerivativeLayoutNS::value > &y)
Definition: tensor.hh:533
Derivatives< F, dimD, dimR, deriv, DerivativeLayoutNS::derivative > This
Definition: tensor.hh:490
Derivatives< F, dimD, 1, deriv, DerivativeLayoutNS::value > ScalarDeriv
Definition: tensor.hh:491
const ScalarDeriv & operator[](int r) const
Definition: tensor.hh:557
void axpy(const FF &a, const This &y)
Definition: tensor.hh:521
This & operator=(const Block &t)
Definition: tensor.hh:508
Dune::FieldVector< F, size > Block
Definition: tensor.hh:500
Dune::FieldVector< ScalarDeriv, dimR > deriv_
Definition: tensor.hh:561
void assign(const Derivatives< Fy, dimD, dimR, deriv, DerivativeLayoutNS::derivative > &y)
Definition: tensor.hh:527
Definition: tensor.hh:569
static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
Definition: tensor.hh:571
static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
Definition: tensor.hh:585
Derivatives< F1, dimD, dimR, d, DerivativeLayoutNS::value > Vec1
Definition: tensor.hh:583
Derivatives< F1, dimD, dimR, d, DerivativeLayoutNS::derivative > Vec1
Definition: tensor.hh:599
static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
Definition: tensor.hh:601
Derivatives< F1, dimD, 1, d, DerivativeLayoutNS::derivative > Vec1
Definition: tensor.hh:615
static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
Definition: tensor.hh:617
static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
Definition: tensor.hh:632
Derivatives< F1, dimD, 1, d, DerivativeLayoutNS::value > Vec1
Definition: tensor.hh:630
Definition: tensor.hh:648
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:649
Derivatives< F1, dimD, dimR, deriv, layout > Vec1
Definition: tensor.hh:659
Derivatives< F2, dimD, dimR, deriv, layout > Vec2
Definition: tensor.hh:660
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:661
Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::value > Vec1
Definition: tensor.hh:671
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:673
Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::derivative > Vec2
Definition: tensor.hh:672
Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::value > Vec2
Definition: tensor.hh:684
Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::derivative > Vec1
Definition: tensor.hh:683
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:685
Derivatives< F1, dimD, 1, deriv, layout > Vec1
Definition: tensor.hh:695
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:697
Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::value > Vec2
Definition: tensor.hh:696
Derivatives< F1, dimD, 1, deriv, layout > Vec1
Definition: tensor.hh:707
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:709
Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::derivative > Vec2
Definition: tensor.hh:708
Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value > Vec1
Definition: tensor.hh:719
Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::value > Vec2
Definition: tensor.hh:720
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:721
Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative > Vec1
Definition: tensor.hh:731
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:733
Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::derivative > Vec2
Definition: tensor.hh:732
Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::value > Vec2
Definition: tensor.hh:744
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:745
Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative > Vec1
Definition: tensor.hh:743
Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::derivative > Vec2
Definition: tensor.hh:756
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:757
Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value > Vec1
Definition: tensor.hh:755
F2 Vec2
Definition: tensor.hh:768
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:769
Derivatives< F1, dimD, 1, deriv, layout > Vec1
Definition: tensor.hh:767
Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::value > Vec1
Definition: tensor.hh:779
FieldVector< F2, dimR > Vec2
Definition: tensor.hh:780
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:781
Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::derivative > Vec1
Definition: tensor.hh:791
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:793
FieldVector< F2, dimR > Vec2
Definition: tensor.hh:792
Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value > Vec1
Definition: tensor.hh:804
FieldVector< F2, dimR > Vec2
Definition: tensor.hh:805
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:806
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:818
Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative > Vec1
Definition: tensor.hh:816
FieldVector< F2, dimR > Vec2
Definition: tensor.hh:817
FieldVector< F2, 1 > Vec2
Definition: tensor.hh:829
Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value > Vec1
Definition: tensor.hh:828
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:830
Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative > Vec1
Definition: tensor.hh:840
static void apply(unsigned int, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:842
FieldVector< F2, 1 > Vec2
Definition: tensor.hh:841