23#include "rheolef/space_constant.h"
25namespace rheolef {
namespace space_constant {
72 return coord_sys_table [i];
87 "inconsistent `" << coord_sys_table[i]
88 <<
"' coordinate system for " <<
d <<
"D geometry");
95symmetric_tensor_index [3][3] = {
102symmetric_tensor_subscript_name [6] = {
113unsymmetric_tensor_index [3][3] = {
120unsymmetric_tensor_subscript_name [9] = {
132static std::pair<size_type,size_type> symmetric_tensor_subscript [6];
133static std::pair<size_type,size_type> unsymmetric_tensor_subscript [9];
174 const std::string& valued,
191 return unsymmetric_tensor_index [i][j];
196 return symmetric_tensor_index [i][j];
208std::pair<size_type,size_type>
217 return std::pair<size_type,size_type>(2,2);
218 return unsymmetric_tensor_subscript [i_comp];
222 return std::pair<size_type,size_type>(2,2);
223 return symmetric_tensor_subscript [i_comp];
236 return unsymmetric_tensor_subscript_name [i_comp];
241 return symmetric_tensor_subscript_name [i_comp];
244std::pair<size_type,size_type>
271symmetric_tensor4_index [6][6] = {
272 { 0, 1, 3, 6, 10, 15},
273 { 1, 2, 4, 7, 11, 16},
274 { 3, 4, 5, 8, 12, 17},
275 { 6, 7, 8, 9, 13, 18},
276 { 10, 11, 12, 13, 14, 19},
277 { 15, 16, 17, 18, 19, 20}
281std::pair<std::pair<size_type,size_type>, std::pair<size_type,size_type> >
282symmetric_tensor4_subscript [21];
286symmetric_tensor4_subscript_name [21] = {
312std::pair<std::pair<size_type,size_type>, std::pair<size_type,size_type> >
313symmetric_tensor4_subscript_rz [10];
317symmetric_tensor4_subscript_rz_name [10] = {
343 return symmetric_tensor4_index[ij][kl];
356std::pair<std::pair<size_type,size_type>, std::pair<size_type,size_type> >
363 return symmetric_tensor4_subscript_rz [i_comp];
365 return symmetric_tensor4_subscript [i_comp];
375 return symmetric_tensor4_subscript_rz_name [i_comp];
377 return symmetric_tensor4_subscript_name [i_comp];
380std::pair<std::pair<size_type,size_type>, std::pair<size_type,size_type> >
413 return multiplies_result_tag_table [tag1][tag2];
424 return divides_result_tag_table [tag1][tag2];
430struct static_initializer_t {
431 static_initializer_t();
433static_initializer_t::static_initializer_t() {
434 typedef std::pair<size_type,size_type>
p;
435 symmetric_tensor_subscript[0] =
p(0,0);
436 symmetric_tensor_subscript[1] =
p(0,1);
437 symmetric_tensor_subscript[2] =
p(1,1);
438 symmetric_tensor_subscript[3] =
p(0,2);
439 symmetric_tensor_subscript[4] =
p(1,2);
440 symmetric_tensor_subscript[5] =
p(2,2);
442 unsymmetric_tensor_subscript[0] =
p(0,0);
443 unsymmetric_tensor_subscript[1] =
p(0,1);
444 unsymmetric_tensor_subscript[2] =
p(1,0);
445 unsymmetric_tensor_subscript[3] =
p(1,1);
446 unsymmetric_tensor_subscript[4] =
p(0,2);
447 unsymmetric_tensor_subscript[5] =
p(1,2);
448 unsymmetric_tensor_subscript[6] =
p(2,0);
449 unsymmetric_tensor_subscript[7] =
p(2,1);
450 unsymmetric_tensor_subscript[8] =
p(2,2);
452 typedef std::pair<p,p> pp;
453 symmetric_tensor4_subscript [ 0] = pp(
p(0,0),
p(0,0));
454 symmetric_tensor4_subscript [ 1] = pp(
p(0,0),
p(0,1));
455 symmetric_tensor4_subscript [ 2] = pp(
p(0,1),
p(0,1));
456 symmetric_tensor4_subscript [ 3] = pp(
p(0,0),
p(1,1));
457 symmetric_tensor4_subscript [ 4] = pp(
p(0,1),
p(1,1));
458 symmetric_tensor4_subscript [ 5] = pp(
p(1,1),
p(1,1));
459 symmetric_tensor4_subscript [ 6] = pp(
p(0,0),
p(0,2));
460 symmetric_tensor4_subscript [ 7] = pp(
p(0,1),
p(0,2));
461 symmetric_tensor4_subscript [ 8] = pp(
p(1,1),
p(0,2));
462 symmetric_tensor4_subscript [ 9] = pp(
p(0,2),
p(0,2));
463 symmetric_tensor4_subscript [10] = pp(
p(0,0),
p(1,2));
464 symmetric_tensor4_subscript [11] = pp(
p(0,1),
p(1,2));
465 symmetric_tensor4_subscript [12] = pp(
p(1,1),
p(1,2));
466 symmetric_tensor4_subscript [13] = pp(
p(0,2),
p(1,2));
467 symmetric_tensor4_subscript [14] = pp(
p(1,2),
p(1,2));
468 symmetric_tensor4_subscript [15] = pp(
p(0,0),
p(2,2));
469 symmetric_tensor4_subscript [16] = pp(
p(0,1),
p(2,2));
470 symmetric_tensor4_subscript [17] = pp(
p(1,1),
p(2,2));
471 symmetric_tensor4_subscript [18] = pp(
p(0,2),
p(2,2));
472 symmetric_tensor4_subscript [19] = pp(
p(1,2),
p(2,2));
473 symmetric_tensor4_subscript [20] = pp(
p(2,2),
p(2,2));
475 symmetric_tensor4_subscript_rz [0] = pp(
p(0,0),
p(0,0));
476 symmetric_tensor4_subscript_rz [0] = pp(
p(0,0),
p(0,1));
477 symmetric_tensor4_subscript_rz [0] = pp(
p(0,1),
p(0,1));
478 symmetric_tensor4_subscript_rz [0] = pp(
p(0,0),
p(1,1));
479 symmetric_tensor4_subscript_rz [0] = pp(
p(0,1),
p(1,1));
480 symmetric_tensor4_subscript_rz [0] = pp(
p(1,1),
p(1,1));
481 symmetric_tensor4_subscript_rz [0] = pp(
p(0,0),
p(2,2));
482 symmetric_tensor4_subscript_rz [0] = pp(
p(0,1),
p(2,2));
483 symmetric_tensor4_subscript_rz [0] = pp(
p(1,1),
p(2,2));
484 symmetric_tensor4_subscript_rz [0] = pp(
p(2,2),
p(2,2));
486static static_initializer_t
dummy;
field::size_type size_type
tensor3_basic< Float > tensor3
tensor_basic< Float > tensor
tensor4_basic< Float > tensor4
static iorheo::force_initialization dummy
see the tensor3 page for the full documentation
see the tensor page for the full documentation
#define assert_macro(ok_condition, message)
#define error_macro(message)
check_macro(expr1.have_homogeneous_space(Xh1), "dual(expr1,expr2); expr1 should have homogeneous space. HINT: use dual(interpolate(Xh, expr1),expr2)")
void check_coord_sys_and_dimension(coordinate_type i, size_type d)
coordinate_type coordinate_system(std::string sys_coord)
std::string coordinate_system_name(coordinate_type i)
valued_type multiplies_result_tag(space_constant::valued_type tag1, space_constant::valued_type tag2)
size_type tensor4_index(valued_type valued, coordinate_type sys_coord, size_type i, size_type j, size_type k, size_type l)
std::string tensor_subscript_name(valued_type valued_tag, coordinate_type sys_coord, size_type i_comp)
size_type tensor_index(valued_type valued_tag, coordinate_type sys_coord, size_type i, size_type j)
valued_type divides_result_tag(space_constant::valued_type tag1, space_constant::valued_type tag2)
std::pair< std::pair< size_type, size_type >, std::pair< size_type, size_type > > tensor4_subscript(valued_type valued, coordinate_type sys_coord, size_type i_comp)
std::string tensor4_subscript_name(valued_type valued, coordinate_type sys_coord, size_type i_comp)
const std::string & valued_name(valued_type valued_tag)
valued_type valued_tag(const std::string &name)
size_type n_component(valued_type valued_tag, size_type d, coordinate_type sys_coord)
std::pair< size_type, size_type > tensor_subscript(valued_type valued_tag, coordinate_type sys_coord, size_type i_comp)
This file is part of Rheolef.