193{
194 int i, j;
195 long err = 0, nbt, nbsold = nbs;
196 long *c = NULL;
197 long *tri = NULL;
198 long *nu = NULL;
199 long *reft = NULL;
200 int *ngg = NULL;
201 float *cr = NULL;
202 float *h = NULL;
203
204 nbt = 2 * nbsmax;
205 nu = new long[6*nbt];
206 c = new long[2*nbsmax];
207 ngg = new int[nbsmax];
208 tri = new long[(4 * nbsmax + 2 * nbsd)];
209 reft = new long[nbt];
210 cr = new float[(2 * nbsmax + 2)];
211 h = new float[nbsmax];
212
213 for (i = 0; i < 2 * nba; i++)
214 arete[i]++;
215 for (i = 0; i < nbs; i++)
216 {
217 ngg[i] = ngbdy[i];
218 cr[2 * i] = crbdy[2 * i];
219 cr[2 * i + 1] = crbdy[2 * i + 1];
220 h[i] = hbdy[i];
221 }
222 for (i = nbs; i < nbsmax; i++)
223 ngg[i] = 0;
224
225 mshptg_ (cr, h, c, nu, &nbs, nbsmax, tri, arete, nba, (
long *) sd, nbsd, reft, &nbt, .25, .75, &err);
226 for (i = 0; i < 2 * nba; i++)
227 arete[i]--;
228 if (err)
229 goto L1;
230 if (*flag)
231 {
232 delete [] rp;rp = NULL;
233 delete [] tr;tr = NULL;
234 delete [] ng;ng = NULL;
235 delete [] ngt;ngt = NULL;
236 }
239 ng = new int[nbs];
240 ngt = new int[nbt];
241
242 *flag = 1;
243 np = nbs;
244 nt = nbt;
245 for (i = 0; i < nbt; i++)
246 {
247 for (j = 0; j < 3; j++)
248 tr[i][j] = nu[3 * i + j] - 1;
249 ngt[i] = reft[i] - 1;
250 }
251 for (i = 0; i < nbs; i++)
252 {
253 rp[i][0] = cr[2 * i];
254 rp[i][1] = cr[2 * i + 1];
255 if (i < nbsold)
256 ng[i] = ngg[i];
257 else
258 ng[i] = 0;
259 }
260
261 renumerotate();
262 if(!fflag) removeBdyT();
263
264L1:
265 delete [] nu;nu = NULL;
266 delete [] cr;cr = NULL;
267 delete [] c;c = NULL;
268 delete [] tri;tri = NULL;
269 delete [] reft;reft = NULL;
270 delete [] ngg;ngg = NULL;
271 delete [] h;h = NULL;
272 return err;
273}
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