// fichier: Base3D3.h // 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: 23/01/97 * * $ * * AUTEUR: G RIO * * $ * * PROJET: Herezh++ * * $ * ************************************************************************ * BUT: definition des bases de 3 vecteurs de dim 3 * qui permettent d'exprimer des coordonnées, en absolue ou en locale. * Ces bases correspondent à des bases naturelles ou des bases duales. * $ * * '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' * * MODIFICATIONS: * * ! date ! auteur ! but ! * * ------------------------------------------------------------ * * $ * ************************************************************************/ #ifndef BASE3D3_H #define BASE3D3_H #include "Coordonnee3.h" #include "Tableau_T.h" /** @defgroup Les_classes_Base3D3 * * BUT: Les classes Base3D3 servent à définir des bases de 3 vecteurs de dim 3 * qui permettent d'exprimer des coordonnées, en absolue ou en locale. * Ces bases correspondent à des bases naturelles ou des bases duales. * \author Gérard Rio * \version 1.0 * \date 23/01/97 * \brief Définition des bases naturelles ou absolues * ou des bases duales, de 3 vecteurs de dim 3. * */ /// @addtogroup Les_classes_Base3D3 /// @{ /// //=============================================================== /// Les base covariantes et absolus //=============================================================== class Base3D3B { /// surcharge de l'operator de lecture avec le type friend istream & operator >> (istream &, Base3D3B &); /// surcharge de l'operator d'ecriture friend ostream & operator << (ostream &, const Base3D3B &); public : // VARIABLES PUBLIQUES : /// CONSTRUCTEURS : /// par defaut, defini une Base de coordonnŕes nulles Base3D3B () ; /// defini une Base unitaire en dimension 3 :100,010,001 Base3D3B (bool ) ; /// defini une Base donnŕe a partir d'un tableau Base3D3B ( const Tableau & v1); /// defini une Base donnŕe a partir de trois vecteur Base3D3B ( const Coordonnee3B& v1,const Coordonnee3B& v2,const Coordonnee3B& v3); /// constructeur de copie Base3D3B (const Base3D3B &) ; /// DESTRUCTEUR : ~Base3D3B (); /// METHODES PUBLIQUES : /// surcharge de l'affectation Base3D3B & operator = (const Base3D3B & aB); /// retourne la dimension des Coordonnee3s inline const int Dimension () {return 3; }; /// retourne le nombre de Coordonnee3s de la base inline const int NbCoordonnee () {return 3; }; /// retourne le i ieme vecteur en I/O Coordonnee3B & operator () (int i); /// retourne le i ieme vecteur en lecture only Coordonnee3B operator () (int i) const ; /// retourne la j ieme composante du i ieme vecteur en I/O double & operator () (int i,int j); /// retourne la j ieme composante du i ieme vecteur en lecture only double operator () (int i,int j) const ; private : // VARIABLES PROTEGEES : // Coordonnee3 covariantes de la Base // pour pouvoir initialiser directement on dŕfini trois valeurs plutķt // qu'un tableau Coordonnee3B v1,v2,v3; Coordonnee3B * v[3]; }; /// @} // end of group /// @addtogroup Les_classes_Base3D3 /// @{ /// //=============================================================== /// Les base duales //=============================================================== class Base3D3H { /// surcharge de l'operator de lecture avec le type friend istream & operator >> (istream &, Base3D3H &); /// surcharge de l'operator d'ecriture friend ostream & operator << (ostream &, const Base3D3H &); public : // VARIABLES PUBLIQUES : /// CONSTRUCTEURS : /// par defaut, defini une Base de coordonnŕes nulles Base3D3H () ; /// defini une Base unitaire en dimension 3 :100,010,001 Base3D3H (bool ) ; /// defini une Base donnŕe a partir d'un tableau Base3D3H ( const Tableau & v1); /// defini une Base donnŕe a partir de trois vecteur Base3D3H ( const Coordonnee3H& v1,const Coordonnee3H& v2,const Coordonnee3H& v3); /// constructeur de copie Base3D3H (const Base3D3H &) ; /// DESTRUCTEUR : ~Base3D3H (); // METHODES PUBLIQUES : /// surcharge de l'affectation Base3D3H & operator = (const Base3D3H & aB); /// retourne la dimension des Coordonnee3s inline const int Dimension () {return 3; }; /// retourne le nombre de Coordonnee3s de la base inline const int NbCoordonnee () {return 3; }; /// retourne le i ieme vecteur en I/O Coordonnee3H & operator () (int i); /// retourne le i ieme vecteur en lecture only Coordonnee3H operator () (int i) const ; /// retourne la j ieme composante du i ieme vecteur en I/O double & operator () (int i,int j); /// retourne la j ieme composante du i ieme vecteur en lecture only double operator () (int i,int j) const ; private : // VARIABLES PROTEGEES : // Coordonnee3 covariantes de la Base // pour pouvoir initialiser directement on dŕfini trois valeurs plutķt // qu'un tableau Coordonnee3H v1,v2,v3; Coordonnee3H * v[3]; }; /// @} // end of group #ifndef MISE_AU_POINT #include "Base3D3.cc" #define BASE3D3_H_deja_inclus #endif #endif