10 #include <dune/common/fvector.hh>
29 template <
class F,
int dimD,
unsigned int deriv>
39 typedef Dune::FieldVector<F,size>
Block;
44 block() = field_cast< F >( f );
91 template <
class F,
unsigned int deriv>
103 template <
class F,
int dimD>
111 typedef Dune::FieldVector<F,size>
Block;
116 block() = field_cast< F >( f );
165 namespace DerivativeLayoutNS {
168 template <
class F,
int dimD,
int dimR,
unsigned int deriv,
173 template <
class F,
int dimD,
int dimR,
unsigned int deriv>
175 :
public Derivatives<F,dimD,dimR,deriv-1,DerivativeLayoutNS::value>
185 static const unsigned int dimDomain = dimD;
186 static const unsigned int dimRange = dimR;
188 enum { size = Base::size+ThisLFETensor::size*dimR };
189 typedef Dune::FieldVector<F,size>
Block;
201 template <
unsigned int dorder>
204 tensor<dorder>() = t;
221 block().axpy(a,y.
block());
235 for (
int rr=0; rr<dimR; ++rr)
236 tensor_[rr] = y[rr].
template tensor<deriv>()[0];
239 template <
class Fy,
int dimRy>
242 assign<Fy,dimRy>(y.block(),r);
258 return reinterpret_cast<Block&
>(*this);
262 return reinterpret_cast<const Block&
>(*this);
265 template <
unsigned int dorder>
266 const Dune::FieldVector<LFETensor<F,dimD,dorder>,dimR> &
tensor()
const
269 const std::integral_constant<int,dorder> a = {};
272 template <
unsigned int dorder>
273 Dune::FieldVector<LFETensor<F,dimD,dorder>,dimR> &
tensor()
276 return tensor(std::integral_constant<int,dorder>());
278 template <
unsigned int dorder>
279 const Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR> &
block()
const
282 const std::integral_constant<int,dorder> a = {};
283 return reinterpret_cast<const Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR
>&>(tensor(a));
285 template <
unsigned int dorder>
286 Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR> &
block()
289 const std::integral_constant<int,dorder> a = {};
290 return reinterpret_cast<Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR
>&>(tensor(a));
299 template <
class Fy,
int dimRy>
300 void assign(
const FieldVector<Fy,size*dimRy> &y,
unsigned int r)
302 Base::template assign<Fy,dimRy>(
reinterpret_cast<const FieldVector<Fy,Base::size*dimRy>&
>(y),r);
303 tensor_[0] =
reinterpret_cast<const FieldVector<Fy,ThisLFETensor::size>&
>(y[Base::size*dimRy+r*ThisLFETensor::size]);
306 void assign(
unsigned int r,
const FieldVector<Fy,size/dimR> &y)
308 Base::assign(r,
reinterpret_cast<const FieldVector<Fy,Base::size/dimR
>&>(y));
309 tensor_[r] =
reinterpret_cast<const FieldVector<Fy,ThisLFETensor::size>&
>(y[Base::size/dimR]);
312 template <
class Fy,
unsigned int dy>
316 for (
int rr=0; rr<dimR; ++rr)
317 tensor_[rr] = y[rr].
template tensor<deriv>()[0];
320 template <
int dorder>
321 const Dune::FieldVector<LFETensor<F,dimD,dorder>,dimR> &
322 tensor(
const std::integral_constant<int,dorder> &dorderVar)
const
324 return Base::tensor(dorderVar);
326 const Dune::FieldVector<LFETensor<F,dimD,deriv>,dimR> &
327 tensor(
const std::integral_constant<int,deriv> &dorderVar)
const
331 template <
int dorder>
332 Dune::FieldVector<LFETensor<F,dimD,dorder>,dimR> &
333 tensor(
const std::integral_constant<int,dorder> &dorderVar)
335 return Base::tensor(dorderVar);
337 Dune::FieldVector<LFETensor<F,dimD,deriv>,dimR> &
338 tensor(
const std::integral_constant<int,deriv> &dorderVar)
342 Dune::FieldVector<ThisLFETensor,dimR>
tensor_;
345 template <
class F,
int dimD,
int dimR>
355 static const unsigned int dimDomain = dimD;
356 static const unsigned int dimRange = dimR;
358 enum { 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;
500 enum { size = ScalarDeriv::size*dimR };
501 typedef Dune::FieldVector<F,size>
Block;
506 block() = field_cast<F>(f);
524 block().axpy(field_cast<F>(a),y.
block());
536 for (
unsigned int rr=0; rr<dimR; ++rr)
537 deriv_[rr].assign(y,rr);
540 template <
class Fy,DerivativeLayoutNS::DerivativeLayout layouty>
543 deriv_[r].assign(r,y);
548 return reinterpret_cast<Block&
>(*this);
552 return reinterpret_cast<const Block&
>(*this);
562 Dune::FieldVector<ScalarDeriv,dimR>
deriv_;
568 template <
class Vec1,
class Vec2,
unsigned int deriv>
571 template <
class Field>
572 static void apply(
unsigned int r,
const Field &a,
573 const Vec1 &x, Vec2 &y)
578 template <
class F1,
int dimD,
int dimR,
585 template <
class Field>
586 static void apply(
unsigned int r,
const Field &a,
587 const Vec1 &x, Vec2 &y)
589 const FieldVector<F1,Vec2::size> &xx = x.template block<deriv>();
590 for (
int i=0; i<y.size; ++i)
594 template <
class F1,
int dimD,
int dimR,
601 template <
class Field>
602 static void apply(
unsigned int r,
const Field &a,
603 const Vec1 &x, Vec2 &y)
605 for (
int rr=0; rr<dimR; ++rr)
607 Vec2,deriv>::
apply(rr,a,x[rr],y);
610 template <
class F1,
int dimD,
617 template <
class Field>
618 static void apply(
unsigned int r,
const Field &a,
619 const Vec1 &x, Vec2 &y)
622 Vec2,deriv>
::apply(r,a,x[0],y);
625 template <
class F1,
int dimD,
632 template <
class Field>
633 static void apply(
unsigned int r,
const Field &a,
634 const Vec1 &x, Vec2 &y)
637 const unsigned int rr = r*LFETensorType::size;
638 const FieldVector<F1,LFETensorType::size> &xx = x.template block<deriv>();
639 for (
int i=0; i<FieldVector<F1,LFETensorType::size>::dimension; ++i)
647 template <
class Vec1,
class Vec2>
650 static void apply(
unsigned int r,
const Vec1 &vec1,Vec2 &vec2)
667 template <
int dimD,
int dimR,
unsigned int deriv,
670 Derivatives<F2,dimD,dimR,deriv,DerivativeLayoutNS::derivative> >
679 template <
int dimD,
int dimR,
unsigned int deriv,
682 Derivatives<F2,dimD,dimR,deriv,DerivativeLayoutNS::value> >
715 template <
int dimD,
unsigned int deriv,
718 Derivatives<F2,dimD,1,deriv,DerivativeLayoutNS::value> >
727 template <
int dimD,
unsigned int deriv,
730 Derivatives<F2,dimD,1,deriv,DerivativeLayoutNS::derivative> >
739 template <
int dimD,
unsigned int deriv,
742 Derivatives<F2,dimD,1,deriv,DerivativeLayoutNS::value> >
751 template <
int dimD,
unsigned int deriv,
754 Derivatives<F2,dimD,1,deriv,DerivativeLayoutNS::derivative> >
775 template <
int dimD,
int dimR,
776 class F1,
unsigned int deriv,
781 typedef FieldVector<F2,dimR>
Vec2;
787 template <
int dimD,
int dimR,
788 class F1,
unsigned int deriv,
793 typedef FieldVector<F2,dimR>
Vec2;
796 for (
int rr=0; rr<dimR; ++rr)
797 field_cast(vec1[rr].
template tensor<0>()[0].block(),vec2[rr]);
801 class F1,
unsigned int deriv,
806 typedef FieldVector<F2,dimR>
Vec2;
809 field_cast(vec1.template tensor<0>()[0].block(),vec2[r]);
813 class F1,
unsigned int deriv,
818 typedef FieldVector<F2,dimR>
Vec2;
821 field_cast(vec1[0].
template tensor<0>()[0].block(),vec2[r]);
825 class F1,
unsigned int deriv,
830 typedef FieldVector<F2,1>
Vec2;
833 field_cast(vec1.template tensor<0>()[0].block(),vec2);
837 class F1,
unsigned int deriv,
842 typedef FieldVector<F2,1>
Vec2;
845 field_cast(vec1[0].
template tensor<0>()[0].block(),vec2);
852 template <
class F,
int dimD,
unsigned int deriv>
855 return out << tensor.
block();
858 template <
class F,
int dimD,
unsigned int deriv>
859 std::ostream &
operator<< ( std::ostream &out,
const ScalarDerivatives< F,dimD,deriv > &d )
861 out <<
static_cast<const ScalarDerivatives< F,dimD,deriv-1
> &>(d);
862 out <<
" , " << d.tensor() << std::endl;
865 template <
class F,
int dimD>
866 std::ostream &
operator<< ( std::ostream &out,
const ScalarDerivatives< F,dimD,0 > &d )
868 out << d.tensor() << std::endl;
872 template <
class F,
int dimD,
int dimR,
unsigned int deriv>
877 for (
int r=1; r<dimR; ++r)
879 out <<
" , " << d[r];
881 out <<
" ) " << std::endl;
884 template <
class F,
int dimD,
int dimR,
unsigned int deriv>
890 for (
int r=1; r<dimR; ++r)
892 out <<
" , " << d[r];
894 out <<
" ) " << std::endl;
897 template <
class F,
int dimD,
int dimR>
902 for (
int r=1; r<dimR; ++r)
904 out <<
" , " << d[r];
906 out <<
" ) " << std::endl;
909 template <
class F,
int dimD,
int dimR>
914 for (
int r=1; r<dimR; ++r)
916 out <<
" , " << d[r];
918 out <<
" ) " << std::endl;
921 template <
class F,
int dimD,
int dimR,
unsigned int deriv,DerivativeLayoutNS::DerivativeLayout layout>
924 out <<
"Number of basis functions: " << y.size() << std::endl;
925 for (
unsigned int i=0; i<y.size(); ++i)
927 out <<
"Base " << i <<
" : " << std::endl;
Definition: bdfmcube.hh:16
void field_cast(const F1 &f1, F2 &f2)
a helper class to cast from one field to another
Definition: field.hh:157
std::ostream & operator<<(std::ostream &out, const LFEMatrix< Field > &mat)
Definition: lfematrix.hh:149
DerivativeLayout
Definition: tensor.hh:166
@ derivative
Definition: tensor.hh:166
@ value
Definition: tensor.hh:166
This & operator*=(const field_type &f)
Definition: tensor.hh:54
Dune::FieldVector< F, size > Block
Definition: tensor.hh:39
const field_type & operator[](const unsigned int i) const
Definition: tensor.hh:60
Block block_
Definition: tensor.hh:87
F field_type
Definition: tensor.hh:37
void axpy(const F &a, const This &y)
Definition: tensor.hh:78
const Block & block() const
Definition: tensor.hh:74
void assign(const LFETensor< Fy, dimD, deriv > &y)
Definition: tensor.hh:83
static const unsigned int size
Definition: tensor.hh:38
This & operator=(const FF &f)
Definition: tensor.hh:42
Block & block()
Definition: tensor.hh:70
Definition: tensor.hh:105
F field_type
Definition: tensor.hh:109
Block block_
Definition: tensor.hh:160
void assign(const LFETensor< Fy, dimD, 0 > &y)
Definition: tensor.hh:147
Block & block()
Definition: tensor.hh:152
void axpy(const F &a, const This &y)
Definition: tensor.hh:142
Dune::FieldVector< F, size > Block
Definition: tensor.hh:111
const Block & block() const
Definition: tensor.hh:156
Definition: tensor.hh:170
Definition: tensor.hh:176
F Field
Definition: tensor.hh:181
Derivatives< F, dimD, dimR, deriv, DerivativeLayoutNS::value > This
Definition: tensor.hh:177
Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor(const std::integral_constant< int, dorder > &dorderVar)
Definition: tensor.hh:333
F field_type
Definition: tensor.hh:182
Derivatives< F, dimD, dimR, deriv-1, DerivativeLayoutNS::value > Base
Definition: tensor.hh:178
const Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor() const
Definition: tensor.hh:266
void assign(const FieldVector< Fy, size *dimRy > &y, unsigned int r)
Definition: tensor.hh:300
void assign(const Derivatives< Fy, dimD, dimR, deriv, DerivativeLayoutNS::value > &y)
Definition: tensor.hh:226
void assign(const Derivatives< Fy, dimD, dimR, dy, DerivativeLayoutNS::derivative > &y)
Definition: tensor.hh:313
Block & block()
Definition: tensor.hh:256
This & operator=(const Dune::FieldVector< ThisLFETensor, dimR > &t)
Definition: tensor.hh:196
LFETensor< F, dimD, deriv > ThisLFETensor
Definition: tensor.hh:179
void assign(unsigned int r, const Derivatives< Fy, dimD, 1, deriv, DerivativeLayoutNS::value > &y)
Definition: tensor.hh:246
This & operator=(const F &f)
Definition: tensor.hh:191
void axpy(const F &a, const This &y)
Definition: tensor.hh:219
void assign(const Derivatives< Fy, dimD, dimR, deriv, DerivativeLayoutNS::derivative > &y)
Definition: tensor.hh:232
Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor()
Definition: tensor.hh:273
This & operator=(const Block &t)
Definition: tensor.hh:207
void assign(unsigned int r, const Derivatives< Fy, dimD, 1, deriv, DerivativeLayoutNS::derivative > &y)
Definition: tensor.hh:251
const ThisLFETensor & operator[](int r) const
Definition: tensor.hh:295
Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block()
Definition: tensor.hh:286
ThisLFETensor & operator[](int r)
Definition: tensor.hh:292
const Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block() const
Definition: tensor.hh:279
Dune::FieldVector< F, size > Block
Definition: tensor.hh:189
Dune::FieldVector< ThisLFETensor, dimR > tensor_
Definition: tensor.hh:342
void assign(const Derivatives< Fy, dimD, dimRy, deriv, DerivativeLayoutNS::value > &y, unsigned int r)
Definition: tensor.hh:240
const Dune::FieldVector< LFETensor< F, dimD, deriv >, dimR > & tensor(const std::integral_constant< int, deriv > &dorderVar) const
Definition: tensor.hh:327
This & operator=(const Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > &t)
Definition: tensor.hh:202
const Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor(const std::integral_constant< int, dorder > &dorderVar) const
Definition: tensor.hh:322
void assign(unsigned int r, const FieldVector< Fy, size/dimR > &y)
Definition: tensor.hh:306
Dune::FieldVector< LFETensor< F, dimD, deriv >, dimR > & tensor(const std::integral_constant< int, deriv > &dorderVar)
Definition: tensor.hh:338
const Block & block() const
Definition: tensor.hh:260
Definition: tensor.hh:347
const Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor(const std::integral_constant< int, 0 > &dorderVar) const
Definition: tensor.hh:458
Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor()
Definition: tensor.hh:437
LFETensor< F, dimD, 0 > ThisLFETensor
Definition: tensor.hh:349
void assign(const Derivatives< Fy, dimD, dimR, 0, DerivativeLayoutNS::value > &y)
Definition: tensor.hh:391
F Field
Definition: tensor.hh:351
const Block & block() const
Definition: tensor.hh:421
Derivatives< F, dimD, dimR, 0, DerivativeLayoutNS::value > This
Definition: tensor.hh:348
const Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor() const
Definition: tensor.hh:433
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
This & operator=(const Dune::FieldVector< ThisLFETensor, dimR > &t)
Definition: tensor.hh:368
This & operator=(const Block &t)
Definition: tensor.hh:374
ThisLFETensor & operator[](int r)
Definition: tensor.hh:426
F field_type
Definition: tensor.hh:352
const ThisLFETensor & operator[](int r) const
Definition: tensor.hh:429
Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor(const std::integral_constant< int, 0 > &dorderVar)
Definition: tensor.hh:463
Dune::FieldVector< F, size > Block
Definition: tensor.hh:359
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
Block & block()
Definition: tensor.hh:417
const Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block() const
Definition: tensor.hh:442
void assign(const FieldVector< Fy, size *dimRy > &y, unsigned int r)
Definition: tensor.hh:474
Dune::FieldVector< ThisLFETensor, dimR > tensor_
Definition: tensor.hh:483
Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block()
Definition: tensor.hh:449
void assign(unsigned int r, const FieldVector< Fy, size/dimR > &y)
Definition: tensor.hh:479
This & operator=(const FF &f)
Definition: tensor.hh:362
void axpy(const F &a, const This &y)
Definition: tensor.hh:386
Definition: tensor.hh:489
const Block & block() const
Definition: tensor.hh:550
F Field
Definition: tensor.hh:493
const ScalarDeriv & operator[](int r) const
Definition: tensor.hh:558
F field_type
Definition: tensor.hh:494
void assign(unsigned int r, const Derivatives< Fy, dimD, 1, deriv, layouty > &y)
Definition: tensor.hh:541
This & operator=(const FF &f)
Definition: tensor.hh:504
ScalarDeriv & operator[](int r)
Definition: tensor.hh:555
Block & block()
Definition: tensor.hh:546
This & operator=(const Block &t)
Definition: tensor.hh:509
void assign(const Derivatives< Fy, dimD, dimR, deriv, DerivativeLayoutNS::value > &y)
Definition: tensor.hh:534
Derivatives< F, dimD, dimR, deriv, DerivativeLayoutNS::derivative > This
Definition: tensor.hh:490
Derivatives< F, dimD, 1, deriv, DerivativeLayoutNS::value > ScalarDeriv
Definition: tensor.hh:491
void axpy(const FF &a, const This &y)
Definition: tensor.hh:522
Dune::FieldVector< F, size > Block
Definition: tensor.hh:501
Dune::FieldVector< ScalarDeriv, dimR > deriv_
Definition: tensor.hh:562
void assign(const Derivatives< Fy, dimD, dimR, deriv, DerivativeLayoutNS::derivative > &y)
Definition: tensor.hh:528
Definition: tensor.hh:570
static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
Definition: tensor.hh:572
static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
Definition: tensor.hh:586
Derivatives< F1, dimD, dimR, d, DerivativeLayoutNS::value > Vec1
Definition: tensor.hh:584
Derivatives< F1, dimD, dimR, d, DerivativeLayoutNS::derivative > Vec1
Definition: tensor.hh:600
static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
Definition: tensor.hh:602
Derivatives< F1, dimD, 1, d, DerivativeLayoutNS::derivative > Vec1
Definition: tensor.hh:616
static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
Definition: tensor.hh:618
static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
Definition: tensor.hh:633
Derivatives< F1, dimD, 1, d, DerivativeLayoutNS::value > Vec1
Definition: tensor.hh:631
Definition: tensor.hh:649
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:650
Derivatives< F1, dimD, dimR, deriv, layout > Vec1
Definition: tensor.hh:660
Derivatives< F2, dimD, dimR, deriv, layout > Vec2
Definition: tensor.hh:661
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:662
Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::value > Vec1
Definition: tensor.hh:672
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:674
Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::derivative > Vec2
Definition: tensor.hh:673
Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::value > Vec2
Definition: tensor.hh:685
Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::derivative > Vec1
Definition: tensor.hh:684
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:686
Derivatives< F1, dimD, 1, deriv, layout > Vec1
Definition: tensor.hh:696
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:698
Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::value > Vec2
Definition: tensor.hh:697
Derivatives< F1, dimD, 1, deriv, layout > Vec1
Definition: tensor.hh:708
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:710
Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::derivative > Vec2
Definition: tensor.hh:709
Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value > Vec1
Definition: tensor.hh:720
Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::value > Vec2
Definition: tensor.hh:721
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:722
Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative > Vec1
Definition: tensor.hh:732
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:734
Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::derivative > Vec2
Definition: tensor.hh:733
Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::value > Vec2
Definition: tensor.hh:745
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:746
Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative > Vec1
Definition: tensor.hh:744
Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::derivative > Vec2
Definition: tensor.hh:757
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:758
Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value > Vec1
Definition: tensor.hh:756
F2 Vec2
Definition: tensor.hh:769
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:770
Derivatives< F1, dimD, 1, deriv, layout > Vec1
Definition: tensor.hh:768
Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::value > Vec1
Definition: tensor.hh:780
FieldVector< F2, dimR > Vec2
Definition: tensor.hh:781
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:782
Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::derivative > Vec1
Definition: tensor.hh:792
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:794
FieldVector< F2, dimR > Vec2
Definition: tensor.hh:793
Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value > Vec1
Definition: tensor.hh:805
FieldVector< F2, dimR > Vec2
Definition: tensor.hh:806
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:807
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:819
Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative > Vec1
Definition: tensor.hh:817
FieldVector< F2, dimR > Vec2
Definition: tensor.hh:818
FieldVector< F2, 1 > Vec2
Definition: tensor.hh:830
Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value > Vec1
Definition: tensor.hh:829
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:831
Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative > Vec1
Definition: tensor.hh:841
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:843
FieldVector< F2, 1 > Vec2
Definition: tensor.hh:842