// GenFem - A high-level finite element library
// Copyright (C) 2010-2026 Eric Bechet
//
// See the LICENSE file for license information and contributions.
// Please report all bugs and problems to <bechet@cadxfem.org>.

#include "genTensors.h"
//Row-major storage order
template<> int genTensorBase<3>::_index2[3][3]= {{0,1,2},{3,4,5},{6,7,8}};
template<> int genTensorBase<2>::_index2[2][2]= {{0,1},{2,3}};
template<> int genTensorBase<1>::_index2[1][1]= {{0}};
template<> int genTensorBase<3>::_index3[3][3][3]= {{{ 0, 1, 2},{ 3, 4, 5},{ 6, 7, 8}},{{ 9,10,11},{12,13,14},{15,16,17}},{{18,19,20},{21,22,23},{24,25,26}}};
template<> int genTensorBase<2>::_index3[2][2][2]= {{{0,1},{2,3}},{{4,5},{6,7}}};
template<> int genTensorBase<1>::_index3[1][1][1]= {{{0}}};
template<> int genTensorBase<3>::_index4[3][3][3][3]= {{{{ 0, 1, 2},{ 3, 4, 5},{ 6, 7, 8}},{{ 9,10,11},{12,13,14},{15,16,17}},{{18,19,20},{21,22,23},{24,25,26}}},
                                                       {{{27,28,29},{30,31,32},{33,34,35}},{{36,37,38},{39,40,41},{42,43,44}},{{45,46,47},{48,49,50},{51,52,53}}},
                                                       {{{54,55,56},{57,58,59},{60,61,62}},{{63,64,65},{66,67,68},{69,70,71}},{{72,73,74},{75,76,77},{78,79,80}}}};
template<> int genTensorBase<2>::_index4[2][2][2][2]= {{{{ 0, 1},{ 2, 3}},{{ 4, 5},{ 6, 7}}},
                                                       {{{ 8, 9},{10,11}},{{12,13},{14,15}}}};
template<> int genTensorBase<1>::_index4[1][1][1][1]= {{{{0}}}};
/*
template<> const int genTensorBase<1>::_nele[5]= {1,1,1,1,1};
template<> const int genTensorBase<2>::_nele[5]= {1,2,4,8,16};
template<> const int genTensorBase<3>::_nele[5]= {1,3,9,27,81};
*/
Swap* Swap::NoSwap = new Swap;