

 // 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/>.


 #ifndef TYPECONSTENS_H
 #define TYPECONSTENS_H
 
#include "Tenseur.h"
#include "Tenseur1.h"
#include "Tenseur2.h"
#include "Tenseur3.h"
#include "TenseurQ-3.h"  
#include "TenseurQ-2.h"
#include "TenseurQ-1.h"

// la definition exacte de ces variables globales est faite dans le fichier TypeConsTensPrin.h
//  qui n'est inclus qu'une seule fois dans le fichier du programme principal

// constantes dont la dimensions est connu

// ---- tenseurs d'ordre 2 ----
extern  Tenseur1HH  IdHH1,ZeroHH1; // def du tenseur identite et du tenseur nul
extern  Tenseur1BB  IdBB1,ZeroBB1; // def du tenseur identite et du tenseur nul
extern  Tenseur1HB  IdHB1,ZeroHB1; // def du tenseur identite et du tenseur nul
extern  Tenseur1BH  IdBH1,ZeroBH1; // def du tenseur identite et du tenseur nul

extern  Tenseur2HH  IdHH2,ZeroHH2; // def du tenseur identite et du tenseur nul
extern  Tenseur2BB  IdBB2,ZeroBB2; // def du tenseur identite et du tenseur nul
extern  Tenseur2HB  IdHB2,ZeroHB2; // def du tenseur identite et du tenseur nul
extern  Tenseur2BH  IdBH2,ZeroBH2; // def du tenseur identite et du tenseur nul

extern  Tenseur3HH  IdHH3,ZeroHH3; // def du tenseur identite et du tenseur nul
extern  Tenseur3BB  IdBB3,ZeroBB3; // def du tenseur identite et du tenseur nul
extern  Tenseur3HB  IdHB3,ZeroHB3; // def du tenseur identite et du tenseur nul
extern  Tenseur3BH  IdBH3,ZeroBH3; // def du tenseur identite et du tenseur nul

// ---- tenseurs d'ordre 4 (36 coeff) ----
extern  Tenseur3HHHH  IdHHHH3; // def du tenseur identite (delta^{ij} delta^{kl})
extern  Tenseur3BBBB  IdBBBB3; // def du tenseur identite (delta_{ij} delta_{kl})
extern  Tenseur3HHBB  IdHHBB3; // def du tenseur identite (delta^{ij} delta_{kl})
extern  Tenseur3BBHH  IdBBHH3; // def du tenseur identite (delta_{ij} delta^{kl})

extern  Tenseur3HHHH  PIdHHHH3; // def du tenseur identite (delta^{ik} delta^{jl})
extern  Tenseur3BBBB  PIdBBBB3; // def du tenseur identite (delta_{ik} delta_{jl})

// ---- tenseurs d'ordre 4 (9 coeff) ----
extern  Tenseur2HHHH  IdHHHH2; // def du tenseur identite (delta^{ij} delta^{kl})
extern  Tenseur2BBBB  IdBBBB2; // def du tenseur identite (delta_{ij} delta_{kl})
extern  Tenseur2HHBB  IdHHBB2; // def du tenseur identite (delta^{ij} delta_{kl})
extern  Tenseur2BBHH  IdBBHH2; // def du tenseur identite (delta_{ij} delta^{kl})

extern  Tenseur2HHHH  PIdHHHH2; // def du tenseur identite (delta^{ik} delta^{jl})
extern  Tenseur2BBBB  PIdBBBB2; // def du tenseur identite (delta_{ik} delta_{jl})

// ---- tenseurs d'ordre 4 (1 coeff) ----
extern  Tenseur1HHHH  IdHHHH1; // def du tenseur identite (delta^{ij} delta^{kl})
extern  Tenseur1BBBB  IdBBBB1; // def du tenseur identite (delta_{ij} delta_{kl})
extern  Tenseur1HHBB  IdHHBB1; // def du tenseur identite (delta^{ij} delta_{kl})
extern  Tenseur1BBHH  IdBBHH1; // def du tenseur identite (delta_{ij} delta^{kl})

extern  Tenseur1HHHH  PIdHHHH1; // def du tenseur identite (delta^{ik} delta^{jl})
extern  Tenseur1BBBB  PIdBBBB1; // def du tenseur identite (delta_{ik} delta_{jl})

// constantes dont la dimensions est celle du pb
// defini au debut du pb avec la fonction : ConstantesTenseur(int dim)

extern  TenseurHH * IdHH,* ZeroHH; // def du tenseur identite et du tenseur nul
extern  TenseurBB * IdBB,* ZeroBB; // def du tenseur identite et du tenseur nul
extern  TenseurHB * IdHB,* ZeroHB; // def du tenseur identite et du tenseur nul
extern  TenseurBH * IdBH,* ZeroBH; // def du tenseur identite et du tenseur nul

// tableau des constantes, fonction de la dimension
extern  Tableau <TenseurHB *> Id_dim_HB; // tenseur identité fonction de la dimension:


#endif
