FreeFem  3.5.x
femMesh.hpp
1 // Emacs will be in -*- Mode: c++ -*-
2 //
3 // ********** DO NOT REMOVE THIS BANNER **********
4 //
5 // SUMMARY: Language for a Finite Element Method
6 //
7 // AUTHORS: C. Prud'homme
8 // ORG :
9 // E-MAIL : prudhomm@users.sourceforge.net
10 //
11 // ORIG-DATE: June-94
12 // LAST-MOD: 12-Jul-01 at 10:00:32 by
13 //
14 // DESCRIPTION:
15 /*
16  This program is free software; you can redistribute it and/or modify
17  it under the terms of the GNU General Public License as published by
18  the Free Software Foundation; either version 2 of the License, or
19  (at your option) any later version.
20 
21  This program is distributed in the hope that it will be useful,
22  but WITHOUT ANY WARRANTY; without even the implied warranty of
23  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24  GNU General Public License for more details.
25 
26  You should have received a copy of the GNU General Public License
27  along with this program; if not, write to the Free Software
28  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
29 
30 */
31 // DESCRIP-END.
32 //
33 
34 #ifndef __TRIANGUL_H
35 #define __TRIANGUL_H
36 
37 #include <femCommon.hpp>
38 
39 namespace fem
40 {
41  //DECLARE_CLASS( femMesh );
42 
52  class femMesh
53  {
54  public:
55 
59 
61  typedef long integer;
62 
64  typedef long logical;
65 
67  typedef float femPoint[2];
68 
70  typedef long femTriangle[3];
71 
73 
76  femMesh();
77  femMesh( femMesh const& );
79 
83 
84  int getNumberOfPoints() const
85  {
86  return np;
87  }
88 
89  int getNumberOfCells() const
90  {
91  return nt;
92  }
94 
98 
99  void setDimensions( int, int );
100 
102 
106 
108  void Delete()
109  {
110  if (rp)
111  {
112  delete [] rp;
113  rp = NULL;
114  }
115  if (tr)
116  {
117  delete [] tr;
118  tr = NULL;
119  }
120  if (ng)
121  {
122  delete [] ng;
123  ng = NULL;
124  }
125  if (ngt)
126  {
127  delete [] ngt;
128  ngt = NULL;
129  }
130  }
131 
133  void removeBdyT();
134 
136  long create (long nbs, long nbsmax, long nba,
137  float *crbdy, float *hbdy, long *arete, int *ngbdy, long *sd, long nbsd, int* flag,
138  int fflag);
139 
141  int mshptg_(float *cr,float *h, long *c, long *nu, long *nbs, long nbsmx, long *tri,
142  long *arete, long nba, long *sd,
143  long nbsd, long *reft, long *nbt, float coef, float puis, long *err);
144 
146  int check( float*, int ) const;
147 
149  public:
150  femPoint* rp;
151  femTriangle* tr;
152  int* ngt;
153  int* ng;
154 
155  private:
156 
157  void swapWithNeibhor( int );
158  int renumerotate();
159 
160  int mshrgl_ (float *c, long *nrfs, long *nbs, long *nu, long *w1,
161  long *w, float omega, long itermx, float eps);
162  int mshopt_ (long *c, long *nu, long *t, long a, long *err);
163  void mshvoi_ (long *nu, long *w1, long *w, long *nbt, long *nbs);
164  int msha1p_ (long *t, long *s, long *c, long *nu, long *reft, long *tete, long *nbt,
165  long *err);
166  int mshtri_ (float *cr, long *c, long *nbs, long *tri, long *nu, float *trfri, long *err);
167  int mshcxi_ (long *c, long *nu, long *tri, long *nbs, long *tete, long *err);
168  int mshfrt_ (long *c, long *nu, long *nbs, long *arete, long nba, long *sd,
169  long nbsd, long *reft, long *w, long *err);
170  int mshgpt_ (long *c, float *cr, long *nu, float *h, long *reft, long *nbs,
171  long nbsmx, long *nbt, float coef, float puis, float *trfri, long *err);
172  long mshlcl_ (long *c, long *nu, long *tete, long *s);
173  int mshtr1_ (long *criter, long *record, long *n);
174  int mshcvx_ (long direct, long *c, long *nu, long *pfold, long *err);
175  int mshfr1_ (long *c, long *nu, long *it1, long *ita, long *is1, long *s2, long *err);
176  int mshfr2_ (long *c, long *nu, long *lst, long *nbac, long *t, long *ta,
177  long *ss1, long *ss2, long *err);
178 
179  int gibbs1_ (integer * n, integer * record, integer * ptvois);
180  int gibbs2_ (integer * n, integer * record, integer * criter);
181  int gibbsa_ (integer * n, integer * ptvois, integer * vois, integer * r, integer * m,
182  integer * nv, integer * nx, integer * ny, integer * nn, integer * w1, integer * w2,
183  integer * pfold, integer * pfnew, integer * impre, integer * nfout);
184  int gibbsb_ (integer * x, integer * y, integer * n, integer * ptvois,
185  integer * vois, integer * nx, integer * ny, integer * nv, integer * nn, integer * m,
186  integer * wh, integer * wl, integer * r, integer * impre, integer * nfout);
187  int gibbsc_ (integer * nz, integer * nv, integer * niveau, integer * n, integer *);
188  int gibbsd_ (integer * racine, integer * n, integer * ptvois, integer *
189  vois, integer * nv, integer * r, integer * niveau);
190  int gibbst_ (integer * n, integer * p, integer * nv, integer * nn, integer * ptvois, integer * vois,
191  integer * m, integer * r, integer * new_, integer * option,
192  integer * pfnew, integer * impre, integer * nfout);
193  int gibbsv (integer * ptvoi, integer * vois, integer * lvois, integer * w, integer * v);
194 
195  private:
196  long np, nt;
197 
198  };
199 
200 }
201 
202 #endif /* __Triangul_H */
fem::femMesh::femPoint
float femPoint[2]
node type
Definition: femMesh.hpp:67
fem::femMesh::logical
long logical
logical
Definition: femMesh.hpp:64
fem::femMesh::femTriangle
long femTriangle[3]
cell type
Definition: femMesh.hpp:70
fem::femMesh::check
int check(float *, int) const
check the mesh
Definition: femMesh.cpp:278
fem::femMesh::mshptg_
int mshptg_(float *cr, float *h, long *c, long *nu, long *nbs, long nbsmx, long *tri, long *arete, long nba, long *sd, long nbsd, long *reft, long *nbt, float coef, float puis, long *err)
mesh generator
Definition: femMesh.cpp:302
fem::femMesh::Delete
void Delete()
delete the mesh
Definition: femMesh.hpp:108
fem::femMesh::integer
long integer
integer type
Definition: femMesh.hpp:61
fem::femMesh::create
long create(long nbs, long nbsmax, long nba, float *crbdy, float *hbdy, long *arete, int *ngbdy, long *sd, long nbsd, int *flag, int fflag)
prepare the mesh for generation
Definition: femMesh.cpp:190
femCommon.hpp
fem::femMesh
Mesh class.
Definition: femMesh.hpp:52

This is the FreeFEM reference manual
Provided by The KFEM project