// 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-2022 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: 25/05/98 * * $ * * AUTEUR: G RIO (mailto:gerardrio56@free.fr) * * $ * * PROJET: Herezh++ * * $ * ************************************************************************ * BUT: Calcul des differentes grandeurs liee a la deformation * * des elements poutre 2D. * * * * La particularité de cette classe par rapport à DeformationPP * * est que l'on calcul la courbure directement à partir de la * * dérivée seconde des coordonnées. * * * * La classe fonctionne comme une boite a outil. On y choisit ce * * dont on a besoin. Bien faire attention a l'ordre d'appel des * * differentes methodes lorsque il faut suivre une chronologie. * * Cette classe calcul mais ne stock pas. * * $ * * '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' * * * VERIFICATION: * * * * ! date ! auteur ! but ! * * ------------------------------------------------------------ * * ! ! ! ! * * $ * * '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' * * MODIFICATIONS: * * ! date ! auteur ! but ! * * ------------------------------------------------------------ * * $ * ************************************************************************/ #ifndef DEFORMATIONP2D_H #define DEFORMATIONP2D_H #include "Tableau_T.h" #include "Met_abstraite.h" #include "DeformationPP.h" /// @addtogroup groupe_des_deformations /// @{ /// class DeformationP2D : public DeformationPP { public : // CONSTRUCTEURS : DeformationP2D () ; // par defaut ne doit pas etre utilise -> message // d'erreur en phase de mise au point // constructeur normal dans le cas d'un ou de plusieurs pt d'integration // tabDphi et tabPhi sont relatifs aux fonctions d'interpolation // la terminaison H est relative aux grandeurs d'épaisseur, S pour la surface // ----> tabD2phi est relatif aux dérivées secondes des fonctions d'interpolations sur l'axe DeformationP2D (Met_abstraite & a,Tableau& tabnoeud ,Tableau const & tabDphiH,Tableau const & tabPhiH ,Tableau const & tabDphiS,Tableau const & tabPhiS ,Tableau const & tabD2phi); // constructeur de copie DeformationP2D (const DeformationP2D &); // DESTRUCTEUR : virtual ~DeformationP2D (); // ========== changement de grandeurs stockees ========================= // définition du déformation du même type, permet d'utiliser des types dérivée surchargé virtual Deformation * Nevez_deformation(Tableau & tabN) const { DeformationP2D* def = new DeformationP2D(*this);def->PointeurTableauNoeud(tabN);return def;} ; // Surcharge de l'operateur = : realise l'affectation // fonction virtuelle, normalement ne devrait pas être utilisé // si c'est le cas -> affichage d'un message d'erreur Deformation& operator= (const Deformation& def); DeformationPP& operator= (const DeformationPP& def); // fonction normale DeformationP2D& operator= (const DeformationP2D& def); // change les numeros d'integration de l'axe ou du plan et d'epaisseur courant // ntotalaxpl : nombre total de pt d'integ de l'axe ou du plan // niaxpl : nouveau point de l'axe ou du plan // niepaiss : nouveau point d'epaisseur // epaisseur : l'epaisseur courante void ChangeNumIntegSH(int niaxpl, int niepaiss); protected : // VARIABLES PROTEGEES : Tableau const * tabD2phi; // dérivées secondes des fonctions d'interpolation // tabD2phi(i)(j) : dérivée seconde par rapport à la seule variable 1, // de phi du noeud j au point d'intégration i. }; /// @} // end of group #endif