Herezh_dev/Elements/Mecanique/Biellette/PoutTimo.cc

1 line
18 KiB
C++
Raw Normal View History

// FICHIER : PoutTimo.cp // CLASSE : PoutTimo // 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/>. //#include "Debug.h" #include <iostream> #include <stdlib.h> #include "Sortie.h" #include "PoutTimo.h" #include "FrontPointF.h" #include "FrontSegLine.h" //---------------------------------------------------------------- // def des donnees commune a tous les elements // la taille n'est pas defini ici car elle depend de la lecture //---------------------------------------------------------------- PoutTimo::DonneeCommune * PoutTimo::doCo = NULL; int PoutTimo::CalculResidu_t_PoutTimo_met_abstraite = 0; int PoutTimo::Calcul_implicit_PoutTimo_met_abstraite = 0; int PoutTimo::Calcul_VarDualSort = 0; PoutTimo::ConstrucElementpoutTimo PoutTimo::construcElementpoutTimo; // fonction privee // dans cette fonction il ne doit y avoir que les données communes !! void PoutTimo::Def_DonneeCommune() { // interpollation GeomSeg segment(1,2) ; // element geometrique correspondant: 1 pt integ, 2 noeuds // degre de liberte int dim = ParaGlob::Dimension(); DdlElement tab_ddl(2,dim); int posi = Id_nom_ddl("X1") -1; for (int i =1; i<= ParaGlob::Dimension(); i++) {tab_ddl (1,i) = Enum_ddl(i+posi); tab_ddl (2,i) = Enum_ddl(i+posi); } // def metrique // on definit les variables a priori toujours utiles Tableau<Enum_variable_metrique> tab(15); tab(1) = iM0; tab(2) = iMt; tab(3) = iMtdt ; tab(4)=igiB_0;tab(5)=igiB_t;tab(6)=igiB_tdt; tab(7)=igiH_0;tab(8)=igiH_t;tab(9)=igiH_tdt ; tab(10)=igijBB_0;tab(11)=igijBB_t;tab(12)=igijBB_tdt; tab(13)=igijHH_0;tab(14)=igijHH_t;tab(15)=igijHH_tdt ; // dim du pb , nb de vecteur de la base , tableau de ddl et la def de variables Met_biellette metri(ParaGlob::Dimension(),tab_ddl,tab,2) ; // definition de la classe static contenant toute les variables communes aux biellettes doCo = new DonneeCommune(segment,tab_ddl,metri); }; PoutTimo::PoutTimo () : // Constructeur par defaut ElemMeca() { id_interpol=BIE1; // donnees de la classe mere id_geom=POUT; // // stockage des donnees particulieres de la loi de comportement au point d'integ tabSaveDon.Change_taille(1); section=-1.; tab_noeud.Change_taille(2); // le fait de mettre les pointeurs a null permet // de savoir que l'element n'est pas complet tab_noeud(1) = NULL;tab_noeud(2) = NULL; // definition des donnees communes aux biellettes // a la premiere definition d'une biellette if (doCo == NULL) Def_DonneeCommune(); met = &(doCo->met_biellette); // met est defini dans elemeca // def pointe sur la deformation specifique a l'element def = new Deformation(*met,*this,(doCo->segment).taDphi(),(doCo->segment).taPhi()); //dimensionnement des deformations et contraintes epsBB = NevezTenseurBB (1); sigHH = NevezTenseurHH (1);