/** \file NevezTenseurQ.h * déclaration des méthodes externes aux classes de tenseur d'ordre 4, qui permettent de définir un nouveau tenseur */ // 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) . // // 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 . // // For more information, please consult: . /************************************************************************ * DATE: 23/01/97 * * $ * * AUTEUR: G RIO * * $ * * PROJET: Herezh++ * * $ * ************************************************************************ * BUT: definir un nouveau tenseur d'ordre 4 en fonction de la * * dimension * * $ * * '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' * ************************************************************************/ #ifndef NEVEZTENSEURQ_H #define NEVEZTENSEURQ_H #include "Tenseur.h" #include "TenseurQ.h" /// définition et création d'un nouveau tenseur d'ordre 4 /// /// en sortie le programme retourne le pointeur affecte sur un tenseur de /// \n la bonne taille en fonction de la dimension du pb /// \n par defaut les composantes du nouveau tenseur sont mise a zero /// mais on peut indiquer une valeur qui sera affectee a tous les composantes /// \n /// \n - dans le cas ou dim = 1 ou 2 ou 3 -> def de tenseurs généraux (1 ou 16 ou 81 coeff) /// \n - dans le cas ou dim = 11 ou 22 ou 33 -> def de tenseurs symétriques par rapport /// aux deux premiers indices, et symétriques par rapport aux deux derniers indices /// ( 1 ou 9 ou 36 coeff) /// \n - dans le cas ou dim = 106 ou 206 ou 306 -> def de tenseurs avec les 3 symétries: /// \n (i,j,k,l) = (j,i,k,l) = (i,j,l,k) = (k,l,i,j) /// \n d'où (1 ou 6 ou 21 coeff) TenseurHHHH * NevezTenseurHHHH(int dim,double val = 0.); /// définition et création d'un nouveau tenseur d'ordre 4 /// /// en sortie le programme retourne le pointeur affecte sur un tenseur de /// \n la bonne taille en fonction de la dimension du pb /// \n par defaut les composantes du nouveau tenseur sont mise a zero /// mais on peut indiquer une valeur qui sera affectee a tous les composantes /// \n /// \n - dans le cas ou dim = 1 ou 2 ou 3 -> def de tenseurs généraux (1 ou 16 ou 81 coeff) /// \n - dans le cas ou dim = 11 ou 22 ou 33 -> def de tenseurs symétriques par rapport /// aux deux premiers indices, et symétriques par rapport aux deux derniers indices /// ( 1 ou 9 ou 36 coeff) /// \n - dans le cas ou dim = 106 ou 206 ou 306 -> def de tenseurs avec les 3 symétries: /// \n (i,j,k,l) = (j,i,k,l) = (i,j,l,k) = (k,l,i,j) /// \n d'où (1 ou 6 ou 21 coeff) TenseurBBBB * NevezTenseurBBBB(int dim,double val = 0.); /// définition et création d'un nouveau tenseur d'ordre 4 /// /// en sortie le programme retourne le pointeur affecte sur un tenseur de /// \n la bonne taille en fonction de la dimension du pb /// \n par defaut les composantes du nouveau tenseur sont mise a zero /// mais on peut indiquer une valeur qui sera affectee a tous les composantes /// \n /// \n - dans le cas ou dim = 1 ou 2 ou 3 -> def de tenseurs généraux (1 ou 16 ou 81 coeff) /// \n - dans le cas ou dim = 11 ou 22 ou 33 -> def de tenseurs symétriques par rapport /// aux deux premiers indices, et symétriques par rapport aux deux derniers indices /// ( 1 ou 9 ou 36 coeff) /// \n - dans le cas ou dim = 106 ou 206 ou 306 -> def de tenseurs avec les 3 symétries: /// \n (i,j,k,l) = (j,i,k,l) = (i,j,l,k) = (k,l,i,j) /// \n d'où (1 ou 6 ou 21 coeff) TenseurHHBB * NevezTenseurHHBB(int dim,double val = 0.); /// définition et création d'un nouveau tenseur d'ordre 4 /// /// en sortie le programme retourne le pointeur affecte sur un tenseur de /// \n la bonne taille en fonction de la dimension du pb /// \n par defaut les composantes du nouveau tenseur sont mise a zero /// mais on peut indiquer une valeur qui sera affectee a tous les composantes /// \n /// \n - dans le cas ou dim = 1 ou 2 ou 3 -> def de tenseurs généraux (1 ou 16 ou 81 coeff) /// \n - dans le cas ou dim = 11 ou 22 ou 33 -> def de tenseurs symétriques par rapport /// aux deux premiers indices, et symétriques par rapport aux deux derniers indices /// ( 1 ou 9 ou 36 coeff) /// \n - dans le cas ou dim = 106 ou 206 ou 306 -> def de tenseurs avec les 3 symétries: /// \n (i,j,k,l) = (j,i,k,l) = (i,j,l,k) = (k,l,i,j) /// \n d'où (1 ou 6 ou 21 coeff) TenseurBBHH * NevezTenseurBBHH(int dim,double val = 0.); /// définition et création d'un nouveau tenseur d'ordre 4 /// /// en sortie le programme retourne le pointeur affecte sur un tenseur de /// \n la bonne taille en fonction de la dimension du pb /// \n par defaut les composantes du nouveau tenseur sont mise a zero /// mais on peut indiquer une valeur qui sera affectee a tous les composantes /// \n /// \n - dans le cas ou dim = 1 ou 2 ou 3 -> def de tenseurs généraux (1 ou 16 ou 81 coeff) /// \n - dans le cas ou dim = 11 ou 22 ou 33 -> def de tenseurs symétriques par rapport /// aux deux premiers indices, et symétriques par rapport aux deux derniers indices /// ( 1 ou 9 ou 36 coeff) /// \n - dans le cas ou dim = 106 ou 206 ou 306 -> def de tenseurs avec les 3 symétries: /// \n (i,j,k,l) = (j,i,k,l) = (i,j,l,k) = (k,l,i,j) /// \n d'où (1 ou 6 ou 21 coeff) TenseurBHBH * NevezTenseurBHBH(int dim,double val = 0.); /// définition et création d'un nouveau tenseur d'ordre 4 /// /// en sortie le programme retourne le pointeur affecte sur un tenseur de /// \n la bonne taille en fonction de la dimension du pb /// \n par defaut les composantes du nouveau tenseur sont mise a zero /// mais on peut indiquer une valeur qui sera affectee a tous les composantes /// \n /// \n - dans le cas ou dim = 1 ou 2 ou 3 -> def de tenseurs généraux (1 ou 16 ou 81 coeff) /// \n - dans le cas ou dim = 11 ou 22 ou 33 -> def de tenseurs symétriques par rapport /// aux deux premiers indices, et symétriques par rapport aux deux derniers indices /// ( 1 ou 9 ou 36 coeff) /// \n - dans le cas ou dim = 106 ou 206 ou 306 -> def de tenseurs avec les 3 symétries: /// \n (i,j,k,l) = (j,i,k,l) = (i,j,l,k) = (k,l,i,j) /// \n d'où (1 ou 6 ou 21 coeff) TenseurHBHB * NevezTenseurHBHB(int dim,double val = 0.); /// définition et création d'un nouveau tenseur d'ordre 4 /// /// en sortie le programme retourne le pointeur affecte sur un tenseur de /// \n la bonne taille en fonction de la dimension du pb /// \n par defaut les composantes du nouveau tenseur sont mise a zero /// mais on peut indiquer une valeur qui sera affectee a tous les composantes /// \n /// \n - dans le cas ou dim = 1 ou 2 ou 3 -> def de tenseurs généraux (1 ou 16 ou 81 coeff) /// \n - dans le cas ou dim = 11 ou 22 ou 33 -> def de tenseurs symétriques par rapport /// aux deux premiers indices, et symétriques par rapport aux deux derniers indices /// ( 1 ou 9 ou 36 coeff) /// \n - dans le cas ou dim = 106 ou 206 ou 306 -> def de tenseurs avec les 3 symétries: /// \n (i,j,k,l) = (j,i,k,l) = (i,j,l,k) = (k,l,i,j) /// \n d'où (1 ou 6 ou 21 coeff) TenseurBHHB * NevezTenseurBHHB(int dim,double val = 0.); /// définition et création d'un nouveau tenseur d'ordre 4 /// /// en sortie le programme retourne le pointeur affecte sur un tenseur de /// \n la bonne taille en fonction de la dimension du pb /// \n par defaut les composantes du nouveau tenseur sont mise a zero /// mais on peut indiquer une valeur qui sera affectee a tous les composantes /// \n /// \n - dans le cas ou dim = 1 ou 2 ou 3 -> def de tenseurs généraux (1 ou 16 ou 81 coeff) /// \n - dans le cas ou dim = 11 ou 22 ou 33 -> def de tenseurs symétriques par rapport /// aux deux premiers indices, et symétriques par rapport aux deux derniers indices /// ( 1 ou 9 ou 36 coeff) /// \n - dans le cas ou dim = 106 ou 206 ou 306 -> def de tenseurs avec les 3 symétries: /// \n (i,j,k,l) = (j,i,k,l) = (i,j,l,k) = (k,l,i,j) /// \n d'où (1 ou 6 ou 21 coeff) TenseurHBBH * NevezTenseurHBBH(int dim,double val = 0.); /// définition et création d'un nouveau tenseur d'ordre 4 /// /// en entree on fourni une référence sur un element de la classe generique /// \n en sortie le programme retourne le pointeur affecte sur un tenseur de /// la bonne taille en fonction d'un tenseur du meme type. /// \n Les composantes du nouveau tenseur sont identiques a celle du tenseur /// passé en parametre TenseurHHHH * NevezTenseurHHHH(const TenseurHHHH& a); /// définition et création d'un nouveau tenseur d'ordre 4 /// /// en entree on fourni une référence sur un element de la classe generique /// \n en sortie le programme retourne le pointeur affecte sur un tenseur de /// la bonne taille en fonction d'un tenseur du meme type. /// \n Les composantes du nouveau tenseur sont identiques a celle du tenseur /// passé en parametre TenseurBBBB * NevezTenseurBBBB(const TenseurBBBB& a); /// définition et création d'un nouveau tenseur d'ordre 4 /// /// en entree on fourni une référence sur un element de la classe generique /// \n en sortie le programme retourne le pointeur affecte sur un tenseur de /// la bonne taille en fonction d'un tenseur du meme type. /// \n Les composantes du nouveau tenseur sont identiques a celle du tenseur /// passé en parametre TenseurHHBB * NevezTenseurHHBB(const TenseurHHBB& a); /// définition et création d'un nouveau tenseur d'ordre 4 /// /// en entree on fourni une référence sur un element de la classe generique /// \n en sortie le programme retourne le pointeur affecte sur un tenseur de /// la bonne taille en fonction d'un tenseur du meme type. /// \n Les composantes du nouveau tenseur sont identiques a celle du tenseur /// passé en parametre TenseurBBHH * NevezTenseurBBHH(const TenseurBBHH& a); /// définition et création d'un nouveau tenseur d'ordre 4 /// /// en entree on fourni une référence sur un element de la classe generique /// \n en sortie le programme retourne le pointeur affecte sur un tenseur de /// la bonne taille en fonction d'un tenseur du meme type. /// \n Les composantes du nouveau tenseur sont identiques a celle du tenseur /// passé en parametre TenseurBHBH * NevezTenseurBHBH(const TenseurBHBH& a); /// définition et création d'un nouveau tenseur d'ordre 4 /// /// en entree on fourni une référence sur un element de la classe generique /// \n en sortie le programme retourne le pointeur affecte sur un tenseur de /// la bonne taille en fonction d'un tenseur du meme type. /// \n Les composantes du nouveau tenseur sont identiques a celle du tenseur /// passé en parametre TenseurHBHB * NevezTenseurHBHB(const TenseurHBHB& a); /// définition et création d'un nouveau tenseur d'ordre 4 /// /// en entree on fourni une référence sur un element de la classe generique /// \n en sortie le programme retourne le pointeur affecte sur un tenseur de /// la bonne taille en fonction d'un tenseur du meme type. /// \n Les composantes du nouveau tenseur sont identiques a celle du tenseur /// passé en parametre TenseurBHHB * NevezTenseurBHHB(const TenseurBHHB& a); /// définition et création d'un nouveau tenseur d'ordre 4 /// /// en entree on fourni une référence sur un element de la classe generique /// \n en sortie le programme retourne le pointeur affecte sur un tenseur de /// la bonne taille en fonction d'un tenseur du meme type. /// \n Les composantes du nouveau tenseur sont identiques a celle du tenseur /// passé en parametre TenseurHBBH * NevezTenseurHBBH(const TenseurHBBH& a); #endif