/** \file EnteteTenseur.h
* définition de différentes grandeurs, en particulier tensorielles,  utilisables globalement
*/


// This file is part of the Herezh++ application.
//
// The finite element software Herezh++ is dedicated to the field
// of mechanics for large transformations of solid structures.
// It is developed by Gérard Rio (APP: IDDN.FR.010.0106078.000.R.P.2006.035.20600)
// INSTITUT DE RECHERCHE DUPUY DE LÔME (IRDL) <https://www.irdl.fr/>.
//
// Herezh++ is distributed under GPL 3 license ou ultérieure.
//
// Copyright (C) 1997-2021 Université Bretagne Sud (France)
// AUTHOR : Gérard Rio
// E-MAIL  : gerardrio56@free.fr
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License,
// or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
//
// For more information, please consult: <https://herezh.irdl.fr/>.


//========================================================================
// fichier d'entete des tenseurs. A ne placer qu'une fois dans le fichier
// du programme principal
//========================================================================

/// initialisation de la variable static pour la gestion des tenseurs intermediaires du second ordre
PtTenseurHH * LesMaillonsHH::maille = NULL ;
/// initialisation de la variable static pour la gestion des tenseurs intermediaires du second ordre
PtTenseurBB * LesMaillonsBB::maille = NULL ;
/// initialisation de la variable static pour la gestion des tenseurs intermediaires du second ordre
PtTenseurHB * LesMaillonsHB::maille = NULL ;
/// initialisation de la variable static pour la gestion des tenseurs intermediaires du second ordre
PtTenseurBH * LesMaillonsBH::maille = NULL ;
/// initialisation de la variable static pour la gestion des tenseurs intermediaires du quatrieme ordre
PtTenseurHHHH * LesMaillonsHHHH::maille = NULL ;
/// initialisation de la variable static pour la gestion des tenseurs intermediaires du quatrieme ordre
PtTenseurBBBB * LesMaillonsBBBB::maille = NULL ;
/// initialisation de la variable static pour la gestion des tenseurs intermediaires du quatrieme ordre
PtTenseurHHBB * LesMaillonsHHBB::maille = NULL ;
/// initialisation de la variable static pour la gestion des tenseurs intermediaires du quatrieme ordre
PtTenseurBBHH * LesMaillonsBBHH::maille = NULL ;
/// initialisation de la variable static pour la gestion des tenseurs intermediaires du quatrieme ordre
PtTenseurBHBH * LesMaillonsBHBH::maille = NULL ;
/// initialisation de la variable static pour la gestion des tenseurs intermediaires du quatrieme ordre
PtTenseurHBHB * LesMaillonsHBHB::maille = NULL ;
/// initialisation de la variable static pour la gestion des tenseurs intermediaires du quatrieme ordre
PtTenseurBHHB * LesMaillonsBHHB::maille = NULL ;
/// initialisation de la variable static pour la gestion des tenseurs intermediaires du quatrieme ordre
PtTenseurHBBH * LesMaillonsHBBH::maille = NULL ;

/// initialisation d'une instance d'outil permettant la recherche de zero
Algo_zero TenseurHB::alg_zero;
/// initialisation d'une instance d'outil permettant la recherche de zero
Algo_zero TenseurBH::alg_zero;

/// initialisation des tableaux d'index pour tenseur du second ordre
const Tenseur3HH::ChangementIndex  Tenseur3HH::cdex;
/// initialisation des tableaux d'index pour tenseur du second ordre
const Tenseur_ns3HH::ChangementIndex  Tenseur_ns3HH::cdex;
/// initialisation des tableaux d'index pour tenseur du second ordre
const Tenseur3BB::ChangementIndex  Tenseur3BB::cdex;
/// initialisation des tableaux d'index pour tenseur du second ordre
const Tenseur_ns3BB::ChangementIndex  Tenseur_ns3BB::cdex;
/// initialisation des tableaux d'index pour tenseur du second ordre
const Tenseur3HB::ChangementIndex  Tenseur3HB::cdex;
/// initialisation des tableaux d'index pour tenseur du second ordre
const Tenseur3BH::ChangementIndex  Tenseur3BH::cdex;

