ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/mtu/src/mg_poutre.cpp
Revision: 1180
Committed: Fri Sep 20 20:10:22 2024 UTC (7 months, 4 weeks ago) by francois
File size: 4283 byte(s)
Log Message:
Correction dans la quadratisation sans geometrie

File Contents

# User Rev Content
1 francois 1158 //####//------------------------------------------------------------
2     //####//------------------------------------------------------------
3     //####// MAGiC
4     //####// Jean Christophe Cuilliere et Vincent FRANCOIS
5     //####// Departement de Genie Mecanique - UQTR
6     //####//------------------------------------------------------------
7     //####// MAGIC est un projet de recherche de l equipe ERICCA
8     //####// du departement de genie mecanique de l Universite du Quebec a Trois Rivieres
9     //####// http://www.uqtr.ca/ericca
10     //####// http://www.uqtr.ca/
11     //####//------------------------------------------------------------
12     //####//------------------------------------------------------------
13     //####//
14     //####// mg_poutre.cpp
15     //####//
16     //####//------------------------------------------------------------
17     //####//------------------------------------------------------------
18     //####// COPYRIGHT 2000-2024
19     //####// jeu 13 jun 2024 11:58:55 EDT
20     //####//------------------------------------------------------------
21     //####//------------------------------------------------------------
22 francois 283
23    
24     #include "gestionversion.h"
25     #include "mg_poutre.h"
26    
27     MG_POUTRE::MG_POUTRE(std::string idori,unsigned long num):MG_ELEMENT_TOPOLOGIQUE(num,idori),num_materiau(-1)
28     {
29     }
30    
31     MG_POUTRE::MG_POUTRE(std::string idori):MG_ELEMENT_TOPOLOGIQUE(idori),num_materiau(-1)
32     {
33     }
34    
35     MG_POUTRE::MG_POUTRE(MG_POUTRE& mdd):MG_ELEMENT_TOPOLOGIQUE(mdd),lst_boucle(mdd.lst_boucle)
36     {
37     }
38    
39     MG_POUTRE::~MG_POUTRE()
40     {
41     }
42    
43     void MG_POUTRE::ajouter_mg_boucle(class MG_BOUCLE* mgbou)
44     {
45     lst_boucle.insert(lst_boucle.end(),mgbou);
46     }
47 francois 1180 bool MG_POUTRE::est_une_topo_element(void)
48 francois 753 {
49     return false;
50     }
51 francois 283 void MG_POUTRE::supprimer_mg_boucle(class MG_BOUCLE* mgbou)
52     {
53     std::vector<MG_BOUCLE*>::iterator i;
54     for (i=lst_boucle.begin();i!=lst_boucle.end();i++)
55     {
56     if ((*i)==mgbou)
57     {
58     lst_boucle.erase(i);
59     return;
60     }
61     }
62     }
63    
64    
65     int MG_POUTRE::get_nb_mg_boucle(void)
66     {
67     return lst_boucle.size();
68     }
69    
70     MG_BOUCLE* MG_POUTRE::get_mg_boucle(int num)
71     {
72     return lst_boucle[num];
73     }
74    
75 francois 1095 BOITE_3D MG_POUTRE::get_boite_3D(void)
76 couturad 911 {
77     BOITE_3D boite3d;
78     long k=0;
79     std::vector<MG_BOUCLE*>::iterator it;
80     for(it=lst_boucle.begin();it!=lst_boucle.end();it++)
81     {
82     MG_BOUCLE* boucle=*it;
83     long nb_coarete=boucle->get_nb_mg_coarete();
84     for(long i=0;i<nb_coarete;i++)
85     {
86     if(k==0)
87     {
88 francois 1095 boite3d = boucle->get_mg_coarete(i)->get_arete()->get_boite_3D();
89 couturad 911 }
90 francois 1095 else boite3d=boite3d+boucle->get_mg_coarete(i)->get_arete()->get_boite_3D();
91 couturad 911 k++;
92     }
93     }
94     return boite3d;
95     }
96    
97 francois 283 int MG_POUTRE::get_dimension(void)
98     {
99     return 1;
100     }
101    
102 couturad 906 int MG_POUTRE::get_type(void)
103     {
104     return TYPE_ELEMENT_TOPOLOGIQUE::POUTRE;
105     }
106    
107 francois 283 void MG_POUTRE::get_topologie_sousjacente(TPL_MAP_ENTITE<MG_ELEMENT_TOPOLOGIQUE*> *lst)
108     {
109     int nb=lst_boucle.size();
110     for (int i=0;i<nb;i++)
111     {
112     MG_BOUCLE* bou=lst_boucle[i];
113     int nb2=bou->get_nb_mg_coarete();
114     for (int j=0;j<nb2;j++)
115     {
116     MG_ARETE* are=bou->get_mg_coarete(j)->get_arete();
117     lst->ajouter(are);
118     are->get_topologie_sousjacente(lst);
119     }
120     }
121     }
122    
123 francois 763 void MG_POUTRE::enregistrer(std::ostream& o,double version)
124 francois 283 {
125     o << "%" << get_id() << "=POUTRE(" << get_idoriginal() << ",(";
126     for (unsigned int i=0;i<lst_boucle.size();i++)
127     {
128     o << "$" << lst_boucle[i]->get_id();
129     if (i!=lst_boucle.size()-1) o << ",";
130     else o << ")";
131     }
132     int nb=get_nb_ccf();
133 francois 795 if (version<2)
134     {
135 francois 283 o << "," << num_materiau << "," << nb;
136     if (nb!=0)
137     {
138     o << ",(";
139     for (int i=0;i<nb;i++)
140     {
141     char nom[3];
142     get_type_ccf(i,nom);
143     o << "(" << nom << "," << get_valeur_ccf(i) << ")";
144     if (i!=nb-1) o << "," ;
145     }
146     o << ")";
147     }
148     o << ");" << std::endl;
149 francois 795 }
150     else
151     {
152     o << "," ;
153     enregistrer_ccf(o,version);
154     o << ");" << std::endl;
155     }
156 francois 283 }
157    
158     void MG_POUTRE::change_num_materiau(int num)
159     {
160     num_materiau=num;
161     }
162    
163     int MG_POUTRE::get_num_materiau(void)
164     {
165     return num_materiau;
166 francois 767 }
167     bool MG_POUTRE::contient_element(MG_ELEMENT_MAILLAGE *ele)
168     {
169     bool res=get_lien_maillage()->contient(ele);
170     return res;
171 francois 283 }
172    
173     VCT& MG_POUTRE::get_vectorisation(void)
174     {
175     VCT *p=NULL;
176     return *p;
177     }