MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
mailleur2d_structure.cpp
Aller à la documentation de ce fichier.
1 //####//------------------------------------------------------------
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 //####// mailleur2d_structure.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:55 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 #include <stdio.h>
23 #include <math.h>
24 #include "mg_gestionnaire.h"
25 #include "mailleur2d_structure.h"
26 #include "mg_maillage.h"
27 #include "fem_maillage.h"
28 #include "fem_hexa20.h"
29 #include "mg_geometrie.h"
30 #include "mg_sommet_noeud.h"
31 #include "mg_arete_element.h"
32 #include "mg_face_element.h"
33 #include "mg_volume_element.h"
34 #include "tpl_octree.h"
35 #include "mg_maillage_outils.h"
36 #include <vector>
37 
38 
39 struct integrale
40 {
41  double ti;
42  double li;
43 };
44 
45 MAILLEUR2D_STRUCTURE::MAILLEUR2D_STRUCTURE(double xmintmp, double xmaxtmp, double ymintmp, double ymaxtmp, int ntmp, int mtmp, MG_GESTIONNAIRE* gesttmp,int avecgeo,double unit):MAILLEUR(false),xmin(xmintmp),xmax(xmaxtmp),ymin(ymintmp),ymax(ymaxtmp),n(ntmp),m(mtmp),gest(gesttmp),geovirtuel(avecgeo),densitevariable(false),unite(unit),nbfonction(0)
46 {
47 }
48 MAILLEUR2D_STRUCTURE::MAILLEUR2D_STRUCTURE( double xmintmp, double xmaxtmp, double ymintmp, double ymaxtmp, double (*fx)(double),double (*fy)(double),MG_GESTIONNAIRE* gesttmp,int avecgeo,double unit):MAILLEUR(false),xmin(xmintmp),xmax(xmaxtmp),ymin(ymintmp),ymax(ymaxtmp),gest(gesttmp),geovirtuel(avecgeo),enx(fx),eny(fy),densitevariable(true),unite(unit),nbfonction(0)
49 {
50 }
51 
53 xmin(mdd.xmin),xmax(mdd.xmax),ymin(mdd.ymin),ymax(mdd.ymax),n(mdd.n),m(mdd.m),gest(mdd.gest),nbfonction(mdd.nbfonction)
54 {
55 }
56 
58 {
59 }
60 
61 
62 void MAILLEUR2D_STRUCTURE::discretise(std::vector<double> &tab,double min,double max,int &nb,double (*en)(double))
63 {
64  double t1=0;
65  double t2=1;
66  std::vector<integrale> tab_integrale;
67  double ti,tii,t;
68  double longueur_metrique=0.;
69  tii=t1;
70  double dt=1./pas;
71  do
72  {
73  ti=tii;
74  tii=ti+(t2-t1)*dt;
75  if (tii>t2) tii=t2;
76  t=0.7886751345*ti+0.2113248654*tii;
77  double facteur1=(max-min)/(*en)(t);
78  t=0.7886751345*tii+0.2113248654*ti;
79  double facteur2=(max-min)/(*en)(t);
80  longueur_metrique=longueur_metrique+0.5*(tii-ti)*(facteur1+facteur2);
81  integrale pas;
82  pas.ti=ti;
83  pas.li=longueur_metrique;
84  tab_integrale.insert(tab_integrale.end(),pas);
85  }
86  while (tii<t2);
87  nb=(int)floor(longueur_metrique);
88  if (longueur_metrique-floor(longueur_metrique)>0.5) nb++;
89  if (nb<1) nb=1;
90  double valeur_cible=longueur_metrique/nb;
91  tab.push_back(min);
92  int nbcree=0;
93  int nb_pas_integrale=tab_integrale.size();
94  for (int i=0;i<nb_pas_integrale;i++)
95  {
96  while ((tab_integrale[i].li>(nbcree+1)*valeur_cible) && (nbcree<nb-1))
97  {
98  double ti=tab_integrale[i].ti;
99  double tii=t2;
100  double li=0.;
101  if (i!=0) li=tab_integrale[i-1].li;
102  double lii=tab_integrale[i].li;
103  if (i!=nb_pas_integrale-1) tii=tab_integrale[i+1].ti;
104  t=ti+(tii-ti)/(lii-li)*((nbcree+1)*valeur_cible-li);
105  double x=min+t*(max-min);
106  tab.push_back(x);
107  nbcree++;
108  }
109  }
110  tab.push_back(max);
111 
112 }
114 {
115 nbfonction=nb;
116 }
117 
119 {
120  affiche((char*)"Création d'un maillage MG structuré");
121  double intx, inty;
122  std::vector<double> tabx,taby;
123  if (densitevariable==false)
124  {
125  intx=fabs(xmax-xmin)/n;
126  inty=fabs(ymax-ymin)/m;
127  }
128  else
129  {
130  discretise(tabx,xmin,xmax,n,enx);
131  discretise(taby,ymin,ymax,m,eny);
132  }
133 
134  MG_GEOMETRIE* geo=NULL;
135  MG_SOMMET_NOEUD *som1=NULL;
136  MG_SOMMET_NOEUD *som2=NULL;
137  MG_SOMMET_NOEUD *som3=NULL;
138  MG_SOMMET_NOEUD *som4=NULL;
139  MG_ARETE_ELEMENT* are1=NULL;
140  MG_ARETE_ELEMENT* are2=NULL;
141  MG_ARETE_ELEMENT* are3=NULL;
142  MG_ARETE_ELEMENT* are4=NULL;
143  MG_FACE_ELEMENT* face1=NULL;
144  if (geovirtuel==true)
145  {
146  geo=new MG_GEOMETRIE((char*)"VIRTUEL",(char*)"VIRTUEL");
149  som1=new MG_SOMMET_NOEUD(NULL);
150  geo->ajouter_mg_sommet(som1);
151  som2=new MG_SOMMET_NOEUD(NULL);
152  geo->ajouter_mg_sommet(som2);
153  som3=new MG_SOMMET_NOEUD(NULL);
154  geo->ajouter_mg_sommet(som3);
155  som4=new MG_SOMMET_NOEUD(NULL);
156  geo->ajouter_mg_sommet(som4);
157  are1=new MG_ARETE_ELEMENT();
158  geo->ajouter_mg_arete(are1);
159  are2=new MG_ARETE_ELEMENT();
160  geo->ajouter_mg_arete(are2);
161  are3=new MG_ARETE_ELEMENT();
162  geo->ajouter_mg_arete(are3);
163  are4=new MG_ARETE_ELEMENT();
164  geo->ajouter_mg_arete(are4);
165  face1=new MG_FACE_ELEMENT();
166  geo->ajouter_mg_face(face1);
167  for (int i=0;i<nbfonction;i++)
168  {
169  MG_GEOM_FONCTION *fonc=new MG_GEOM_FONCTION(0);
170  geo->ajouter_mg_geom_fonction(fonc);
171  }
172  }
173  MG_MAILLAGE* mai=new MG_MAILLAGE(geo);
174  gest->ajouter_mg_maillage(mai);
175  std::vector<MG_NOEUD*> vecnod;
176  for (int j=0; j<=m;j++)
177  {
178  for (int i=0; i<=n;i++)
179  {
180  MG_ELEMENT_TOPOLOGIQUE *topo=NULL;
181  if (geovirtuel)
182  {
183  if ((i==0) && (j==0)) topo=som1;
184  else if ((i==0) && (j==m)) topo=som2;
185  else if ((i==0) && (j==m)) topo=som3;
186  else if ((i==0) && (j==0)) topo=som4;
187  else if (j==0) topo=are1;
188  else if (i==n) topo=are2;
189  else if (j==m) topo=are3;
190  else if (j==0) topo=are4;
191  else topo=face1;
192  }
193  double x,y;
194  if (densitevariable==false)
195  {
196  y=ymin+(j*inty);
197  x=xmin+(i*intx);
198  }
199  else
200  {
201  x=tabx[i];
202  y=taby[j];
203  }
205  vecnod.push_back(nou);
206  if (geovirtuel)
207  {
208  if ((i==0) && (j==0)) som1->change_mg_noeud(nou);
209  else if ((i==n) && (j==0) ) som2->change_mg_noeud(nou);
210  else if ((i==n) && (j==m) ) som3->change_mg_noeud(nou);
211  else if ((i==0) && (j==m) ) som4->change_mg_noeud(nou);
212  }
213  }
214  }
215 if (geovirtuel)
216  {
217  for(int i=0; i<n;i++)
218  {
219  int j=0;
220  MG_NOEUD* nod1=vecnod[i+((n+1)*j)];
221  MG_NOEUD* nod2=vecnod[(i+1)+((n+1)*j)];
223  j=m;
224  MG_NOEUD* nod3=vecnod[i+((n+1)*j)];
225  MG_NOEUD* nod4=vecnod[(i+1)+((n+1)*j)];
227  }
228  for(int j=0; j<m;j++)
229  {
230  int i=0;
231  MG_NOEUD* nod1=vecnod[i+((n+1)*j)];
232  MG_NOEUD* nod2=vecnod[i+((n+1)*(j+1))];
234  i=n;
235  MG_NOEUD* nod3=vecnod[i+((n+1)*j)];
236  MG_NOEUD* nod4=vecnod[i+((n+1)*(j+1))];
238  }
239  }
240  for (int i=0;i<n;i++)
241  for (int j=0;j<m;j++)
242  {
243  MG_NOEUD* nod1=vecnod[i+((n+1)*j)];
244  MG_NOEUD* nod2=vecnod[(i+1)+((n+1)*j)];
245  MG_NOEUD* nod3=vecnod[(i+1)+((n+1)*(j+1))];
246  MG_NOEUD* nod4=vecnod[i+((n+1)*(j+1))];
247  mai->ajouter_mg_quadrangle(face1,nod1,nod4,nod3,nod2,MAGIC::ORIGINE::MAILLEUR_AUTO);
248  }
249 
250  BOITE_3D b(xmin,ymin,0.,xmax,ymax,0.);
251  mai->change_param_structure(b,n,m,0);
252  /*affiche((char*)"Création d'un maillage FEM structuré");
253  FEM_MAILLAGE* fem = new FEM_MAILLAGE(geo, mai,1);
254  gest->ajouter_fem_maillage(fem);
255  fem->construire();*/
256  return OK;
257 }
258 
259 
260 void MAILLEUR2D_STRUCTURE::ajuste(class MG_MAILLAGE* mai, MG_MAILLAGE* maibase, int nb)
261 {
262  LISTE_MG_NOEUD::iterator it;
263  double xmin=1e300,ymin=1e300,zmin=1e300;
264  double xmax=-1e300,ymax=-1e300,zmax=-1e300;
266  for (MG_NOEUD* no=maibase->get_premier_noeud(it);no!=NULL;no=maibase->get_suivant_noeud(it))
267  {
268  if (no->get_x()<xmin) xmin=no->get_x();
269  if (no->get_y()<ymin) ymin=no->get_y();
270  if (no->get_z()<zmin) zmin=no->get_z();
271  if (no->get_x()>xmax) xmax=no->get_x();
272  if (no->get_y()>ymax) ymax=no->get_y();
273  if (no->get_z()>zmax) zmax=no->get_z();
274  lst.ajouter(no);
275  }
276  BOITE_3D b(xmin,ymin,zmin,xmax,ymax,zmax);
277  b.change_grosseur(1.05);
279  oc.initialiser(&lst,1,b.get_xmin(),b.get_xmin(),b.get_zmin(),b.get_xmax(),b.get_xmax(),b.get_zmax());
280  LISTE_MG_TRIANGLE::iterator itt;
281  for (MG_TRIANGLE* tri=maibase->get_premier_triangle(itt);tri!=NULL;tri=maibase->get_suivant_triangle(itt))
282  oc.inserer(tri);
283 
284  for (MG_NOEUD* no=mai->get_premier_noeud(it);no!=NULL;no=mai->get_suivant_noeud(it))
285  {
286  double x=no->get_x();
287  double y=no->get_y();
288  double z=no->get_z();
290  oc.rechercher(x,y,z,1e-7,lsttrouve);
292  bool trouve=false;
293  for (MG_TRIANGLE* tri=lsttrouve.get_premier(itf);tri!=NULL;tri=lsttrouve.get_suivant(itf))
294  {
296  int res=ot.estdansletriangle(tri,x,y,z);
298  if (val>0) trouve=true;
299  }
300  if (trouve) no->change_nouveau_numero(1); else no->change_nouveau_numero(0);
301  }
302  LISTE_MG_QUADRANGLE::iterator itq;
303  std::vector<unsigned long> listeasupprimer;
304  for (MG_QUADRANGLE* quad=mai->get_premier_quadrangle(itq);quad!=NULL;quad=mai->get_suivant_quadrangle(itq))
305  {
306  MG_NOEUD* no1=quad->get_noeud1();
307  MG_NOEUD* no2=quad->get_noeud2();
308  MG_NOEUD* no3=quad->get_noeud3();
309  MG_NOEUD* no4=quad->get_noeud4();
311  if (val<nb)
312  listeasupprimer.push_back(quad->get_id());
313  }
314  for (int i=0;i<listeasupprimer.size();i++)
315  mai->supprimer_mg_quadrangleid(listeasupprimer[i]);
316 
317 
318 
319 }
TPL_MAP_ENTITE::get_premier
virtual X get_premier(ITERATEUR &it)
Definition: tpl_map_entite.h:112
mg_geometrie.h
MG_MAILLAGE::get_premier_noeud
MG_NOEUD * get_premier_noeud(LISTE_MG_NOEUD::iterator &it)
Definition: mg_maillage.cpp:548
MG_MAILLAGE::ajouter_mg_segment
MG_SEGMENT * ajouter_mg_segment(MG_ELEMENT_TOPOLOGIQUE *topo, class MG_NOEUD *mgnoeud1, class MG_NOEUD *mgnoeud2, int origine, double longue=0.0, unsigned long num=0)
Definition: mg_maillage.cpp:565
MG_GEOMETRIE::change_valeur_unite
void change_valeur_unite(double val)
Definition: mg_geometrie.cpp:2657
TPL_MAP_ENTITE
Definition: tpl_map_entite.h:35
MAILLEUR2D_STRUCTURE::unite
double unite
Definition: mailleur2d_structure.h:59
BOITE_3D::get_xmin
double get_xmin(void)
Definition: ot_boite_3d.cpp:104
mg_gestionnaire.h
MAILLEUR2D_STRUCTURE::~MAILLEUR2D_STRUCTURE
virtual ~MAILLEUR2D_STRUCTURE()
Definition: mailleur2d_structure.cpp:57
MG_MAILLAGE::change_param_structure
void change_param_structure(BOITE_3D btmp, int nxtmp, int nytmp, int nztmp)
Definition: mg_maillage.cpp:2663
MG_MAILLAGE::get_suivant_quadrangle
MG_QUADRANGLE * get_suivant_quadrangle(LISTE_MG_QUADRANGLE::iterator &it)
Definition: mg_maillage.cpp:1150
fem_maillage.h
MG_MAILLAGE::supprimer_mg_quadrangleid
int supprimer_mg_quadrangleid(unsigned long num)
Definition: mg_maillage.cpp:1036
mg_arete_element.h
MAILLEUR2D_STRUCTURE::m
int m
Definition: mailleur2d_structure.h:53
MAILLEUR2D_STRUCTURE::ymax
double ymax
Definition: mailleur2d_structure.h:51
MAGIC_AFFICHE::affiche
virtual void affiche(char *mess)
Definition: magic_affiche.cpp:43
MAILLEUR2D_STRUCTURE::eny
double(* eny)(double)
Definition: mailleur2d_structure.h:58
OK
const int OK
Definition: mg_definition.h:38
MG_TRIANGLE
Definition: mg_triangle.h:38
MG_GESTIONNAIRE
Definition: mg_gestionnaire.h:57
MAILLEUR::pas
int pas
Definition: mailleur.h:56
MAILLEUR2D_STRUCTURE::discretise
virtual void discretise(std::vector< double > &tab, double min, double max, int &nb, double(*en)(double))
Definition: mailleur2d_structure.cpp:62
MAILLEUR2D_STRUCTURE::geovirtuel
bool geovirtuel
Definition: mailleur2d_structure.h:55
MG_GEOMETRIE::ajouter_mg_sommet
virtual int ajouter_mg_sommet(MG_SOMMET *mgsom)
Definition: mg_geometrie.cpp:497
MG_MAILLAGE_OUTILS
Definition: mg_maillage_outils.h:47
MG_QUADRANGLE
Definition: mg_quadrangle.h:39
MG_ELEMENT_TOPOLOGIQUE
Definition: mg_element_topologique.h:51
TPL_OCTREE::inserer
virtual void inserer(BOITE_3D &boite, A a, TPL_CELLULE_OCTREE< A, CONDITION > *cellule)
Definition: tpl_octree.h:897
MAILLEUR2D_STRUCTURE::maille
virtual int maille(class MG_GROUPE_TOPOLOGIQUE *mggt=NULL)
Definition: mailleur2d_structure.cpp:118
MAILLEUR2D_STRUCTURE::xmax
double xmax
Definition: mailleur2d_structure.h:49
BOITE_3D::get_zmax
double get_zmax(void)
Definition: ot_boite_3d.cpp:129
MG_GESTIONNAIRE::ajouter_mg_maillage
int ajouter_mg_maillage(MG_MAILLAGE *mgmai)
Definition: mg_gestionnaire.cpp:521
integrale::ti
double ti
Definition: CAD4FE_mailleur1d.cpp:40
MG_ELEMENT_MAILLAGE::get_nouveau_numero
virtual int get_nouveau_numero(void)
Definition: mg_element_maillage.cpp:81
MG_ARETE_ELEMENT
Definition: mg_arete_element.h:32
mg_maillage_outils.h
MG_GEOMETRIE::ajouter_mg_geom_fonction
virtual int ajouter_mg_geom_fonction(MG_GEOM_FONCTION *mggeofon)
Definition: mg_geometrie.cpp:2141
mg_volume_element.h
MG_MAILLAGE::get_premier_triangle
MG_TRIANGLE * get_premier_triangle(LISTE_MG_TRIANGLE::iterator &it)
Definition: mg_maillage.cpp:912
MG_GESTIONNAIRE::ajouter_mg_geometrie
int ajouter_mg_geometrie(MG_GEOMETRIE *mggeo)
Definition: mg_gestionnaire.cpp:306
BOITE_3D::get_xmax
double get_xmax(void)
Definition: ot_boite_3d.cpp:109
integrale
Definition: CAD4FE_mailleur1d.cpp:38
MG_NOEUD
Definition: mg_noeud.h:41
MAILLEUR2D_STRUCTURE::nbfonction
int nbfonction
Definition: mailleur2d_structure.h:60
integrale::li
double li
Definition: CAD4FE_mailleur1d.cpp:41
MG_GEOM_FONCTION
Definition: mg_geom_fonction.h:29
TPL_OCTREE::rechercher
virtual void rechercher(BOITE_3D &boite, TPL_MAP_ENTITE< A > &liste_entite_trouve, TPL_CELLULE_OCTREE< A, CONDITION > *cellule)
Definition: tpl_octree.h:606
TPL_LISTE_ENTITE::ajouter
virtual void ajouter(X x)
Definition: tpl_liste_entite.h:38
TPL_MAP_ENTITE::ITERATEUR
std::map< unsigned long, X, std::less< unsigned long > >::iterator ITERATEUR
Definition: tpl_map_entite.h:38
mg_face_element.h
mg_sommet_noeud.h
tpl_octree.h
MAILLEUR2D_STRUCTURE::ajuste
virtual void ajuste(class MG_MAILLAGE *mai, MG_MAILLAGE *maibase, int nb)
Definition: mailleur2d_structure.cpp:260
MAILLEUR2D_STRUCTURE
Definition: mailleur2d_structure.h:35
MG_GEOMETRIE::ajouter_mg_face
virtual int ajouter_mg_face(MG_FACE *mgface)
Definition: mg_geometrie.cpp:1210
MAILLEUR2D_STRUCTURE::gest
MG_GESTIONNAIRE * gest
Definition: mailleur2d_structure.h:54
OPERATEUR::INTERIEUR
@ INTERIEUR
Definition: ot_mathematique.h:435
BOITE_3D
Definition: ot_boite_3d.h:27
mg_maillage.h
MG_GEOMETRIE::ajouter_mg_arete
virtual int ajouter_mg_arete(MG_ARETE *mgarete)
Definition: mg_geometrie.cpp:759
MG_GROUPE_TOPOLOGIQUE
Definition: mg_groupe_topologique.h:31
MAILLEUR2D_STRUCTURE::MAILLEUR2D_STRUCTURE
MAILLEUR2D_STRUCTURE(double xmintmp, double xmaxtmp, double ymintmp, double ymaxtmp, int ntmp, int mtmp, MG_GESTIONNAIRE *gesttmp, int avecgeo=false, double unit=1.)
Definition: mailleur2d_structure.cpp:45
MAILLEUR2D_STRUCTURE::xmin
double xmin
Definition: mailleur2d_structure.h:48
BOITE_3D::get_zmin
double get_zmin(void)
Definition: ot_boite_3d.cpp:124
MAILLEUR2D_STRUCTURE::n
int n
Definition: mailleur2d_structure.h:52
MAILLEUR
Definition: mailleur.h:33
MG_GEOMETRIE
Definition: mg_geometrie.h:84
MG_MAILLAGE::get_suivant_triangle
MG_TRIANGLE * get_suivant_triangle(LISTE_MG_TRIANGLE::iterator &it)
Definition: mg_maillage.cpp:920
MG_MAILLAGE
Definition: mg_maillage.h:62
TPL_LISTE_ENTITE< MG_NOEUD * >
fem_hexa20.h
MG_FACE_ELEMENT
Definition: mg_face_element.h:32
mailleur2d_structure.h
res
#define res(i, j)
MAILLEUR2D_STRUCTURE::densitevariable
bool densitevariable
Definition: mailleur2d_structure.h:56
MAILLEUR2D_STRUCTURE::ajouter_fonction_geometrie
virtual void ajouter_fonction_geometrie(int nb)
Definition: mailleur2d_structure.cpp:113
BOITE_3D::change_grosseur
void change_grosseur(double f)
Definition: ot_boite_3d.cpp:176
TPL_MAP_ENTITE::get_suivant
virtual X get_suivant(ITERATEUR &it)
Definition: tpl_map_entite.h:120
MAILLEUR2D_STRUCTURE::ymin
double ymin
Definition: mailleur2d_structure.h:50
MG_MAILLAGE::get_premier_quadrangle
MG_QUADRANGLE * get_premier_quadrangle(LISTE_MG_QUADRANGLE::iterator &it)
Definition: mg_maillage.cpp:1142
MG_SOMMET_NOEUD
Definition: mg_sommet_noeud.h:33
MAGIC::ORIGINE::MAILLEUR_AUTO
@ MAILLEUR_AUTO
Definition: mg_definition.h:79
MG_SOMMET_NOEUD::change_mg_noeud
virtual void change_mg_noeud(MG_NOEUD *notmp)
Definition: mg_sommet_noeud.cpp:117
TPL_OCTREE::initialiser
virtual void initialiser(TPL_LISTE_ENTITE< CONDITION > *lst_entite, int nombre, double xmin, double ymin, double zmin, double xmax, double ymax, double zmax)
Definition: tpl_octree.h:366
TPL_OCTREE< MG_TRIANGLE *, MG_NOEUD * >
MG_MAILLAGE::get_suivant_noeud
MG_NOEUD * get_suivant_noeud(LISTE_MG_NOEUD::iterator &it)
Definition: mg_maillage.cpp:556
MG_MAILLAGE::ajouter_mg_quadrangle
MG_QUADRANGLE * ajouter_mg_quadrangle(MG_ELEMENT_TOPOLOGIQUE *topo, class MG_NOEUD *mgnoeud1, class MG_NOEUD *mgnoeud2, class MG_NOEUD *mgnoeud3, class MG_NOEUD *mgnoeud4, int origine, unsigned long num=0)
Definition: mg_maillage.cpp:930
MAILLEUR2D_STRUCTURE::enx
double(* enx)(double)
Definition: mailleur2d_structure.h:57
MG_MAILLAGE_OUTILS::compare_etat_triangle
int compare_etat_triangle(int etat, int valeur)
Definition: mg_maillage_outils.cpp:87
MG_MAILLAGE_OUTILS::estdansletriangle
int estdansletriangle(MG_TRIANGLE *tri, double x, double y, double z)
Definition: mg_maillage_outils.cpp:53
MG_MAILLAGE::ajouter_mg_noeud
MG_NOEUD * ajouter_mg_noeud(MG_ELEMENT_TOPOLOGIQUE *topo, double xx, double yy, double zz, int origine, unsigned long num=0)
Definition: mg_maillage.cpp:421
m
#define m(i, j)