/// initialisation des tableaux d'index pour tenseur du second ordre
const Tenseur2HH::ChangementIndex  Tenseur2HH::cdex;
/// initialisation des tableaux d'index pour tenseur du second ordre
const Tenseur_ns2HH::ChangementIndex  Tenseur_ns2HH::cdex;
/// initialisation des tableaux d'index pour tenseur du second ordre
const Tenseur2BB::ChangementIndex  Tenseur2BB::cdex;
/// initialisation des tableaux d'index pour tenseur du second ordre
const Tenseur_ns2BB::ChangementIndex  Tenseur_ns2BB::cdex;
/// initialisation des tableaux d'index pour tenseur du second ordre
const Tenseur2HB::ChangementIndex  Tenseur2HB::cdex;
/// initialisation des tableaux d'index pour tenseur du second ordre
const Tenseur2BH::ChangementIndex  Tenseur2BH::cdex;

/// initialisation des tableaux d'index pour tenseur du quatrième ordre dim 3
const Tenseur3HHHH::ChangementIndex  Tenseur3HHHH::cdex3HHHH;
/// initialisation des tableaux d'index pour tenseur du quatrième ordre dim 3
const Tenseur3BBBB::ChangementIndex  Tenseur3BBBB::cdex3BBBB;
/// initialisation des tableaux d'index pour tenseur du quatrième ordre dim 3
const Tenseur3HHBB::ChangementIndex  Tenseur3HHBB::cdex3HHBB;
/// initialisation des tableaux d'index pour tenseur du quatrième ordre dim 3
const Tenseur3BBHH::ChangementIndex  Tenseur3BBHH::cdex3BBHH;

/// initialisation des tableaux d'index pour tenseur du quatrième ordre dim 3
const TenseurQ3_troisSym_HHHH::ChangementIndex  TenseurQ3_troisSym_HHHH::cdex;
/// initialisation des tableaux d'index pour tenseur du quatrième ordre dim 3
const TenseurQ3_troisSym_BBBB::ChangementIndex  TenseurQ3_troisSym_BBBB::cdex;

/// initialisation des tableaux d'index pour tenseur du quatrième ordre dim 1
const Tenseur1HHHH::ChangementIndex  Tenseur1HHHH::cdex1HHHH;
/// initialisation des tableaux d'index pour tenseur du quatrième ordre dim 1
const Tenseur1BBBB::ChangementIndex  Tenseur1BBBB::cdex1BBBB;
/// initialisation des tableaux d'index pour tenseur du quatrième ordre dim 1
const Tenseur1HHBB::ChangementIndex  Tenseur1HHBB::cdex1HHBB;
/// initialisation des tableaux d'index pour tenseur du quatrième ordre dim 1
const Tenseur1BBHH::ChangementIndex  Tenseur1BBHH::cdex1BBHH;

//const TenseurQ1_troisSym_HHHH::ChangementIndex  TenseurQ1_troisSym_HHHH::cdex;
//const TenseurQ1_troisSym_BBBB::ChangementIndex  TenseurQ1_troisSym_BBBB::cdex;

/// initialisation des tableaux d'index pour tenseur du quatrième ordre dim 2
const Tenseur2HHHH::ChangementIndex  Tenseur2HHHH::cdex2HHHH;
/// initialisation des tableaux d'index pour tenseur du quatrième ordre dim 2
const Tenseur2BBBB::ChangementIndex  Tenseur2BBBB::cdex2BBBB;
/// initialisation des tableaux d'index pour tenseur du quatrième ordre dim 2
const Tenseur2HHBB::ChangementIndex  Tenseur2HHBB::cdex2HHBB;
/// initialisation des tableaux d'index pour tenseur du quatrième ordre dim 2
const Tenseur2BBHH::ChangementIndex  Tenseur2BBHH::cdex2BBHH;

//const TenseurQ2_troisSym_HHHH::ChangementIndex  TenseurQ2_troisSym_HHHH::cdex;
//const TenseurQ2_troisSym_BBBB::ChangementIndex  TenseurQ2_troisSym_BBBB::cdex;


