// 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: . // 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] = defaut; t[3] = defaut; t[4] = defaut;t[5] = defaut;t[6] = defaut;t[7] = defaut; // initialisation break; case 9 : iapointe = new Reel9Pointe(); t = (*(((Reel9Pointe*)iapointe)->ipointe)).donnees; t[0] = defaut; t[1] = defaut; t[2] = defaut; t[3] = defaut; t[4] = defaut;t[5] = defaut;t[6] = defaut;t[7] = defaut;t[8] = defaut; // initialisation break; /* case 10 : iapointe = new Reel10Pointe(); t = (*(((Reel10Pointe*)iapointe)->ipointe))->donnees; t[0] = defaut; t[1] = defaut; t[2] = defaut; t[3] = defaut; t[4] = defaut;t[5] = defaut;t[6] = defaut;t[7] = defaut;t[8] = defaut; t[9] = defaut;// initialisation break; case 11 : iapointe = new Reel11Pointe(); t = (*(((Reel11Pointe*)iapointe)->ipointe))->donnees; t[0] = defaut; t[1] = defaut; t[2] = defaut; t[3] = defaut; t[4] = defaut;t[5] = defaut;t[6] = defaut;t[7] = defaut;t[8] = defaut; t[9] = defaut;t[10] = defaut;// initialisation break; case 12 : iapointe = new Reel12Pointe(); t = (*(((Reel12Pointe*)iapointe)->ipointe))->donnees; t[0] = defaut; t[1] = defaut; t[2] = defaut; t[3] = defaut; t[4] = defaut;t[5] = defaut;t[6] = defaut;t[7] = defaut;t[8] = defaut; t[9] = defaut;t[10] = defaut;t[11] = defaut;// initialisation break; case 13 : iapointe = new Reel13Pointe(); t = (*(((Reel13Pointe*)iapointe)->ipointe))->donnees; t[0] = defaut; t[1] = defaut; t[2] = defaut; t[3] = defaut; t[4] = defaut;t[5] = defaut;t[6] = defaut;t[7] = defaut;t[8] = defaut; t[9] = defaut;t[10] = defaut;t[11] = defaut;t[12] = defaut; // initialisation break; case 14 : iapointe = new Reel14Pointe(); t = (*(((Reel14Pointe*)iapointe)->ipointe))->donnees; t[0] = defaut; t[1] = defaut; t[2] = defaut; t[3] = defaut; t[4] = defaut;t[5] = defaut;t[6] = defaut;t[7] = defaut;t[8] = defaut; t[9] = defaut;t[10] = defaut;t[11] = defaut;t[12] = defaut;t[13] = defaut; // initialisation break; case 15 : iapointe = new Reel15Pointe(); t = (*(((Reel15Pointe*)iapointe)->ipointe))->donnees; t[0] = defaut; t[1] = defaut; t[2] = defaut; t[3] = defaut; t[4] = defaut;t[5] = defaut;t[6] = defaut;t[7] = defaut;t[8] = defaut; t[9] = defaut;t[10] = defaut;t[11] = defaut;t[12] = defaut;t[13] = defaut; t[14] = defaut;// initialisation break; case 16 : iapointe = new Reel16Pointe(); t = (*(((Reel16Pointe*)iapointe)->ipointe))->donnees; t[0] = defaut; t[1] = defaut; t[2] = defaut; t[3] = defaut; t[4] = defaut;t[5] = defaut;t[6] = defaut;t[7] = defaut;t[8] = defaut; t[9] = defaut;t[10] = defaut;t[11] = defaut;t[12] = defaut;t[13] = defaut; t[14] = defaut;t[15] = defaut;// initialisation break; case 17 : iapointe = new Reel17Pointe(); t = (*(((Reel17Pointe*)iapointe)->ipointe))->donnees; t[0] = defaut; t[1] = defaut; t[2] = defaut; t[3] = defaut; t[4] = defaut;t[5] = defaut;t[6] = defaut;t[7] = defaut;t[8] = defaut; t[9] = defaut;t[10] = defaut;t[11] = defaut;t[12] = defaut;t[13] = defaut; t[14] = defaut;t[15] = defaut;t[16] = defaut;// initialisation break; case 18 : iapointe = new Reel18Pointe(); t = (*(((Reel18Pointe*)iapointe)->ipointe))->donnees; t[0] = defaut; t[1] = defaut; t[2] = defaut; t[3] = defaut; t[4] = defaut;t[5] = defaut;t[6] = defaut;t[7] = defaut;t[8] = defaut; t[9] = defaut;t[10] = defaut;t[11] = defaut;t[12] = defaut;t[13] = defaut; t[14] = defaut;t[15] = defaut;t[16] = defaut;t[17] = defaut; // initialisation break; case 19 : iapointe = new Reel19Pointe(); t = (*(((Reel19Pointe*)iapointe)->ipointe))->donnees; t[0] = defaut; t[1] = defaut; t[2] = defaut; t[3] = defaut; t[4] = defaut;t[5] = defaut;t[6] = defaut;t[7] = defaut;t[8] = defaut; t[9] = defaut;t[10] = defaut;t[11] = defaut;t[12] = defaut;t[13] = defaut; t[14] = defaut;t[15] = defaut;t[16] = defaut;t[17] = defaut;t[18] = defaut; // initialisation break; case 20 : iapointe = new Reel20Pointe(); t = (*(((Reel20Pointe*)iapointe)->ipointe))->donnees; t[0] = defaut; t[1] = defaut; t[2] = defaut; t[3] = defaut; t[4] = defaut;t[5] = defaut;t[6] = defaut;t[7] = defaut;t[8] = defaut; t[9] = defaut;t[10] = defaut;t[11] = defaut;t[12] = defaut;t[13] = defaut; t[14] = defaut;t[15] = defaut;t[16] = defaut;t[17] = defaut;t[18] = defaut; t[19] = defaut; // initialisation break; */ default : // allocation classique t=new double [taille]; // allocation de la place memoire double* ptr=t; for (int i=0;iipointe)) ; // suppression de l'élément de la liste break; case 3 : delete ((Reel3Pointe*)iapointe); break; case 4 : Reel4Pointe* toto = (Reel4Pointe*)iapointe; delete toto; // delete ((Reel4Pointe*)iapointe); break; case 5 : delete ((Reel5Pointe*)iapointe); break; case 6 : delete ((Reel6Pointe*)iapointe); break; case 7 : delete ((Reel7Pointe*)iapointe); break; case 8 : delete ((Reel8Pointe*)iapointe); break; case 9 : delete ((Reel9Pointe*)iapointe); break; /* case 3 : listdouble3.erase(*(((Reel3Pointe*)iapointe)->ipointe)) ; // suppression de l'élément de la liste break; case 3 : listdouble3.erase(*(((Reel3Pointe*)iapointe)->ipointe)) ; // suppression de l'élément de la liste break; case 3 : listdouble3.erase(*(((Reel3Pointe*)iapointe)->ipointe)) ; // suppression de l'élément de la liste break; case 3 : listdouble3.erase(*(((Reel3Pointe*)iapointe)->ipointe)) ; // suppression de l'élément de la liste break; case 3 : listdouble3.erase(*(((Reel3Pointe*)iapointe)->ipointe)) ; // suppression de l'élément de la liste break; case 3 : listdouble3.erase(*(((Reel3Pointe*)iapointe)->ipointe)) ; // suppression de l'élément de la liste break; case 3 : listdouble3.erase(*(((Reel3Pointe*)iapointe)->ipointe)) ; // suppression de l'élément de la liste break; case 3 : listdouble3.erase(*(((Reel3Pointe*)iapointe)->ipointe)) ; // suppression de l'élément de la liste break; case 3 : listdouble3.erase(*(((Reel3Pointe*)iapointe)->ipointe)) ; // suppression de l'élément de la liste break; case 3 : listdouble3.erase(*(((Reel3Pointe*)iapointe)->ipointe)) ; // suppression de l'élément de la liste break; case 3 : listdouble3.erase(*(((Reel3Pointe*)iapointe)->ipointe)) ; // suppression de l'élément de la liste break; /* default : // desallocation classique delete t=new double [taille]; // allocation de la place memoire double* ptr=t; for (int i=0;i