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
39namespace 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 */
Mesh class.
Definition femMesh.hpp:53
void Delete()
delete the mesh
Definition femMesh.hpp:108
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
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
float femPoint[2]
node type
Definition femMesh.hpp:67
long femTriangle[3]
cell type
Definition femMesh.hpp:70
long logical
logical
Definition femMesh.hpp:64
long integer
integer type
Definition femMesh.hpp:61
int check(float *, int) const
check the mesh
Definition femMesh.cpp:278

This is the FreeFEM reference manual
Provided by The KFEM project