MarmotFastorTensorBasics.h
Go to the documentation of this file.
1 /* ---------------------------------------------------------------------
2  * _
3  * _ __ ___ __ _ _ __ _ __ ___ ___ | |_
4  * | '_ ` _ \ / _` | '__| '_ ` _ \ / _ \| __|
5  * | | | | | | (_| | | | | | | | | (_) | |_
6  * |_| |_| |_|\__,_|_| |_| |_| |_|\___/ \__|
7  *
8  * Unit of Strength of Materials and Structural Analysis
9  * University of Innsbruck,
10  * 2020 - today
11  *
12  * festigkeitslehre@uibk.ac.at
13  *
14  * Matthias Neuner matthias.neuner@uibk.ac.at
15  *
16  * This file is part of the MAteRialMOdellingToolbox (marmot).
17  *
18  * This library is free software; you can redistribute it and/or
19  * modify it under the terms of the GNU Lesser General Public
20  * License as published by the Free Software Foundation; either
21  * version 2.1 of the License, or (at your option) any later version.
22  *
23  * The full text of the license can be found in the file LICENSE.md at
24  * the top level directory of marmot.
25  * ---------------------------------------------------------------------
26  */
27 #pragma once
28 #include "Eigen/Core"
29 #include "Fastor/Fastor.h"
30 #include "Marmot/MarmotTensor.h"
31 #include <autodiff/forward/dual/dual.hpp>
32 
33 namespace Marmot {
34 
35  namespace FastorStandardTensors {
36 
37  using Tensor3d = Fastor::Tensor< double, 3 >;
38  using Tensor33d = Fastor::Tensor< double, 3, 3 >;
39  using Tensor333d = Fastor::Tensor< double, 3, 3, 3 >;
40  using Tensor3333d = Fastor::Tensor< double, 3, 3, 3, 3 >;
41 
42  template < typename T >
43  using Tensor3t = Fastor::Tensor< T, 3 >;
44  template < typename T >
45  using Tensor33t = Fastor::Tensor< T, 3, 3 >;
46  template < typename T >
47  using Tensor333t = Fastor::Tensor< T, 3, 3, 3 >;
48  template < typename T >
49  using Tensor3333t = Fastor::Tensor< T, 3, 3, 3, 3 >;
50 
51  using TensorMap3d = Fastor::TensorMap< double, 3 >;
52  using TensorMap33d = Fastor::TensorMap< double, 3, 3 >;
53  using TensorMap333d = Fastor::TensorMap< double, 3, 3, 3 >;
54  using TensorMap3333d = Fastor::TensorMap< double, 3, 3, 3, 3 >;
55 
56  namespace Spatial3D {
57  inline const Tensor33d I = Tensor33d( ( Eigen::Matrix3d() << Eigen::Matrix3d::Identity() ).finished().data(),
58  Fastor::ColumnMajor );
59 
61  Fastor::ColumnMajor );
62 
64  Fastor::ColumnMajor );
65 
67  Fastor::ColumnMajor );
68 
70  Fastor::ColumnMajor );
71 
73  Fastor::ColumnMajor );
74 
75  inline const Tensor3333d
77  Fastor::ColumnMajor );
78 
79  inline const Tensor3333d Deviatoric = I4 - 1. / 3 * IHyd;
80 
81  inline const Tensor3333d DeviatoricTranspose = Fastor::transpose( DeviatoricTranspose );
82 
83  inline const Tensor3333d DeviatoricSymmetric = ISymm - 1. / 3 * IHyd;
84 
85  } // namespace Spatial3D
86 
87  } // namespace FastorStandardTensors
88 
89  namespace FastorIndices {
90  enum { i_, j_, k_, l_, m_, n_, A_, B_, I_, J_, K_, L_, M_, N_, P_ };
91 
92  using A = Fastor::Index< A_ >;
93  using Ai = Fastor::Index< A_, i_ >;
94  using AB = Fastor::Index< A_, B_ >;
95  using B = Fastor::Index< B_ >;
96  using IJ = Fastor::Index< I_, J_ >;
97  using IJKL = Fastor::Index< I_, J_, K_, L_ >;
98  using IJML = Fastor::Index< I_, J_, M_, L_ >;
99  using IK = Fastor::Index< I_, K_ >;
100  using Ii = Fastor::Index< I_, i_ >;
101  using IikK = Fastor::Index< I_, i_, k_, K_ >;
102  using Ik = Fastor::Index< I_, k_ >;
103  using IL = Fastor::Index< I_, L_ >;
104  using Im = Fastor::Index< I_, m_ >;
105  using JI = Fastor::Index< J_, I_ >;
106  using JK = Fastor::Index< J_, K_ >;
107  using JL = Fastor::Index< J_, L_ >;
108  using Jk = Fastor::Index< J_, k_ >;
109  using KI = Fastor::Index< K_, I_ >;
110  using KJ = Fastor::Index< K_, J_ >;
111  using KJN = Fastor::Index< K_, J_, N_ >;
112  using KL = Fastor::Index< K_, L_ >;
113  using KLMN = Fastor::Index< K_, L_, M_, N_ >;
114  using KLMP = Fastor::Index< K_, L_, M_, P_ >;
115  using KLNM = Fastor::Index< K_, L_, N_, M_ >;
116  using KLPM = Fastor::Index< K_, L_, P_, M_ >;
117  using KLm = Fastor::Index< K_, L_, m_ >;
118  using KMJ = Fastor::Index< K_, M_, J_ >;
119  using KMN = Fastor::Index< K_, M_, N_ >;
120  using Ki = Fastor::Index< K_, i_ >;
121  using Kk = Fastor::Index< K_, k_ >;
122  using L = Fastor::Index< L_ >;
123  using LI = Fastor::Index< L_, I_ >;
124  using LK = Fastor::Index< L_, K_ >;
125  using LN = Fastor::Index< L_, N_ >;
126  using Lm = Fastor::Index< L_, m_ >;
127  using LmN = Fastor::Index< L_, m_, N_ >;
128  using MJKL = Fastor::Index< M_, J_, K_, L_ >;
129  using MK = Fastor::Index< M_, K_ >;
130  using ML = Fastor::Index< M_, L_ >;
131  using MNL = Fastor::Index< M_, N_, L_ >;
132  using MPm = Fastor::Index< M_, P_, m_ >;
133  using Mi = Fastor::Index< M_, i_ >;
134  using NLJl = Fastor::Index< N_, L_, J_, l_ >;
135  using Nm = Fastor::Index< N_, m_ >;
136  using Pm = Fastor::Index< P_, m_ >;
137  using i = Fastor::Index< i_ >;
138  using iA = Fastor::Index< i_, A_ >;
139  using iAkB = Fastor::Index< i_, A_, k_, B_ >;
140  using iB = Fastor::Index< i_, B_ >;
141  using iI = Fastor::Index< i_, I_ >;
142  using iIKL = Fastor::Index< i_, I_, K_, L_ >;
143  using iIjJ = Fastor::Index< i_, I_, j_, J_ >;
144  using iIkK = Fastor::Index< i_, I_, k_, K_ >;
145  using iIkL = Fastor::Index< i_, I_, k_, L_ >;
146  using iImn = Fastor::Index< i_, I_, m_, n_ >;
147  using iJ = Fastor::Index< i_, J_ >;
148  using iJKL = Fastor::Index< i_, J_, K_, L_ >;
149  using iJLl = Fastor::Index< i_, J_, L_, l_ >;
150  using iJkL = Fastor::Index< i_, J_, k_, L_ >;
151  using iJl = Fastor::Index< i_, J_, l_ >;
152  using iK = Fastor::Index< i_, K_ >;
153  using iKjL = Fastor::Index< i_, K_, j_, L_ >;
154  using iL = Fastor::Index< i_, L_ >;
155  using iM = Fastor::Index< i_, M_ >;
156  using iN = Fastor::Index< i_, N_ >;
157  using iNL = Fastor::Index< i_, N_, L_ >;
158  using ij = Fastor::Index< i_, j_ >;
159  using ijB = Fastor::Index< i_, j_, B_ >;
160  using ijKJ = Fastor::Index< i_, j_, K_, J_ >;
161  using ijKL = Fastor::Index< i_, j_, K_, L_ >;
162  using ijL = Fastor::Index< i_, j_, L_ >;
163  using ijLm = Fastor::Index< i_, j_, L_, m_ >;
164  using ijk = Fastor::Index< i_, j_, k_ >;
165  using ijkB = Fastor::Index< i_, j_, k_, B_ >;
166  using ijkK = Fastor::Index< i_, j_, k_, K_ >;
167  using ijkl = Fastor::Index< i_, j_, k_, l_ >;
168  using ijl = Fastor::Index< i_, j_, l_ >;
169  using ijm = Fastor::Index< i_, j_, m_ >;
170  using ijmn = Fastor::Index< i_, j_, m_, n_ >;
171  using ijnk = Fastor::Index< i_, j_, n_, k_ >;
172  using ijnm = Fastor::Index< i_, j_, n_, m_ >;
173  using ik = Fastor::Index< i_, k_ >;
174  using im = Fastor::Index< i_, m_ >;
175  using imk = Fastor::Index< i_, m_, k_ >;
176  using imkl = Fastor::Index< i_, m_, k_, l_ >;
177  using imL = Fastor::Index< i_, m_, L_ >;
178  using imLk = Fastor::Index< i_, m_, L_, k_ >;
179  using in = Fastor::Index< i_, n_ >;
180  using inB = Fastor::Index< i_, n_, B_ >;
181  using inkB = Fastor::Index< i_, n_, k_, B_ >;
182  using j = Fastor::Index< j_ >;
183  using jA = Fastor::Index< j_, A_ >;
184  using jB = Fastor::Index< j_, B_ >;
185  using jJ = Fastor::Index< j_, J_ >;
186  using jL = Fastor::Index< j_, L_ >;
187  using jLm = Fastor::Index< j_, L_, m_ >;
188  using ji = Fastor::Index< j_, i_ >;
189  using jin = Fastor::Index< j_, i_, n_ >;
190  using jk = Fastor::Index< j_, k_ >;
191  using jK = Fastor::Index< j_, K_ >;
192  using jkB = Fastor::Index< j_, k_, B_ >;
193  using jkl = Fastor::Index< j_, k_, l_ >;
194  using jl = Fastor::Index< j_, l_ >;
195  using k = Fastor::Index< k_ >;
196  using kA = Fastor::Index< k_, A_ >;
197  using kB = Fastor::Index< k_, B_ >;
198  using kI = Fastor::Index< k_, I_ >;
199  using kK = Fastor::Index< k_, K_ >;
200  using kL = Fastor::Index< k_, L_ >;
201  using kM = Fastor::Index< k_, M_ >;
202  using kNL = Fastor::Index< k_, N_, L_ >;
203  using kj = Fastor::Index< k_, j_ >;
204  using kJ = Fastor::Index< k_, J_ >;
205  using kl = Fastor::Index< k_, l_ >;
206  using km = Fastor::Index< k_, m_ >;
207  using l = Fastor::Index< l_ >;
208  using lB = Fastor::Index< l_, B_ >;
209  using lm = Fastor::Index< l_, m_ >;
210  using m = Fastor::Index< m_ >;
211  using mK = Fastor::Index< m_, K_ >;
212  using mLl = Fastor::Index< m_, L_, l_ >;
213  using mj = Fastor::Index< m_, j_ >;
214  using mjL = Fastor::Index< m_, j_, L_ >;
215  using mn = Fastor::Index< m_, n_ >;
216  using mnKL = Fastor::Index< m_, n_, K_, L_ >;
217  using mnij = Fastor::Index< m_, n_, i_, j_ >;
218  using mnkB = Fastor::Index< m_, n_, k_, B_ >;
219  using mnkL = Fastor::Index< m_, n_, k_, L_ >;
220  using nB = Fastor::Index< n_, B_ >;
221 
222  using to_IJKL = Fastor::OIndex< I_, J_, K_, L_ >;
223  using to_IJkK = Fastor::OIndex< I_, J_, k_, K_ >;
224  using to_IJkL = Fastor::OIndex< I_, J_, k_, L_ >;
225  using to_IikK = Fastor::OIndex< I_, i_, k_, K_ >;
226  using to_IjkK = Fastor::OIndex< I_, j_, k_, K_ >;
227  using to_Ii = Fastor::OIndex< I_, i_ >;
228  using to_NLJl = Fastor::OIndex< N_, L_, J_, l_ >;
229  using to_iIKL = Fastor::OIndex< i_, I_, K_, L_ >;
230  using to_iIjJ = Fastor::OIndex< i_, I_, j_, J_ >;
231  using to_iImn = Fastor::OIndex< i_, I_, m_, n_ >;
232  using to_ij = Fastor::OIndex< i_, j_ >;
233  using to_ijIJ = Fastor::OIndex< i_, j_, I_, J_ >;
234  using to_ijKL = Fastor::OIndex< i_, j_, K_, L_ >;
235  using to_ijL = Fastor::OIndex< i_, j_, L_ >;
236  using to_ijLk = Fastor::OIndex< i_, j_, L_, k_ >;
237  using to_ijLm = Fastor::OIndex< i_, j_, L_, m_ >;
238  using to_ijk = Fastor::OIndex< i_, j_, k_ >;
239  using to_ijkK = Fastor::OIndex< i_, j_, k_, K_ >;
240  using to_ijkL = Fastor::OIndex< i_, j_, k_, L_ >;
241  using to_ijKl = Fastor::OIndex< i_, j_, K_, l_ >;
242  using to_ijkl = Fastor::OIndex< i_, j_, k_, l_ >;
243  using to_ijm = Fastor::OIndex< i_, j_, m_ >;
244  using to_ijmM = Fastor::OIndex< i_, j_, m_, M_ >;
245  using to_jAB = Fastor::OIndex< j_, A_, B_ >;
246  using to_jAkB = Fastor::OIndex< j_, A_, k_, B_ >;
247  using to_ji = Fastor::OIndex< j_, i_ >;
248  using to_jikL = Fastor::OIndex< j_, i_, k_, L_ >;
249  using to_jikl = Fastor::OIndex< j_, i_, k_, l_ >;
250  using to_jkiB = Fastor::OIndex< j_, k_, i_, B_ >;
251  using to_kK = Fastor::OIndex< k_, K_ >;
252  using to_kL = Fastor::OIndex< k_, L_ >;
253  } // namespace FastorIndices
254 
255  template < typename T,
256  size_t nRows,
257  size_t nCols,
258  typename = std::enable_if< !std::is_const< std::remove_reference< T > >::value > >
259  auto inline mapEigenToFastor( const Fastor::Tensor< T, nRows, nCols >& fastor )
260  {
261  return Eigen::Map< const Eigen::Matrix< T, nRows, nCols, Eigen::RowMajor > >( fastor.data() );
262  }
263 
264  template < typename T, size_t nRows, size_t nCols, typename = void >
265  auto inline mapEigenToFastor( Fastor::Tensor< T, nRows, nCols >& fastor )
266  {
267  return Eigen::Map< Eigen::Matrix< T, nRows, nCols, Eigen::RowMajor > >( fastor.data() );
268  }
269 
270  template < typename T, size_t nRows, typename = void >
271  auto inline mapEigenToFastor( const Fastor::Tensor< T, nRows >& fastor )
272  {
273  return Eigen::Map< Eigen::Matrix< T, nRows, 1 > >( fastor.data() );
274  }
275 
276  template < typename T, size_t nRows, typename = void >
277  auto inline mapEigenToFastor( const Fastor::TensorMap< T, nRows >& fastor )
278  {
279  return Eigen::Map< Eigen::Matrix< T, nRows, 1 > >( fastor.data() );
280  }
281 
282  template < typename T, size_t nRows, size_t nCols, typename = void >
283  auto inline mapEigenToFastor( const Fastor::TensorMap< T, nRows, nCols >& fastor )
284  {
285  return Eigen::Map< Eigen::Matrix< T, nRows, nCols, Eigen::RowMajor > >( fastor.data() );
286  }
287 
288  template < template < typename, size_t... > class TensorType, typename T, size_t... Rest >
289  void inline copyFastorToColumnMajor( T* target, const TensorType< T, Rest... >& source )
290  {
291  ( Fastor::TensorMap< T, Rest... >( target ) ) = Fastor::torowmajor( source );
292  }
293 
294  enum DimensionType { U, W };
295  template < DimensionType... dims, typename T, size_t... dims3D >
296  auto inline reduceTo2D( const Fastor::Tensor< T, dims3D... >& theTensor3D )
297  {
298 
299  static_assert( sizeof...( dims ) == sizeof...( dims3D ),
300  "CONVERSION PACK (1) AND TENSOR-ORDER PACK (2) MUST HAVE SAME LENGTH" );
301 
302  return theTensor3D( Fastor::fseq < dims == U ? 0 : 2, dims == U ? 2 : 3 > ()... );
303  }
304 
305  template < typename Derived, size_t order >
306  auto inline reduceTo2D( const Fastor::AbstractTensor< Derived, order >& theTensor3D )
307  {
308  using result_type = typename Derived::result_type;
309  return reduceTo2D( result_type( theTensor3D ) );
310  }
311 
312  constexpr int const3( size_t x )
313  {
314  return 3;
315  }
316 
317  template < typename T, size_t... dims2D >
318  auto inline expandTo3D( const Fastor::Tensor< T, dims2D... >& theTensor2D )
319  {
320  static_assert( ( ( ( dims2D > 0 ) && ( dims2D < 3 ) ) && ... ),
321  "INPUT TENSOR IS NOT A VALID 2D MIXED DISPLACEMENT/ROTATION TENSOR" );
322 
323  Fastor::Tensor< double, const3( dims2D )... > theTensor3D( 0.0 );
324 
325  theTensor3D( Fastor::fseq < dims2D == 2 ? 0 : 2, dims2D == 2 ? 2 : 3 > ()... ) = theTensor2D;
326 
327  return theTensor3D;
328  }
329 
330  template < typename Derived, size_t order >
331  auto inline expandTo3D( const Fastor::AbstractTensor< Derived, order >& theTensor2D )
332  {
333  using result_type = typename Derived::result_type;
334  return expandTo3D( result_type( theTensor2D ) );
335  }
336 
337  template < typename T, size_t... Rest >
338  Fastor::Tensor< T, Rest... > multiplyFastorTensorWithScalar( Fastor::Tensor< T, Rest... > tensor, T scalar )
339  {
340  // workaround for fastor bug (issue #149)
341  Fastor::Tensor< T, Rest... > out;
342  T* out_data = out.data();
343  T* in_data = tensor.data();
344 
345  for ( Fastor::FASTOR_INDEX i = 0; i < tensor.size(); ++i ) {
346  out_data[out.get_mem_index( i )] = in_data[tensor.get_mem_index( i )] * scalar;
347  }
348  return out;
349  }
350 
351  template < typename T >
354  {
355  T result( 0.0 );
356 
357  for ( int i = 0; i < 3; i++ ) {
358  for ( int j = 0; j < 3; j++ ) {
359  result += A( i, j ) * B( i, j );
360  }
361  }
362 
363  return result;
364  }
365 
366  template < typename T, size_t... Rest >
367  Fastor::Tensor< T, Rest... > fastorTensorFromDoubleTensor( const Fastor::Tensor< double, Rest... >& in )
368  {
369  // workaround for lack of casting of pointer types
370  // e.g. no cast available for autodiff::dual* and double*
371 
372  Fastor::Tensor< T, Rest... > out;
373  T* out_data = out.data();
374  double* in_data = in.data();
375 
376  for ( Fastor::FASTOR_INDEX i = 0; i < in.size(); ++i ) {
377  out_data[out.get_mem_index( i )] = static_cast< T >( in_data[in.get_mem_index( i )] );
378  }
379  return out;
380  }
381 
382  template < typename T, size_t... Rest >
383  Fastor::Tensor< T, Rest... > fastorTensorFromDoubleTensorMap( const Fastor::TensorMap< double, Rest... >& in )
384  {
385  // workaround for lack of casting of pointer types
386  // e.g. no cast available for autodiff::dual* and double*
387 
388  Fastor::Tensor< T, Rest... > out;
389  T* out_data = out.data();
390  double* in_data = in.data();
391 
392  for ( Fastor::FASTOR_INDEX i = 0; i < in.size(); ++i ) {
393  out_data[out.get_mem_index( i )] = static_cast< T >( in_data[in.get_mem_index( i )] );
394  }
395  return out;
396  }
397 
398  template < typename T, size_t... Rest >
399  Fastor::Tensor< double, Rest... > makeReal( const Fastor::Tensor< T, Rest... >& in )
400  {
401 
402  Fastor::Tensor< double, Rest... > out;
403  double* out_data = out.data();
404  T* in_data = in.data();
405 
406  for ( Fastor::FASTOR_INDEX i = 0; i < in.size(); ++i ) {
407  out_data[out.get_mem_index( i )] = static_cast< double >( in_data[in.get_mem_index( i )] );
408  }
409  return out;
410  }
411 
412  template < typename T, size_t... Rest >
413  Fastor::Tensor< autodiff::dual, Rest... > makeDual( const Fastor::Tensor< T, Rest... >& in )
414  {
415 
416  Fastor::Tensor< autodiff::dual, Rest... > out;
417  autodiff::dual* out_data = out.data();
418  T* in_data = in.data();
419 
420  for ( Fastor::FASTOR_INDEX i = 0; i < in.size(); ++i ) {
421  out_data[out.get_mem_index( i )] = autodiff::dual( in_data[in.get_mem_index( i )] );
422  }
423  return out;
424  }
425 
426  template < size_t order, size_t... Rest >
427  Fastor::Tensor< autodiff::HigherOrderDual< order, double >, Rest... > makeHigherOrderDual(
428  const Fastor::Tensor< double, Rest... >& in )
429  {
430 
431  Fastor::Tensor< autodiff::HigherOrderDual< order, double >, Rest... > out;
432  autodiff::HigherOrderDual< order, double >* out_data = out.data();
433  double* in_data = in.data();
434 
435  for ( Fastor::FASTOR_INDEX i = 0; i < in.size(); ++i ) {
436  out_data[out.get_mem_index( i )] = autodiff::HigherOrderDual< order, double >( in_data[in.get_mem_index( i )] );
437  }
438  return out;
439  }
440 
441  template < typename T >
443  {
444  const FastorStandardTensors::Tensor33t< T > sym = 0.5 * ( t + Fastor::transpose( t ) );
445  return sym;
446  }
447 
448  template < typename T >
450  {
451  Eigen::Matrix< T, 3, 3 > dummy = Eigen::Matrix< T, 3, 3 >::Identity();
453  Fastor::ColumnMajor );
454  const FastorStandardTensors::Tensor33t< T > dev = t - 1. / 3 * multiplyFastorTensorWithScalar( I, trace( t ) );
455  return dev;
456  }
457 } // namespace Marmot
Marmot::FastorIndices::Kk
Fastor::Index< K_, k_ > Kk
Definition: MarmotFastorTensorBasics.h:121
Marmot::FastorIndices::i
Fastor::Index< i_ > i
Definition: MarmotFastorTensorBasics.h:137
Marmot::FastorIndices::kl
Fastor::Index< k_, l_ > kl
Definition: MarmotFastorTensorBasics.h:205
Marmot::DimensionType
DimensionType
Definition: MarmotFastorTensorBasics.h:294
Marmot::FastorIndices::ijKJ
Fastor::Index< i_, j_, K_, J_ > ijKJ
Definition: MarmotFastorTensorBasics.h:160
Marmot::FastorIndices::to_IJkL
Fastor::OIndex< I_, J_, k_, L_ > to_IJkL
Definition: MarmotFastorTensorBasics.h:224
Marmot::FastorIndices::mnkB
Fastor::Index< m_, n_, k_, B_ > mnkB
Definition: MarmotFastorTensorBasics.h:218
Marmot::FastorIndices::to_IikK
Fastor::OIndex< I_, i_, k_, K_ > to_IikK
Definition: MarmotFastorTensorBasics.h:225
Marmot::FastorIndices::mLl
Fastor::Index< m_, L_, l_ > mLl
Definition: MarmotFastorTensorBasics.h:212
Marmot::FastorIndices::kK
Fastor::Index< k_, K_ > kK
Definition: MarmotFastorTensorBasics.h:199
Marmot::FastorIndices::kL
Fastor::Index< k_, L_ > kL
Definition: MarmotFastorTensorBasics.h:200
Marmot::FastorIndices::iIkK
Fastor::Index< i_, I_, k_, K_ > iIkK
Definition: MarmotFastorTensorBasics.h:144
Marmot::FastorIndices::to_jAkB
Fastor::OIndex< j_, A_, k_, B_ > to_jAkB
Definition: MarmotFastorTensorBasics.h:246
Marmot::FastorStandardTensors::TensorMap33d
Fastor::TensorMap< double, 3, 3 > TensorMap33d
Definition: MarmotFastorTensorBasics.h:52
Marmot::FastorIndices::LmN
Fastor::Index< L_, m_, N_ > LmN
Definition: MarmotFastorTensorBasics.h:127
Marmot::FastorIndices::ijkl
Fastor::Index< i_, j_, k_, l_ > ijkl
Definition: MarmotFastorTensorBasics.h:167
Marmot::FastorIndices::iImn
Fastor::Index< i_, I_, m_, n_ > iImn
Definition: MarmotFastorTensorBasics.h:146
Marmot::FastorIndices::ML
Fastor::Index< M_, L_ > ML
Definition: MarmotFastorTensorBasics.h:130
Marmot::FastorIndices::to_IjkK
Fastor::OIndex< I_, j_, k_, K_ > to_IjkK
Definition: MarmotFastorTensorBasics.h:226
Marmot::FastorIndices::to_ijKl
Fastor::OIndex< i_, j_, K_, l_ > to_ijKl
Definition: MarmotFastorTensorBasics.h:241
Marmot::FastorIndices::j_
@ j_
Definition: MarmotFastorTensorBasics.h:90
Marmot::FastorIndices::iKjL
Fastor::Index< i_, K_, j_, L_ > iKjL
Definition: MarmotFastorTensorBasics.h:153
Marmot::FastorIndices::jin
Fastor::Index< j_, i_, n_ > jin
Definition: MarmotFastorTensorBasics.h:189
Marmot::FastorIndices::N_
@ N_
Definition: MarmotFastorTensorBasics.h:90
Marmot::FastorIndices::to_jikl
Fastor::OIndex< j_, i_, k_, l_ > to_jikl
Definition: MarmotFastorTensorBasics.h:249
Marmot::FastorIndices::to_ijIJ
Fastor::OIndex< i_, j_, I_, J_ > to_ijIJ
Definition: MarmotFastorTensorBasics.h:233
Marmot::FastorIndices::jJ
Fastor::Index< j_, J_ > jJ
Definition: MarmotFastorTensorBasics.h:185
Marmot::FastorIndices::MK
Fastor::Index< M_, K_ > MK
Definition: MarmotFastorTensorBasics.h:129
Marmot::FastorIndices::P_
@ P_
Definition: MarmotFastorTensorBasics.h:90
Marmot::multiplyFastorTensorWithScalar
Fastor::Tensor< T, Rest... > multiplyFastorTensorWithScalar(Fastor::Tensor< T, Rest... > tensor, T scalar)
Definition: MarmotFastorTensorBasics.h:338
Marmot::FastorIndices::iNL
Fastor::Index< i_, N_, L_ > iNL
Definition: MarmotFastorTensorBasics.h:157
Marmot::FastorIndices::iJkL
Fastor::Index< i_, J_, k_, L_ > iJkL
Definition: MarmotFastorTensorBasics.h:150
Marmot::FastorIndices::LN
Fastor::Index< L_, N_ > LN
Definition: MarmotFastorTensorBasics.h:125
Marmot::FastorIndices::I_
@ I_
Definition: MarmotFastorTensorBasics.h:90
Marmot::FastorIndices::l
Fastor::Index< l_ > l
Definition: MarmotFastorTensorBasics.h:207
Marmot::FastorIndices::iB
Fastor::Index< i_, B_ > iB
Definition: MarmotFastorTensorBasics.h:140
Marmot::ContinuumMechanics::CommonTensors::I2xI2
const EigenTensors::Tensor3333d I2xI2
Definition: MarmotTensor.h:38
Marmot::ContinuumMechanics::CommonTensors::IFourthOrder
const EigenTensors::Tensor3333d IFourthOrder
Definition: MarmotTensor.h:47
Marmot::FastorStandardTensors::Spatial3D::DeviatoricTranspose
const Tensor3333d DeviatoricTranspose
Definition: MarmotFastorTensorBasics.h:81
Marmot::FastorIndices::B_
@ B_
Definition: MarmotFastorTensorBasics.h:90
Marmot::FastorStandardTensors::Tensor3333t
Fastor::Tensor< T, 3, 3, 3, 3 > Tensor3333t
Definition: MarmotFastorTensorBasics.h:49
Marmot::FastorStandardTensors::Spatial3D::I4
const Tensor3333d I4
Definition: MarmotFastorTensorBasics.h:72
Marmot::FastorIndices::to_ij
Fastor::OIndex< i_, j_ > to_ij
Definition: MarmotFastorTensorBasics.h:232
Marmot::ContinuumMechanics::CommonTensors::IFourthOrderTranspose
const EigenTensors::Tensor3333d IFourthOrderTranspose
Definition: MarmotTensor.h:50
Marmot::FastorIndices::km
Fastor::Index< k_, m_ > km
Definition: MarmotFastorTensorBasics.h:206
Marmot::FastorIndices::iJLl
Fastor::Index< i_, J_, L_, l_ > iJLl
Definition: MarmotFastorTensorBasics.h:149
Marmot::FastorIndices::to_ijkL
Fastor::OIndex< i_, j_, k_, L_ > to_ijkL
Definition: MarmotFastorTensorBasics.h:240
Marmot::FastorStandardTensors::Spatial3D::I
const Tensor33d I
Definition: MarmotFastorTensorBasics.h:57
Marmot::FastorIndices::KL
Fastor::Index< K_, L_ > KL
Definition: MarmotFastorTensorBasics.h:112
Marmot::FastorStandardTensors::Tensor33d
Fastor::Tensor< double, 3, 3 > Tensor33d
Definition: MarmotFastorTensorBasics.h:38
Marmot::FastorIndices::to_ijL
Fastor::OIndex< i_, j_, L_ > to_ijL
Definition: MarmotFastorTensorBasics.h:235
Marmot::ContinuumMechanics::CommonTensors::Isym
const EigenTensors::Tensor3333d Isym
Definition: MarmotTensor.h:41
Marmot::FastorIndices::K_
@ K_
Definition: MarmotFastorTensorBasics.h:90
Marmot::FastorIndices::iIKL
Fastor::Index< i_, I_, K_, L_ > iIKL
Definition: MarmotFastorTensorBasics.h:142
Marmot::FastorIndices::iAkB
Fastor::Index< i_, A_, k_, B_ > iAkB
Definition: MarmotFastorTensorBasics.h:139
Marmot::FastorIndices::JI
Fastor::Index< J_, I_ > JI
Definition: MarmotFastorTensorBasics.h:105
Marmot::FastorIndices::to_kK
Fastor::OIndex< k_, K_ > to_kK
Definition: MarmotFastorTensorBasics.h:251
Marmot::FastorIndices::Im
Fastor::Index< I_, m_ > Im
Definition: MarmotFastorTensorBasics.h:104
Marmot::FastorIndices::KMJ
Fastor::Index< K_, M_, J_ > KMJ
Definition: MarmotFastorTensorBasics.h:118
Marmot::FastorIndices::to_jAB
Fastor::OIndex< j_, A_, B_ > to_jAB
Definition: MarmotFastorTensorBasics.h:245
Marmot::FastorIndices::iA
Fastor::Index< i_, A_ > iA
Definition: MarmotFastorTensorBasics.h:138
Marmot::FastorIndices::kI
Fastor::Index< k_, I_ > kI
Definition: MarmotFastorTensorBasics.h:198
Marmot::makeHigherOrderDual
Fastor::Tensor< autodiff::HigherOrderDual< order, double >, Rest... > makeHigherOrderDual(const Fastor::Tensor< double, Rest... > &in)
Definition: MarmotFastorTensorBasics.h:427
Marmot::FastorIndices::ijk
Fastor::Index< i_, j_, k_ > ijk
Definition: MarmotFastorTensorBasics.h:164
Marmot::FastorIndices::to_jikL
Fastor::OIndex< j_, i_, k_, L_ > to_jikL
Definition: MarmotFastorTensorBasics.h:248
Marmot::FastorIndices::jkB
Fastor::Index< j_, k_, B_ > jkB
Definition: MarmotFastorTensorBasics.h:192
Marmot::FastorIndices::to_iImn
Fastor::OIndex< i_, I_, m_, n_ > to_iImn
Definition: MarmotFastorTensorBasics.h:231
Marmot::FastorIndices::L
Fastor::Index< L_ > L
Definition: MarmotFastorTensorBasics.h:122
Marmot::FastorIndices::mj
Fastor::Index< m_, j_ > mj
Definition: MarmotFastorTensorBasics.h:213
Marmot::U
@ U
Definition: MarmotFastorTensorBasics.h:294
Marmot::FastorIndices::imk
Fastor::Index< i_, m_, k_ > imk
Definition: MarmotFastorTensorBasics.h:175
Marmot::FastorIndices::iL
Fastor::Index< i_, L_ > iL
Definition: MarmotFastorTensorBasics.h:154
Marmot::FastorIndices::jA
Fastor::Index< j_, A_ > jA
Definition: MarmotFastorTensorBasics.h:183
Marmot::FastorIndices::to_kL
Fastor::OIndex< k_, L_ > to_kL
Definition: MarmotFastorTensorBasics.h:252
Marmot::FastorIndices::KLNM
Fastor::Index< K_, L_, N_, M_ > KLNM
Definition: MarmotFastorTensorBasics.h:115
Marmot::makeReal
Fastor::Tensor< double, Rest... > makeReal(const Fastor::Tensor< T, Rest... > &in)
Definition: MarmotFastorTensorBasics.h:399
Marmot::FastorIndices::lB
Fastor::Index< l_, B_ > lB
Definition: MarmotFastorTensorBasics.h:208
Marmot::FastorIndices::KJ
Fastor::Index< K_, J_ > KJ
Definition: MarmotFastorTensorBasics.h:110
Marmot::FastorStandardTensors::TensorMap333d
Fastor::TensorMap< double, 3, 3, 3 > TensorMap333d
Definition: MarmotFastorTensorBasics.h:53
Marmot::FastorIndices::to_ijLm
Fastor::OIndex< i_, j_, L_, m_ > to_ijLm
Definition: MarmotFastorTensorBasics.h:237
Marmot::FastorIndices::ijL
Fastor::Index< i_, j_, L_ > ijL
Definition: MarmotFastorTensorBasics.h:162
Marmot::FastorIndices::kA
Fastor::Index< k_, A_ > kA
Definition: MarmotFastorTensorBasics.h:196
Marmot::FastorIndices::jK
Fastor::Index< j_, K_ > jK
Definition: MarmotFastorTensorBasics.h:191
Marmot::mapEigenToFastor
auto mapEigenToFastor(const Fastor::Tensor< T, nRows, nCols > &fastor)
Definition: MarmotFastorTensorBasics.h:259
Marmot::FastorIndices::M_
@ M_
Definition: MarmotFastorTensorBasics.h:90
Marmot::FastorIndices::JK
Fastor::Index< J_, K_ > JK
Definition: MarmotFastorTensorBasics.h:106
Marmot::FastorIndices::MPm
Fastor::Index< M_, P_, m_ > MPm
Definition: MarmotFastorTensorBasics.h:132
Marmot::symmetric
FastorStandardTensors::Tensor33t< T > symmetric(const FastorStandardTensors::Tensor33t< T > &t)
Definition: MarmotFastorTensorBasics.h:442
Marmot::FastorIndices::ijKL
Fastor::Index< i_, j_, K_, L_ > ijKL
Definition: MarmotFastorTensorBasics.h:161
Marmot::FastorIndices::iJl
Fastor::Index< i_, J_, l_ > iJl
Definition: MarmotFastorTensorBasics.h:151
Marmot::W
@ W
Definition: MarmotFastorTensorBasics.h:294
Marmot::FastorIndices::Pm
Fastor::Index< P_, m_ > Pm
Definition: MarmotFastorTensorBasics.h:136
Marmot::FastorIndices::in
Fastor::Index< i_, n_ > in
Definition: MarmotFastorTensorBasics.h:179
Marmot::FastorIndices::to_ijkK
Fastor::OIndex< i_, j_, k_, K_ > to_ijkK
Definition: MarmotFastorTensorBasics.h:239
Marmot::FastorIndices::to_ijkl
Fastor::OIndex< i_, j_, k_, l_ > to_ijkl
Definition: MarmotFastorTensorBasics.h:242
Marmot::FastorStandardTensors::Tensor333t
Fastor::Tensor< T, 3, 3, 3 > Tensor333t
Definition: MarmotFastorTensorBasics.h:47
Marmot::FastorIndices::IikK
Fastor::Index< I_, i_, k_, K_ > IikK
Definition: MarmotFastorTensorBasics.h:101
Marmot::FastorIndices::to_iIKL
Fastor::OIndex< i_, I_, K_, L_ > to_iIKL
Definition: MarmotFastorTensorBasics.h:229
Marmot::const3
constexpr int const3(size_t x)
Definition: MarmotFastorTensorBasics.h:312
Marmot::FastorIndices::mnkL
Fastor::Index< m_, n_, k_, L_ > mnkL
Definition: MarmotFastorTensorBasics.h:219
Marmot::FastorIndices::to_iIjJ
Fastor::OIndex< i_, I_, j_, J_ > to_iIjJ
Definition: MarmotFastorTensorBasics.h:230
Marmot::FastorIndices::k_
@ k_
Definition: MarmotFastorTensorBasics.h:90
Marmot::Matrix3d
Eigen::Matrix< double, 3, 3 > Matrix3d
Definition: MarmotTypedefs.h:40
Marmot::FastorIndices::to_ijmM
Fastor::OIndex< i_, j_, m_, M_ > to_ijmM
Definition: MarmotFastorTensorBasics.h:244
Marmot::FastorIndices::mnKL
Fastor::Index< m_, n_, K_, L_ > mnKL
Definition: MarmotFastorTensorBasics.h:216
Marmot::FastorIndices::jkl
Fastor::Index< j_, k_, l_ > jkl
Definition: MarmotFastorTensorBasics.h:193
Marmot::FastorIndices::j
Fastor::Index< j_ > j
Definition: MarmotFastorTensorBasics.h:182
Marmot::FastorIndices::l_
@ l_
Definition: MarmotFastorTensorBasics.h:90
Marmot
This file includes functions needed for calculations with stress and strain tensors written in voigt ...
Definition: MarmotTesting.h:37
Marmot::FastorIndices::ijmn
Fastor::Index< i_, j_, m_, n_ > ijmn
Definition: MarmotFastorTensorBasics.h:170
Marmot::FastorIndices::Ki
Fastor::Index< K_, i_ > Ki
Definition: MarmotFastorTensorBasics.h:120
Marmot::FastorIndices::IK
Fastor::Index< I_, K_ > IK
Definition: MarmotFastorTensorBasics.h:99
Marmot::FastorStandardTensors::Spatial3D::ITranspose
const Tensor3333d ITranspose
Definition: MarmotFastorTensorBasics.h:76
Marmot::FastorIndices::iK
Fastor::Index< i_, K_ > iK
Definition: MarmotFastorTensorBasics.h:152
Marmot::FastorIndices::to_ijm
Fastor::OIndex< i_, j_, m_ > to_ijm
Definition: MarmotFastorTensorBasics.h:243
Marmot::FastorIndices::mn
Fastor::Index< m_, n_ > mn
Definition: MarmotFastorTensorBasics.h:215
Marmot::FastorIndices::IJ
Fastor::Index< I_, J_ > IJ
Definition: MarmotFastorTensorBasics.h:96
Marmot::FastorIndices::KLPM
Fastor::Index< K_, L_, P_, M_ > KLPM
Definition: MarmotFastorTensorBasics.h:116
Marmot::FastorStandardTensors::Spatial3D::DeviatoricSymmetric
const Tensor3333d DeviatoricSymmetric
Definition: MarmotFastorTensorBasics.h:83
Marmot::FastorIndices::JL
Fastor::Index< J_, L_ > JL
Definition: MarmotFastorTensorBasics.h:107
Marmot::FastorIndices::jB
Fastor::Index< j_, B_ > jB
Definition: MarmotFastorTensorBasics.h:184
Marmot::FastorIndices::ijl
Fastor::Index< i_, j_, l_ > ijl
Definition: MarmotFastorTensorBasics.h:168
Marmot::FastorStandardTensors::Tensor3333d
Fastor::Tensor< double, 3, 3, 3, 3 > Tensor3333d
Definition: MarmotFastorTensorBasics.h:40
Marmot::makeDual
Fastor::Tensor< autodiff::dual, Rest... > makeDual(const Fastor::Tensor< T, Rest... > &in)
Definition: MarmotFastorTensorBasics.h:413
Marmot::FastorIndices::imkl
Fastor::Index< i_, m_, k_, l_ > imkl
Definition: MarmotFastorTensorBasics.h:176
Marmot::FastorIndices::IL
Fastor::Index< I_, L_ > IL
Definition: MarmotFastorTensorBasics.h:103
Marmot::FastorIndices::to_IJKL
Fastor::OIndex< I_, J_, K_, L_ > to_IJKL
Definition: MarmotFastorTensorBasics.h:222
Marmot::fastorTensorFromDoubleTensorMap
Fastor::Tensor< T, Rest... > fastorTensorFromDoubleTensorMap(const Fastor::TensorMap< double, Rest... > &in)
Definition: MarmotFastorTensorBasics.h:383
Marmot::ContinuumMechanics::CommonTensors::LeviCivita3D
const EigenTensors::Tensor333d LeviCivita3D
Definition: MarmotTensor.h:57
Marmot::FastorIndices::LK
Fastor::Index< L_, K_ > LK
Definition: MarmotFastorTensorBasics.h:124
Marmot::FastorIndices::ijLm
Fastor::Index< i_, j_, L_, m_ > ijLm
Definition: MarmotFastorTensorBasics.h:163
Marmot::FastorIndices::imLk
Fastor::Index< i_, m_, L_, k_ > imLk
Definition: MarmotFastorTensorBasics.h:178
Marmot::FastorIndices::IJML
Fastor::Index< I_, J_, M_, L_ > IJML
Definition: MarmotFastorTensorBasics.h:98
Marmot::FastorIndices::jLm
Fastor::Index< j_, L_, m_ > jLm
Definition: MarmotFastorTensorBasics.h:187
Marmot::FastorIndices::ji
Fastor::Index< j_, i_ > ji
Definition: MarmotFastorTensorBasics.h:188
Marmot::FastorIndices::Ii
Fastor::Index< I_, i_ > Ii
Definition: MarmotFastorTensorBasics.h:100
Marmot::FastorIndices::KMN
Fastor::Index< K_, M_, N_ > KMN
Definition: MarmotFastorTensorBasics.h:119
Marmot::FastorIndices::iIjJ
Fastor::Index< i_, I_, j_, J_ > iIjJ
Definition: MarmotFastorTensorBasics.h:143
Marmot::FastorIndices::LI
Fastor::Index< L_, I_ > LI
Definition: MarmotFastorTensorBasics.h:123
Marmot::FastorIndices::Nm
Fastor::Index< N_, m_ > Nm
Definition: MarmotFastorTensorBasics.h:135
Marmot::FastorIndices::kM
Fastor::Index< k_, M_ > kM
Definition: MarmotFastorTensorBasics.h:201
Marmot::FastorIndices::iM
Fastor::Index< i_, M_ > iM
Definition: MarmotFastorTensorBasics.h:155
Marmot::FastorIndices::inB
Fastor::Index< i_, n_, B_ > inB
Definition: MarmotFastorTensorBasics.h:180
Marmot::FastorIndices::MJKL
Fastor::Index< M_, J_, K_, L_ > MJKL
Definition: MarmotFastorTensorBasics.h:128
Marmot::FastorIndices::iN
Fastor::Index< i_, N_ > iN
Definition: MarmotFastorTensorBasics.h:156
Marmot::FastorIndices::ijnk
Fastor::Index< i_, j_, n_, k_ > ijnk
Definition: MarmotFastorTensorBasics.h:171
Marmot::FastorIndices::iI
Fastor::Index< i_, I_ > iI
Definition: MarmotFastorTensorBasics.h:141
Marmot::FastorIndices::jk
Fastor::Index< j_, k_ > jk
Definition: MarmotFastorTensorBasics.h:190
Marmot::FastorIndices::to_NLJl
Fastor::OIndex< N_, L_, J_, l_ > to_NLJl
Definition: MarmotFastorTensorBasics.h:228
Marmot::FastorIndices::mnij
Fastor::Index< m_, n_, i_, j_ > mnij
Definition: MarmotFastorTensorBasics.h:217
Marmot::FastorStandardTensors::Tensor333d
Fastor::Tensor< double, 3, 3, 3 > Tensor333d
Definition: MarmotFastorTensorBasics.h:39
Marmot::ContinuumMechanics::CommonTensors::Iskew
const EigenTensors::Tensor3333d Iskew
Definition: MarmotTensor.h:44
Marmot::FastorIndices::ijkK
Fastor::Index< i_, j_, k_, K_ > ijkK
Definition: MarmotFastorTensorBasics.h:166
Marmot::FastorIndices::AB
Fastor::Index< A_, B_ > AB
Definition: MarmotFastorTensorBasics.h:94
Marmot::FastorIndices::L_
@ L_
Definition: MarmotFastorTensorBasics.h:90
Marmot::FastorIndices::KLMN
Fastor::Index< K_, L_, M_, N_ > KLMN
Definition: MarmotFastorTensorBasics.h:113
Marmot::FastorIndices::ijm
Fastor::Index< i_, j_, m_ > ijm
Definition: MarmotFastorTensorBasics.h:169
Marmot::FastorIndices::iJ
Fastor::Index< i_, J_ > iJ
Definition: MarmotFastorTensorBasics.h:147
Marmot::expandTo3D
auto expandTo3D(const Fastor::Tensor< T, dims2D... > &theTensor2D)
Definition: MarmotFastorTensorBasics.h:318
Marmot::FastorStandardTensors::Spatial3D::Deviatoric
const Tensor3333d Deviatoric
Definition: MarmotFastorTensorBasics.h:79
Marmot::FastorIndices::kB
Fastor::Index< k_, B_ > kB
Definition: MarmotFastorTensorBasics.h:197
Marmot::FastorIndices::ijnm
Fastor::Index< i_, j_, n_, m_ > ijnm
Definition: MarmotFastorTensorBasics.h:172
Marmot::FastorIndices::to_Ii
Fastor::OIndex< I_, i_ > to_Ii
Definition: MarmotFastorTensorBasics.h:227
Marmot::FastorIndices::ij
Fastor::Index< i_, j_ > ij
Definition: MarmotFastorTensorBasics.h:158
Marmot::FastorIndices::ijkB
Fastor::Index< i_, j_, k_, B_ > ijkB
Definition: MarmotFastorTensorBasics.h:165
Marmot::FastorIndices::n_
@ n_
Definition: MarmotFastorTensorBasics.h:90
Marmot::deviatoric
FastorStandardTensors::Tensor33t< T > deviatoric(const FastorStandardTensors::Tensor33t< T > &t)
Definition: MarmotFastorTensorBasics.h:449
Marmot::FastorIndices::NLJl
Fastor::Index< N_, L_, J_, l_ > NLJl
Definition: MarmotFastorTensorBasics.h:134
Marmot::FastorIndices::to_ijKL
Fastor::OIndex< i_, j_, K_, L_ > to_ijKL
Definition: MarmotFastorTensorBasics.h:234
Marmot::FastorIndices::k
Fastor::Index< k_ > k
Definition: MarmotFastorTensorBasics.h:195
Marmot::FastorIndices::nB
Fastor::Index< n_, B_ > nB
Definition: MarmotFastorTensorBasics.h:220
Marmot::FastorIndices::i_
@ i_
Definition: MarmotFastorTensorBasics.h:90
Marmot::FastorIndices::mK
Fastor::Index< m_, K_ > mK
Definition: MarmotFastorTensorBasics.h:211
Marmot::FastorIndices::J_
@ J_
Definition: MarmotFastorTensorBasics.h:90
Marmot::einsum_ij_ij_hardcoded
T einsum_ij_ij_hardcoded(const FastorStandardTensors::Tensor33t< T > &A, const FastorStandardTensors::Tensor33t< T > &B)
Definition: MarmotFastorTensorBasics.h:352
Marmot::FastorStandardTensors::Spatial3D::LeviCivita
const Tensor333d LeviCivita
Definition: MarmotFastorTensorBasics.h:60
Marmot::FastorIndices::to_ji
Fastor::OIndex< j_, i_ > to_ji
Definition: MarmotFastorTensorBasics.h:247
Marmot::FastorStandardTensors::Tensor3t
Fastor::Tensor< T, 3 > Tensor3t
Definition: MarmotFastorTensorBasics.h:43
Marmot::FastorIndices::to_ijk
Fastor::OIndex< i_, j_, k_ > to_ijk
Definition: MarmotFastorTensorBasics.h:238
Marmot::FastorIndices::MNL
Fastor::Index< M_, N_, L_ > MNL
Definition: MarmotFastorTensorBasics.h:131
Marmot::FastorIndices::KI
Fastor::Index< K_, I_ > KI
Definition: MarmotFastorTensorBasics.h:109
Marmot::FastorIndices::m_
@ m_
Definition: MarmotFastorTensorBasics.h:90
Marmot::FastorStandardTensors::Spatial3D::ISymm
const Tensor3333d ISymm
Definition: MarmotFastorTensorBasics.h:66
Marmot::FastorIndices::m
Fastor::Index< m_ > m
Definition: MarmotFastorTensorBasics.h:210
Marmot::FastorIndices::Lm
Fastor::Index< L_, m_ > Lm
Definition: MarmotFastorTensorBasics.h:126
Marmot::FastorIndices::imL
Fastor::Index< i_, m_, L_ > imL
Definition: MarmotFastorTensorBasics.h:177
Marmot::FastorIndices::ijB
Fastor::Index< i_, j_, B_ > ijB
Definition: MarmotFastorTensorBasics.h:159
Marmot::FastorIndices::jL
Fastor::Index< j_, L_ > jL
Definition: MarmotFastorTensorBasics.h:186
Marmot::FastorIndices::KLMP
Fastor::Index< K_, L_, M_, P_ > KLMP
Definition: MarmotFastorTensorBasics.h:114
Marmot::FastorStandardTensors::TensorMap3d
Fastor::TensorMap< double, 3 > TensorMap3d
Definition: MarmotFastorTensorBasics.h:51
Marmot::FastorIndices::kJ
Fastor::Index< k_, J_ > kJ
Definition: MarmotFastorTensorBasics.h:204
MarmotTensor.h
Marmot::FastorIndices::to_ijLk
Fastor::OIndex< i_, j_, L_, k_ > to_ijLk
Definition: MarmotFastorTensorBasics.h:236
Marmot::FastorIndices::ik
Fastor::Index< i_, k_ > ik
Definition: MarmotFastorTensorBasics.h:173
Marmot::FastorIndices::iIkL
Fastor::Index< i_, I_, k_, L_ > iIkL
Definition: MarmotFastorTensorBasics.h:145
Marmot::FastorIndices::Ai
Fastor::Index< A_, i_ > Ai
Definition: MarmotFastorTensorBasics.h:93
Marmot::FastorIndices::A
Fastor::Index< A_ > A
Definition: MarmotFastorTensorBasics.h:92
Marmot::FastorStandardTensors::Tensor33t
Fastor::Tensor< T, 3, 3 > Tensor33t
Definition: MarmotFastorTensorBasics.h:45
Marmot::fastorTensorFromDoubleTensor
Fastor::Tensor< T, Rest... > fastorTensorFromDoubleTensor(const Fastor::Tensor< double, Rest... > &in)
Definition: MarmotFastorTensorBasics.h:367
Marmot::FastorIndices::im
Fastor::Index< i_, m_ > im
Definition: MarmotFastorTensorBasics.h:174
Marmot::reduceTo2D
auto reduceTo2D(const Fastor::Tensor< T, dims3D... > &theTensor3D)
Definition: MarmotFastorTensorBasics.h:296
Marmot::FastorIndices::iJKL
Fastor::Index< i_, J_, K_, L_ > iJKL
Definition: MarmotFastorTensorBasics.h:148
Marmot::FastorIndices::lm
Fastor::Index< l_, m_ > lm
Definition: MarmotFastorTensorBasics.h:209
Marmot::FastorIndices::mjL
Fastor::Index< m_, j_, L_ > mjL
Definition: MarmotFastorTensorBasics.h:214
Marmot::FastorIndices::jl
Fastor::Index< j_, l_ > jl
Definition: MarmotFastorTensorBasics.h:194
Marmot::FastorStandardTensors::Spatial3D::IHyd
const Tensor3333d IHyd
Definition: MarmotFastorTensorBasics.h:63
Marmot::FastorIndices::Mi
Fastor::Index< M_, i_ > Mi
Definition: MarmotFastorTensorBasics.h:133
Marmot::copyFastorToColumnMajor
void copyFastorToColumnMajor(T *target, const TensorType< T, Rest... > &source)
Definition: MarmotFastorTensorBasics.h:289
Marmot::FastorIndices::Ik
Fastor::Index< I_, k_ > Ik
Definition: MarmotFastorTensorBasics.h:102
Marmot::FastorIndices::KJN
Fastor::Index< K_, J_, N_ > KJN
Definition: MarmotFastorTensorBasics.h:111
Marmot::FastorStandardTensors::TensorMap3333d
Fastor::TensorMap< double, 3, 3, 3, 3 > TensorMap3333d
Definition: MarmotFastorTensorBasics.h:54
Marmot::FastorIndices::A_
@ A_
Definition: MarmotFastorTensorBasics.h:90
Marmot::FastorIndices::B
Fastor::Index< B_ > B
Definition: MarmotFastorTensorBasics.h:95
Marmot::FastorIndices::to_jkiB
Fastor::OIndex< j_, k_, i_, B_ > to_jkiB
Definition: MarmotFastorTensorBasics.h:250
Marmot::FastorIndices::to_IJkK
Fastor::OIndex< I_, J_, k_, K_ > to_IJkK
Definition: MarmotFastorTensorBasics.h:223
Marmot::FastorIndices::KLm
Fastor::Index< K_, L_, m_ > KLm
Definition: MarmotFastorTensorBasics.h:117
Marmot::FastorIndices::kNL
Fastor::Index< k_, N_, L_ > kNL
Definition: MarmotFastorTensorBasics.h:202
Marmot::FastorStandardTensors::Tensor3d
Fastor::Tensor< double, 3 > Tensor3d
Definition: MarmotFastorTensorBasics.h:37
Marmot::FastorIndices::inkB
Fastor::Index< i_, n_, k_, B_ > inkB
Definition: MarmotFastorTensorBasics.h:181
Marmot::FastorStandardTensors::Spatial3D::ISkew
const Tensor3333d ISkew
Definition: MarmotFastorTensorBasics.h:69
Marmot::FastorIndices::IJKL
Fastor::Index< I_, J_, K_, L_ > IJKL
Definition: MarmotFastorTensorBasics.h:97
Marmot::FastorIndices::kj
Fastor::Index< k_, j_ > kj
Definition: MarmotFastorTensorBasics.h:203
Marmot::FastorIndices::Jk
Fastor::Index< J_, k_ > Jk
Definition: MarmotFastorTensorBasics.h:108