// 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 (mailto:gerardrio56@free.fr) * * $ * * PROJET: Herezh++ * * $ * ************************************************************************ * BUT: Assemblage des grandeurs locales dans les grandeurs * * globales. * * $ * * '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' * * * VERIFICATION: * * * * ! date ! auteur ! but ! * * ------------------------------------------------------------ * * ! ! ! ! * * $ * * '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' * * MODIFICATIONS: * * ! date ! auteur ! but ! * * ------------------------------------------------------------ * * $ * ************************************************************************/ #ifndef ASSEMBLAGE_H #define ASSEMBLAGE_H #include "Mat_abstraite.h" #include "DdlElement.h" #include "Noeud.h" #include "Tableau_T.h" #include "Nb_assemb.h" /// @addtogroup Les_classes_Matrices /// @{ /// class Assemblage { public : // CONSTRUCTEURS : // par défaut Assemblage (); // fonction d'un cas d'assemblage Assemblage (Nb_assemb nb_cas) : nb_casAssemb(nb_cas) {}; // de copie Assemblage (const Assemblage& a) : nb_casAssemb(a.nb_casAssemb) {}; // DESTRUCTEUR : // METHODES PUBLIQUES : // assemblage du second membre // vecglob : second membre global // vecloc : contribution de l'element au second membre // tab_ddl : ddl de l'element,tab_noeud : tableau de noeud de l'element // a l'aide du tab_ddl et de tab_noeud on recupere le pointeur // d'assemblage de chaque noeud void AssemSM (Vecteur& vecglob,const Vecteur& vecloc,const DdlElement& tab_ddl, const Tableau&tab_noeud); // assemblage de plusieurs second membre en parrallèle // vecglob : les seconds membres globaux // vecloc : contributions de l'element aux seconds membres // tab_ddl : ddl de l'element,tab_noeud : tableau de noeud de l'element // a l'aide du tab_ddl et de tab_noeud on recupere le pointeur // d'assemblage de chaque noeud void AssemSM (Tableau& vecglob,const Tableau& vecloc, const DdlElement& tab_ddl,const Tableau&tab_noeud); // assemblage des matrices symetriques // seul la moitiee supérieure de la matrice est assemblée // matglob : matrice globale // matloc : matrice locale , // tab_ddl : ddl de l'element,tab_noeud : tqbleau de noeud de l'element void AssembMatSym (Mat_abstraite & matglob,const Mat_abstraite & matloc, const DdlElement& tab_ddl,const Tableau&tab_noeud); // assemblage des matrices non symetriques // toute la matrice est assemblée // matglob : matrice globale // matloc : matrice locale , // tab_ddl : ddl de l'element,tab_noeud : tqbleau de noeud de l'element void AssembMatnonSym (Mat_abstraite & matglob,const Mat_abstraite & matloc, const DdlElement& tab_ddl,const Tableau&tab_noeud); // assemblage uniquement de la diagonale de matloc dans vecglob // vecglob : second membre global // matloc : matrice locale , // tab_ddl : ddl de l'element,tab_noeud : tqbleau de noeud de l'element void AssembDiagonale (Vecteur& vecglob,const Mat_abstraite & matloc, const DdlElement& tab_ddl,const Tableau&tab_noeud); // assemblage diagonale, = une majoration de la matrice des valeurs propre des matloc // vecglob : second membre global // matloc : matrice locale , // tab_ddl : ddl de l'element,tab_noeud : tqbleau de noeud de l'element void AssembDiagoMajorValPropre (Vecteur& vecglob,const Mat_abstraite & matloc, const DdlElement& tab_ddl,const Tableau&tab_noeud); // récup en lecture le numéro d'assemblage auquel l'instance se rapporte Nb_assemb Nb_cas_assemb() {return nb_casAssemb;}; // change le cas d'assemblage void Change_cas_assemblage(Nb_assemb nb_cas) { nb_casAssemb = nb_cas;}; protected : // VARIABLES PROTEGEES : // définition du numéro de cas d'assemblage auquel l'instance // se rapporte Nb_assemb nb_casAssemb; // CONSTRUCTEURS : // DESTRUCTEUR : // METHODES PROTEGEES : }; /// @} // end of group #endif