Herezh_dev/herezh_pp/Tableaux/Tableau_double.cc

1 line
15 KiB
C++
Raw Normal View History

// 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/>. // définition d'un tableau de réel de dimension quelconque. Dans le cas ou la dimension est comprise // entre 1 et 20, on utilise des listes de réels pour allouer de la mémoire et pour la désallouer, ce qui // permet d'être beaucoup plus rapide que l'opérateur classique new. // la construstion de la classe s'appuit sur une spécialisation d'une classe template. #include "Tableau_double.h" // Constructeur fonction de la taille du tableau Tableau_double::Tableau_double (int nb) { #ifdef MISE_AU_POINT if ( nb<0 ) // cas ou la taille selectionnee est negative { cout << "\nErreur : taille invalide !\n"; cout << "Tableau_double::Tableau_double(int ) \n"; Sortie(1); }; #endif if ( nb!=0 ) { taille=nb; switch (nb) {/* case 1 : iapointe = new Reel1Pointe(); t = & (*(((Reel1Pointe*)iapointe)->ipointe)).donnees; t[0] = defaut; // initialisation break; case 2 : iapointe = new Reel2Pointe(); t = (*(((Reel2Pointe*)iapointe)->ipointe)).donnees; t[0] = defaut; t[2] = defaut; // initialisation break; case 3 : iapointe = new Reel3Pointe(); t = (*(((Reel3Pointe*)iapointe)->ipointe)).donnees; t[0] = defaut; t[1] = defaut; t[2] = defaut; // initialisation break;*/ case 4 : iapointe = new Reel4Pointe(); Reel4Pointe* toto = (Reel4Pointe*)iapointe; t = (*(((Reel4Pointe*)iapointe)->ipointe)).donnees; t[0] = 1; t[1] = 2; t[2] = 3; t[3] = 4;// initialisation break; /* case 5 : iapointe = new Reel5Pointe(); t = (*(((Reel5Pointe*)iapointe)->ipointe)).donnees; t[0] = defaut; t[1] = defaut; t[2] = defaut; t[3] = defaut; t[4] = defaut;// initialisation break; case 6 : iapointe = new Reel6Pointe(); t = (*(((Reel6Pointe*)iapointe)->ipointe)).donnees; t[0] = defaut; t[1] = defaut; t[2] = defaut; t[3] = defaut; t[4] = defaut;t[5] = defaut;// initialisation break; case 7 : iapointe = new Reel7Pointe(); t = (*(((Reel7Pointe*)iapointe)->ipointe)).donnees; t[0] = defaut; t[1] = defaut; t[2] = defaut; t[3] = defaut; t[4] = defaut;t[5] = defaut;t[6] = defaut;// initialisation break; case 8 : iapointe = new Reel8Pointe(); t = (*(((Reel8Pointe*)iapointe)->ipointe)).donnees; t[0] = defaut; t[1] = defaut; t[2] =