10 #include <dune/common/fvector.hh>
29 template <
class F,
int dimD,
unsigned int deriv>
39 typedef Dune::FieldVector<F,size>
Block;
91 template <
class F,
unsigned int deriv>
103 template <
class F,
int dimD>
111 typedef Dune::FieldVector<F,size>
Block;
166 template <
class F,
int dimD,
int dimR,
unsigned int deriv,
171 template <
class F,
int dimD,
int dimR,
unsigned int deriv>
183 static const unsigned int dimDomain = dimD;
184 static const unsigned int dimRange = dimR;
186 enum { size = Base::size+ThisLFETensor::size*dimR };
187 typedef Dune::FieldVector<F,size>
Block;
199 template <
unsigned int dorder>
202 tensor<dorder>() = t;
219 block().axpy(a,y.
block());
233 for (
int rr=0; rr<dimR; ++rr)
234 tensor_[rr] = y[rr].
template tensor<deriv>()[0];
237 template <
class Fy,
int dimRy>
240 assign<Fy,dimRy>(y.block(),r);
256 return reinterpret_cast<Block&
>(*this);
260 return reinterpret_cast<const Block&
>(*this);
263 template <
unsigned int dorder>
264 const Dune::FieldVector<LFETensor<F,dimD,dorder>,dimR> &
tensor()
const
267 const integral_constant<int,dorder> a = {};
270 template <
unsigned int dorder>
271 Dune::FieldVector<LFETensor<F,dimD,dorder>,dimR> &
tensor()
274 return tensor(integral_constant<int,dorder>());
276 template <
unsigned int dorder>
277 const Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR> &
block()
const
280 const integral_constant<int,dorder> a = {};
281 return reinterpret_cast<const Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR
>&>(tensor(a));
283 template <
unsigned int dorder>
284 Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR> &
block()
287 const integral_constant<int,dorder> a = {};
288 return reinterpret_cast<Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR
>&>(tensor(a));
297 template <
class Fy,
int dimRy>
298 void assign(
const FieldVector<Fy,size*dimRy> &y,
unsigned int r)
300 Base::template assign<Fy,dimRy>(
reinterpret_cast<const FieldVector<Fy,Base::size*dimRy>&
>(y),r);
301 tensor_[0] =
reinterpret_cast<const FieldVector<Fy,ThisLFETensor::size>&
>(y[Base::size*dimRy+r*ThisLFETensor::size]);
304 void assign(
unsigned int r,
const FieldVector<Fy,size/dimR> &y)
306 Base::assign(r,
reinterpret_cast<const FieldVector<Fy,Base::size/dimR
>&>(y));
307 tensor_[r] =
reinterpret_cast<const FieldVector<Fy,ThisLFETensor::size>&
>(y[Base::size/dimR]);
310 template <
class Fy,
unsigned int dy>
314 for (
int rr=0; rr<dimR; ++rr)
315 tensor_[rr] = y[rr].
template tensor<deriv>()[0];
318 template <
int dorder>
319 const Dune::FieldVector<LFETensor<F,dimD,dorder>,dimR> &
320 tensor(
const integral_constant<int,dorder> &dorderVar)
const
322 return Base::tensor(dorderVar);
324 const Dune::FieldVector<LFETensor<F,dimD,deriv>,dimR> &
325 tensor(
const integral_constant<int,deriv> &dorderVar)
const
329 template <
int dorder>
330 Dune::FieldVector<LFETensor<F,dimD,dorder>,dimR> &
331 tensor(
const integral_constant<int,dorder> &dorderVar)
333 return Base::tensor(dorderVar);
335 Dune::FieldVector<LFETensor<F,dimD,deriv>,dimR> &
336 tensor(
const integral_constant<int,deriv> &dorderVar)
340 Dune::FieldVector<ThisLFETensor,dimR>
tensor_;
343 template <
class F,
int dimD,
int dimR>
353 static const unsigned int dimDomain = dimD;
354 static const unsigned int dimRange = dimR;
356 enum { size = ThisLFETensor::size*dimR };
357 typedef Dune::FieldVector<F,size>
Block;
362 for (
int r=0; r<dimR; ++r)
363 tensor_[r] = field_cast<F>(f);
386 block().axpy(a,y.
block());
396 for (
int rr=0; rr<dimR; ++rr)
397 tensor_[rr] = y[rr].
template tensor<0>()[0];
399 template <
class Fy,
int dimRy>
402 assign<Fy,dimRy>(y.block(),r);
407 tensor_[r].assign(y[0]);
412 tensor_[r].assign(y[0][0]);
417 return reinterpret_cast<Block&
>(*this);
421 return reinterpret_cast<const Block&
>(*this);
430 template <
int dorder>
431 const Dune::FieldVector<LFETensor<F,dimD,0>,dimR> &
tensor()
const
435 Dune::FieldVector<LFETensor<F,dimD,0>,dimR> &
tensor()
439 template <
unsigned int dorder>
440 const Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR> &
block()
const
443 const integral_constant<int,dorder> a = {};
444 return reinterpret_cast<const Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR
>&>(tensor(a));
446 template <
unsigned int dorder>
447 Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR> &
block()
450 const integral_constant<int,dorder> a = {};
451 return reinterpret_cast<Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR
>&>(tensor(a));
455 const Dune::FieldVector<LFETensor<F,dimD,0>,dimR> &
456 tensor(
const integral_constant<int,0> &dorderVar)
const
460 Dune::FieldVector<LFETensor<F,dimD,0>,dimR> &
461 tensor(
const integral_constant<int,0> &dorderVar)
465 template <
class Fy,
unsigned int dy>
468 for (
int rr=0; rr<dimR; ++rr)
469 tensor_[rr] = y[rr].
template tensor<0>()[0];
471 template <
class Fy,
int dimRy>
472 void assign(
const FieldVector<Fy,size*dimRy> &y,
unsigned int r)
474 tensor_[0] =
reinterpret_cast<const FieldVector<Fy,ThisLFETensor::size>&
>(y[r*ThisLFETensor::size]);
477 void assign(
unsigned int r,
const FieldVector<Fy,size/dimR> &y)
481 Dune::FieldVector<ThisLFETensor,dimR>
tensor_;
485 template <
class F,
int dimD,
int dimR,
unsigned int deriv>
495 static const unsigned int dimDomain = dimD;
496 static const unsigned int dimRange = dimR;
498 enum { size = ScalarDeriv::size*dimR };
499 typedef Dune::FieldVector<F,size>
Block;
522 block().axpy(field_cast<F>(a),y.
block());
534 for (
unsigned int rr=0; rr<dimR; ++rr)
535 deriv_[rr].assign(y,rr);
538 template <
class Fy,DerivativeLayout layouty>
541 deriv_[r].assign(r,y);
546 return reinterpret_cast<Block&
>(*this);
550 return reinterpret_cast<const Block&
>(*this);
560 Dune::FieldVector<ScalarDeriv,dimR>
deriv_;
566 template <
class Vec1,
class Vec2,
unsigned int deriv>
569 template <
class Field>
570 static void apply(
unsigned int r,
const Field &a,
571 const Vec1 &x, Vec2 &y)
576 template <
class F1,
int dimD,
int dimR,
583 template <
class Field>
584 static void apply(
unsigned int r,
const Field &a,
585 const Vec1 &x, Vec2 &y)
587 const FieldVector<F1,Vec2::size> &xx = x.template block<deriv>();
588 for (
int i=0; i<y.size; ++i)
592 template <
class F1,
int dimD,
int dimR,
599 template <
class Field>
600 static void apply(
unsigned int r,
const Field &a,
601 const Vec1 &x, Vec2 &y)
603 for (
int rr=0; rr<dimR; ++rr)
605 Vec2,deriv>::
apply(rr,a,x[rr],y);
608 template <
class F1,
int dimD,
615 template <
class Field>
616 static void apply(
unsigned int r,
const Field &a,
617 const Vec1 &x, Vec2 &y)
620 Vec2,deriv>
::apply(r,a,x[0],y);
623 template <
class F1,
int dimD,
630 template <
class Field>
631 static void apply(
unsigned int r,
const Field &a,
632 const Vec1 &x, Vec2 &y)
635 const unsigned int rr = r*LFETensorType::size;
636 const FieldVector<F1,LFETensorType::size> &xx = x.template block<deriv>();
637 for (
int i=0; i<FieldVector<F1,LFETensorType::size>::dimension; ++i)
645 template <
class Vec1,
class Vec2>
648 static void apply(
unsigned int r,
const Vec1 &vec1,Vec2 &vec2)
665 template <
int dimD,
int dimR,
unsigned int deriv,
677 template <
int dimD,
int dimR,
unsigned int deriv,
713 template <
int dimD,
unsigned int deriv,
725 template <
int dimD,
unsigned int deriv,
737 template <
int dimD,
unsigned int deriv,
749 template <
int dimD,
unsigned int deriv,
773 template <
int dimD,
int dimR,
774 class F1,
unsigned int deriv,
779 typedef FieldVector<F2,dimR>
Vec2;
785 template <
int dimD,
int dimR,
786 class F1,
unsigned int deriv,
791 typedef FieldVector<F2,dimR>
Vec2;
794 for (
int rr=0; rr<dimR; ++rr)
795 field_cast(vec1[rr].
template tensor<0>()[0].block(),vec2[rr]);
799 class F1,
unsigned int deriv,
804 typedef FieldVector<F2,dimR>
Vec2;
807 field_cast(vec1.template tensor<0>()[0].block(),vec2[r]);
811 class F1,
unsigned int deriv,
816 typedef FieldVector<F2,dimR>
Vec2;
819 field_cast(vec1[0].
template tensor<0>()[0].block(),vec2[r]);
823 class F1,
unsigned int deriv,
828 typedef FieldVector<F2,1>
Vec2;
831 field_cast(vec1.template tensor<0>()[0].block(),vec2);
835 class F1,
unsigned int deriv,
840 typedef FieldVector<F2,1>
Vec2;
843 field_cast(vec1[0].
template tensor<0>()[0].block(),vec2);
850 template <
class F,
int dimD,
unsigned int deriv>
851 std::ostream &operator<< ( std::ostream &out, const LFETensor< F,dimD,deriv > &tensor )
853 return out << tensor.block();
856 template <
class F,
int dimD,
unsigned int deriv>
857 std::ostream &operator<< ( std::ostream &out, const ScalarDerivatives< F,dimD,deriv > &d )
859 out <<
static_cast<const ScalarDerivatives< F,dimD,deriv-1
> &>(d);
860 out <<
" , " << d.tensor() << std::endl;
863 template <
class F,
int dimD>
864 std::ostream &operator<< ( std::ostream &out, const ScalarDerivatives< F,dimD,0 > &d )
866 out << d.tensor() << std::endl;
870 template <
class F,
int dimD,
int dimR,
unsigned int deriv>
871 std::ostream &operator<< ( std::ostream &out, const Derivatives< F,dimD,dimR,deriv,derivative > &d )
875 for (
int r=1; r<dimR; ++r)
877 out <<
" , " << d[r];
879 out <<
" ) " << std::endl;
882 template <
class F,
int dimD,
int dimR,
unsigned int deriv>
883 std::ostream &operator<< ( std::ostream &out, const Derivatives< F,dimD,dimR,deriv,value > &d )
888 for (
int r=1; r<dimR; ++r)
890 out <<
" , " << d[r];
892 out <<
" ) " << std::endl;
895 template <
class F,
int dimD,
int dimR>
896 std::ostream &operator<< ( std::ostream &out, const Derivatives< F,dimD,dimR,0,derivative > &d )
900 for (
int r=1; r<dimR; ++r)
902 out <<
" , " << d[r];
904 out <<
" ) " << std::endl;
907 template <
class F,
int dimD,
int dimR>
908 std::ostream &operator<< ( std::ostream &out, const Derivatives< F,dimD,dimR,0,value > &d )
912 for (
int r=1; r<dimR; ++r)
914 out <<
" , " << d[r];
916 out <<
" ) " << std::endl;
919 template <
class F,
int dimD,
int dimR,
unsigned int deriv,DerivativeLayout layout>
920 std::ostream &operator<< ( std::ostream &out, const std::vector<Derivatives< F,dimD,dimR,deriv,layout > > &y )
922 out <<
"Number of basis functions: " << y.size() << std::endl;
923 for (
unsigned int i=0; i<y.size(); ++i)
925 out <<
"Base " << i <<
" : " << std::endl;
932 #endif // DUNE_TENSOR_HH
Derivatives< F2, dimD, dimR, deriv, value > Vec2
Definition: tensor.hh:683
Derivatives< F2, dimD, 1, deriv, value > Vec2
Definition: tensor.hh:743
static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
Definition: tensor.hh:616
Derivatives< F2, dimD, dimR, deriv, derivative > Vec2
Definition: tensor.hh:671
FieldVector< F2, dimR > Vec2
Definition: tensor.hh:816
void assign(const Derivatives< Fy, dimD, dimR, 0, value > &y)
Definition: tensor.hh:389
This & operator*=(const field_type &f)
Definition: tensor.hh:54
Dune::FieldVector< LFETensor< F, dimD, deriv >, dimR > & tensor(const integral_constant< int, deriv > &dorderVar)
Definition: tensor.hh:336
Block & block()
Definition: tensor.hh:544
void axpy(const F &a, const This &y)
Definition: tensor.hh:384
Derivatives< F2, dimD, dimR, deriv, value > Vec2
Definition: tensor.hh:695
Derivatives< F1, dimD, 1, deriv, value > Vec1
Definition: tensor.hh:754
void axpy(const FF &a, const This &y)
Definition: tensor.hh:520
LFETensor< F, dimD, 0 > ThisLFETensor
Definition: tensor.hh:347
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:696
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:660
F field_type
Definition: tensor.hh:109
Derivatives< F, dimD, dimR, 0, value > This
Definition: tensor.hh:346
const Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor() const
Definition: tensor.hh:431
Dune::FieldVector< F, size > Block
Definition: tensor.hh:111
This & operator=(const FF &f)
Definition: tensor.hh:502
Derivatives< F1, dimD, 1, deriv, value > Vec1
Definition: tensor.hh:718
void assign(const Derivatives< Fy, dimD, dimRy, 0, value > &y, unsigned int r)
Definition: tensor.hh:400
void assign(unsigned int r, const Derivatives< Fy, dimD, 1, deriv, layouty > &y)
Definition: tensor.hh:539
Derivatives< F1, dimD, 1, deriv, layout > Vec1
Definition: tensor.hh:694
Derivatives< F1, dimD, dimR, deriv, layout > Vec1
Definition: tensor.hh:658
const Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor(const integral_constant< int, 0 > &dorderVar) const
Definition: tensor.hh:456
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:841
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:805
Block block_
Definition: tensor.hh:87
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:780
Definition: tensor.hh:486
This & operator=(const FF &f)
Definition: tensor.hh:360
Derivatives< F1, dimD, 1, deriv, derivative > Vec1
Definition: tensor.hh:730
FieldVector< F2, dimR > Vec2
Definition: tensor.hh:779
Derivatives< F2, dimD, 1, deriv, derivative > Vec2
Definition: tensor.hh:755
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:648
Derivatives< F1, dimD, 1, deriv, layout > Vec1
Definition: tensor.hh:766
const Block & block() const
Definition: tensor.hh:258
Block & block()
Definition: tensor.hh:70
void axpy(const F &a, const This &y)
Definition: tensor.hh:217
Definition: tensor.hh:104
void assign(const FieldVector< Fy, size *dimRy > &y, unsigned int r)
Definition: tensor.hh:298
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:684
Dune::FieldVector< F, size > Block
Definition: tensor.hh:39
Derivatives< F1, dimD, 1, d, derivative > Vec1
Definition: tensor.hh:614
const Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block() const
Definition: tensor.hh:440
F Field
Definition: tensor.hh:491
Derivatives< F1, dimD, dimR, deriv, value > Vec1
Definition: tensor.hh:778
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:756
FieldVector< F2, dimR > Vec2
Definition: tensor.hh:791
void assign(const LFETensor< Fy, dimD, deriv > &y)
Definition: tensor.hh:83
Derivatives< F1, dimD, dimR, d, derivative > Vec1
Definition: tensor.hh:598
Derivatives< F1, dimD, dimR, deriv, value > Vec1
Definition: tensor.hh:670
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:829
Definition: tensor.hh:646
Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor()
Definition: tensor.hh:271
Block & block()
Definition: tensor.hh:152
F Field
Definition: tensor.hh:349
Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor()
Definition: tensor.hh:435
Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor(const integral_constant< int, dorder > &dorderVar)
Definition: tensor.hh:331
Derivatives< F, dimD, 1, deriv, value > ScalarDeriv
Definition: tensor.hh:489
void assign(const Derivatives< Fy, dimD, dimR, deriv, value > &y)
Definition: tensor.hh:532
Dune::FieldVector< ThisLFETensor, dimR > tensor_
Definition: tensor.hh:340
const Dune::FieldVector< LFETensor< F, dimD, deriv >, dimR > & tensor(const integral_constant< int, deriv > &dorderVar) const
Definition: tensor.hh:325
This & operator=(const Dune::FieldVector< ThisLFETensor, dimR > &t)
Definition: tensor.hh:194
const Block & block() const
Definition: tensor.hh:156
void assign(const Derivatives< Fy, dimD, dimR, dy, derivative > &y)
Definition: tensor.hh:466
Dune::FieldVector< F, size > Block
Definition: tensor.hh:357
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:768
Dune::FieldVector< F, size > Block
Definition: tensor.hh:499
Derivatives< F1, dimD, 1, deriv, derivative > Vec1
Definition: tensor.hh:815
const ThisLFETensor & operator[](int r) const
Definition: tensor.hh:293
Definition: tensor.hh:172
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:744
Definition: tensor.hh:165
This & operator=(const Block &t)
Definition: tensor.hh:205
void axpy(const F &a, const This &y)
Definition: tensor.hh:78
Derivatives< F1, dimD, 1, deriv, derivative > Vec1
Definition: tensor.hh:839
static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
Definition: tensor.hh:631
Definition: tensor.hh:344
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:708
const ScalarDeriv & operator[](int r) const
Definition: tensor.hh:556
Derivatives< F, dimD, dimR, deriv-1, value > Base
Definition: tensor.hh:176
void axpy(const F &a, const This &y)
Definition: tensor.hh:142
F2 Vec2
Definition: tensor.hh:767
Derivatives< F1, dimD, 1, d, value > Vec1
Definition: tensor.hh:629
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:732
void assign(const Derivatives< Fy, dimD, dimRy, deriv, value > &y, unsigned int r)
Definition: tensor.hh:238
Derivatives< F1, dimD, dimR, d, value > Vec1
Definition: tensor.hh:582
Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block()
Definition: tensor.hh:284
static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
Definition: tensor.hh:570
This & operator=(const FF &f)
Definition: tensor.hh:42
F field_type
Definition: tensor.hh:492
void assign(unsigned int r, const Derivatives< Fy, dimD, 1, deriv, derivative > &y)
Definition: tensor.hh:249
Derivatives< F2, dimD, 1, deriv, value > Vec2
Definition: tensor.hh:719
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:672
F Field
Definition: tensor.hh:179
This & operator=(const Block &t)
Definition: tensor.hh:372
Derivatives< F1, dimD, dimR, deriv, derivative > Vec1
Definition: tensor.hh:790
FieldVector< F2, dimR > Vec2
Definition: tensor.hh:804
void assign(const FieldVector< Fy, size *dimRy > &y, unsigned int r)
Definition: tensor.hh:472
This & operator=(const F &f)
Definition: tensor.hh:189
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:720
void assign(unsigned int r, const FieldVector< Fy, size/dimR > &y)
Definition: tensor.hh:304
const Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor(const integral_constant< int, dorder > &dorderVar) const
Definition: tensor.hh:320
This & operator=(const Block &t)
Definition: tensor.hh:507
Derivatives< F1, dimD, 1, deriv, derivative > Vec1
Definition: tensor.hh:742
Block block_
Definition: tensor.hh:160
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:792
Derivatives< F, dimD, dimR, deriv, value > This
Definition: tensor.hh:175
Definition: tensor.hh:165
Dune::FieldVector< F, size > Block
Definition: tensor.hh:187
Derivatives< F2, dimD, dimR, deriv, derivative > Vec2
Definition: tensor.hh:707
const field_type & operator[](const unsigned int i) const
Definition: tensor.hh:60
void assign(const Derivatives< Fy, dimD, dimR, dy, derivative > &y)
Definition: tensor.hh:311
Derivatives< F1, dimD, 1, deriv, value > Vec1
Definition: tensor.hh:803
void assign(unsigned int r, const Derivatives< Fy, dimD, 1, 0, value > &y)
Definition: tensor.hh:405
FieldVector< F2, 1 > Vec2
Definition: tensor.hh:840
F field_type
Definition: tensor.hh:350
static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
Definition: tensor.hh:584
void assign(const Derivatives< Fy, dimD, dimR, deriv, derivative > &y)
Definition: tensor.hh:230
const Block & block() const
Definition: tensor.hh:548
F field_type
Definition: tensor.hh:180
const Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block() const
Definition: tensor.hh:277
Derivatives< F1, dimD, 1, deriv, layout > Vec1
Definition: tensor.hh:706
void assign(const Derivatives< Fy, dimD, dimR, deriv, derivative > &y)
Definition: tensor.hh:526
DerivativeLayout
Definition: tensor.hh:165
ScalarDeriv & operator[](int r)
Definition: tensor.hh:553
static const unsigned int size
Definition: tensor.hh:38
Definition: tensor.hh:168
void assign(unsigned int r, const Derivatives< Fy, dimD, 1, 0, derivative > &y)
Definition: tensor.hh:410
void field_cast(const F1 &f1, F2 &f2)
a helper class to cast from one field to another
Definition: field.hh:157
Derivatives< F1, dimD, dimR, deriv, derivative > Vec1
Definition: tensor.hh:682
Derivatives< F, dimD, dimR, deriv, derivative > This
Definition: tensor.hh:488
LFETensor< F, dimD, deriv > ThisLFETensor
Definition: tensor.hh:177
Derivatives< F1, dimD, 1, deriv, value > Vec1
Definition: tensor.hh:827
Block & block()
Definition: tensor.hh:254
const Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor() const
Definition: tensor.hh:264
Dune::FieldVector< ThisLFETensor, dimR > tensor_
Definition: tensor.hh:481
void assign(const Derivatives< Fy, dimD, dimR, deriv, value > &y)
Definition: tensor.hh:224
FieldVector< F2, 1 > Vec2
Definition: tensor.hh:828
ThisLFETensor & operator[](int r)
Definition: tensor.hh:290
Derivatives< F2, dimD, dimR, deriv, layout > Vec2
Definition: tensor.hh:659
static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
Definition: tensor.hh:817
Derivatives< F2, dimD, 1, deriv, derivative > Vec2
Definition: tensor.hh:731
Definition: tensor.hh:567
Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block()
Definition: tensor.hh:447
static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
Definition: tensor.hh:600
const Block & block() const
Definition: tensor.hh:419
const ThisLFETensor & operator[](int r) const
Definition: tensor.hh:427
This & operator=(const Dune::FieldVector< ThisLFETensor, dimR > &t)
Definition: tensor.hh:366
Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor(const integral_constant< int, 0 > &dorderVar)
Definition: tensor.hh:461
This & operator=(const Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > &t)
Definition: tensor.hh:200
void assign(unsigned int r, const Derivatives< Fy, dimD, 1, deriv, value > &y)
Definition: tensor.hh:244
const Block & block() const
Definition: tensor.hh:74
Dune::FieldVector< ScalarDeriv, dimR > deriv_
Definition: tensor.hh:560
F field_type
Definition: tensor.hh:37
ThisLFETensor & operator[](int r)
Definition: tensor.hh:424
void assign(unsigned int r, const FieldVector< Fy, size/dimR > &y)
Definition: tensor.hh:477
void assign(const Derivatives< Fy, dimD, dimR, 0, derivative > &y)
Definition: tensor.hh:394
Block & block()
Definition: tensor.hh:415
void assign(const LFETensor< Fy, dimD, 0 > &y)
Definition: tensor.hh:147