Mmg
Simplicial remeshers (mesh adaptation, isovalue discretization, lagrangian movement)
API_functionsf_3d.c
Go to the documentation of this file.
1/* =============================================================================
2** This file is part of the mmg software package for the tetrahedral
3** mesh modification.
4** Copyright (c) Bx INP/CNRS/Inria/UBordeaux/UPMC, 2004-
5**
6** mmg is free software: you can redistribute it and/or modify it
7** under the terms of the GNU Lesser General Public License as published
8** by the Free Software Foundation, either version 3 of the License, or
9** (at your option) any later version.
10**
11** mmg is distributed in the hope that it will be useful, but WITHOUT
12** ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13** FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
14** License for more details.
15**
16** You should have received a copy of the GNU Lesser General Public
17** License and of the GNU General Public License along with mmg (in
18** files COPYING.LESSER and COPYING). If not, see
19** <http://www.gnu.org/licenses/>. Please read their terms carefully and
20** use this copy of the mmg distribution only if you accept them.
21** =============================================================================
22*/
23
41#include "libmmg3d_private.h"
42#include "libmmg3d.h"
43
47FORTRAN_VARIADIC ( MMG3D_INIT_MESH, mmg3d_init_mesh,
48 (const int starter, ... ),
49 va_list argptr;
50 int ier;
51
53
55
57
58 if ( !ier ) exit(EXIT_FAILURE);
59
60 return;
61 )
62
68 return;
69}
70
74FORTRAN_NAME(MMG3D_SET_INPUTMESHNAME, mmg3d_set_inputmeshname,
75 (MMG5_pMesh *mesh, char* meshin, int *strlen0, int* retval),
77 char *tmp = NULL;
78
79 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
81 tmp[*strlen0] = '\0';
84
85 return;
86}
87
91FORTRAN_NAME(MMG3D_SET_INPUTSOLNAME, mmg3d_set_inputsolname,
92 (MMG5_pMesh *mesh,MMG5_pSol *sol, char* solin, int* strlen0, int* retval),
93 (mesh,sol,solin,strlen0,retval)) {
94
95 char *tmp = NULL;
96
97 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
98 strncpy(tmp,solin,*strlen0);
99 tmp[*strlen0] = '\0';
102
103 return;
104}
105
109FORTRAN_NAME(MMG3D_SET_OUTPUTMESHNAME,mmg3d_set_outputmeshname,
110 (MMG5_pMesh *mesh, char* meshout, int* strlen0,int* retval),
111 (mesh,meshout,strlen0,retval)){
112 char *tmp = NULL;
113
114 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
115 strncpy(tmp,meshout,*strlen0);
116 tmp[*strlen0] = '\0';
119
120 return;
121}
122
126FORTRAN_NAME(MMG3D_SET_OUTPUTSOLNAME,mmg3d_set_outputsolname,
127 (MMG5_pMesh *mesh,MMG5_pSol *sol, char* solout,int* strlen0, int* retval),
128 (mesh,sol,solout,strlen0,retval)){
129 char *tmp = NULL;
130
131 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
132 strncpy(tmp,solout,*strlen0);
133 tmp[*strlen0] = '\0';
136
137 return;
138}
139
143FORTRAN_NAME(MMG3D_SET_INPUTPARAMNAME, mmg3d_set_inputparamname,
144 (MMG5_pMesh *mesh,char* fparamin, int* strlen0, int* retval),
145 (mesh,fparamin,strlen0,retval)) {
146
147 char *tmp = NULL;
148
149 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
150 strncpy(tmp,fparamin,*strlen0);
151 tmp[*strlen0] = '\0';
154
155 return;
156}
157
161FORTRAN_NAME(MMG3D_SET_SOLSIZE,mmg3d_set_solsize,
162 (MMG5_pMesh *mesh, MMG5_pSol *sol, int* typEntity,
163 MMG5_int* np, int* typSol, int* retval),
164 (mesh, sol, typEntity, np, typSol, retval)) {
165 *retval = MMG3D_Set_solSize(*mesh,*sol,*typEntity,*np,*typSol);
166 return;
167}
168
172FORTRAN_NAME(MMG3D_SET_SOLSATVERTICESSIZE,mmg3d_set_solsatverticessize,
173 (MMG5_pMesh *mesh, MMG5_pSol *sol,int* nsols,
174 MMG5_int* nentities, int* typSol, int* retval),
175 (mesh, sol, nsols, nentities, typSol, retval)) {
176 *retval = MMG3D_Set_solsAtVerticesSize(*mesh,sol,*nsols,*nentities,typSol);
177 return;
178}
179
183FORTRAN_NAME(MMG3D_SET_MESHSIZE,mmg3d_set_meshsize,
184 (MMG5_pMesh *mesh, MMG5_int *np, MMG5_int *ne, MMG5_int *nprism,
185 MMG5_int *nt, MMG5_int *nquad, MMG5_int *na, int *retval),
186 (mesh,np,ne,nprism,nt,nquad,na,retval)) {
187 *retval = MMG3D_Set_meshSize(*mesh,*np,*ne,*nprism,*nt,*nquad,*na);
188 return;
189}
190
194FORTRAN_NAME(MMG3D_GET_SOLSIZE,mmg3d_get_solsize,
195 (MMG5_pMesh *mesh, MMG5_pSol *sol, int* typEntity, MMG5_int* np, int* typSol, int* retval),
196 (mesh,sol,typEntity,np,typSol,retval)) {
197
198 *retval = MMG3D_Get_solSize(*mesh,*sol,typEntity,np,typSol);
199 return;
200}
201
205FORTRAN_NAME(MMG3D_GET_SOLSATVERTICESSIZE,mmg3d_get_solsatverticessize,
206 (MMG5_pMesh *mesh, MMG5_pSol *sol, int *nsols,
207 MMG5_int* nentities, int* typSol, int* retval),
208 (mesh,sol,nsols,nentities,typSol,retval)) {
209
210 *retval = MMG3D_Get_solsAtVerticesSize(*mesh,sol,nsols,nentities,typSol);
211 return;
212}
213
217FORTRAN_NAME(MMG3D_GET_MESHSIZE,mmg3d_get_meshsize,
218 (MMG5_pMesh *mesh, MMG5_int* np, MMG5_int* ne,MMG5_int *nprism,
219 MMG5_int* nt,MMG5_int *nquad, MMG5_int* na, int* retval),
220 (mesh,np,ne,nprism,nt,nquad,na,retval)) {
221
222 *retval = MMG3D_Get_meshSize(*mesh,np,ne,nprism,nt,nquad,na);
223 return;
224}
225
229FORTRAN_NAME(MMG3D_SET_VERTEX,mmg3d_set_vertex,
230 (MMG5_pMesh *mesh, double* c0, double* c1, double* c2, MMG5_int* ref,
231 MMG5_int* pos, int* retval),
232 (mesh,c0,c1,c2,ref,pos,retval)) {
233
234 *retval = MMG3D_Set_vertex(*mesh,*c0,*c1,*c2,*ref,*pos);
235 return;
236}
240FORTRAN_NAME(MMG3D_GET_VERTEX,mmg3d_get_vertex,
241 (MMG5_pMesh *mesh, double* c0, double* c1, double* c2, MMG5_int* ref,
242 int* isCorner, int* isRequired, int* retval),
243 (mesh,c0,c1,c2,ref,isCorner,isRequired, retval)) {
244 *retval = MMG3D_Get_vertex(*mesh,c0,c1,c2,ref,isCorner,isRequired);
245 return;
246}
250FORTRAN_NAME(MMG3D_GETBYIDX_VERTEX,mmg3d_getbyidx_vertex,
251 (MMG5_pMesh *mesh, double* c0, double* c1, double* c2, MMG5_int* ref,
252 int* isCorner, int* isRequired, MMG5_int* idx,int* retval),
253 (mesh,c0,c1,c2,ref,isCorner,isRequired,idx, retval)) {
254 *retval = MMG3D_GetByIdx_vertex(*mesh,c0,c1,c2,ref,isCorner,isRequired,*idx);
255 return;
256}
257
261FORTRAN_NAME(MMG3D_SET_VERTICES,mmg3d_set_vertices,
262 (MMG5_pMesh *mesh, double* vertices, MMG5_int* refs, int* retval),
263 (mesh,vertices,refs,retval)) {
264
265 *retval = MMG3D_Set_vertices(*mesh,vertices,refs);
266 return;
267}
268
269
273FORTRAN_NAME(MMG3D_GET_VERTICES,mmg3d_get_vertices,
274 (MMG5_pMesh *mesh, double* vertices, MMG5_int* refs,
275 int* areCorners, int* areRequired, int* retval),
276 (mesh,vertices,refs,areCorners,areRequired, retval)) {
277 *retval = MMG3D_Get_vertices(*mesh,vertices,refs,areCorners,areRequired);
278 return;
279}
280
284FORTRAN_NAME(MMG3D_SET_TETRAHEDRON,mmg3d_set_tetrahedron,
285 (MMG5_pMesh *mesh, MMG5_int *v0, MMG5_int *v1, MMG5_int *v2, MMG5_int *v3, MMG5_int *ref,
286 MMG5_int *pos, int* retval),
287 (mesh,v0,v1,v2,v3,ref,pos,retval)){
288 *retval = MMG3D_Set_tetrahedron(*mesh,*v0,*v1,*v2,*v3,*ref,*pos);
289 return;
290}
291
295FORTRAN_NAME(MMG3D_SET_TETRAHEDRA,mmg3d_set_tetrahedra,
296 (MMG5_pMesh *mesh, MMG5_int *tetra, MMG5_int *refs, int* retval),
297 (mesh,tetra,refs,retval)){
298 *retval = MMG3D_Set_tetrahedra(*mesh,tetra,refs);
299 return;
300}
301
305FORTRAN_NAME(MMG3D_GET_TETRAHEDRON,mmg3d_get_tetrahedron,
306 (MMG5_pMesh *mesh, MMG5_int* v0, MMG5_int* v1, MMG5_int* v2, MMG5_int *v3,
307 MMG5_int* ref, int* isRequired, int* retval),
308 (mesh,v0,v1,v2,v3,ref,isRequired,retval)) {
309 *retval = MMG3D_Get_tetrahedron(*mesh,v0,v1,v2,v3,ref,isRequired);
310 return;
311}
315FORTRAN_NAME(MMG3D_GET_TETRAHEDRA,mmg3d_get_tetrahedra,
316 (MMG5_pMesh *mesh, MMG5_int* tetra, MMG5_int* refs, int* areRequired,
317 int* retval),
318 (mesh,tetra,refs,areRequired,retval)) {
319 *retval = MMG3D_Get_tetrahedra(*mesh,tetra,refs,areRequired);
320 return;
321}
322
326FORTRAN_NAME(MMG3D_SET_PRISM,mmg3d_set_prism,
327 (MMG5_pMesh *mesh, MMG5_int *v0, MMG5_int *v1, MMG5_int *v2, MMG5_int *v3,
328 MMG5_int *v4, MMG5_int *v5,MMG5_int *ref,MMG5_int *pos, int* retval),
329 (mesh,v0,v1,v2,v3,v4,v5,ref,pos,retval)){
330 *retval = MMG3D_Set_prism(*mesh,*v0,*v1,*v2,*v3,*v4,*v5,*ref,*pos);
331 return;
332}
333
337FORTRAN_NAME(MMG3D_SET_PRISMS,mmg3d_set_prisms,
338 (MMG5_pMesh *mesh, MMG5_int *prisms, MMG5_int *refs, int* retval),
339 (mesh,prisms,refs,retval)){
340 *retval = MMG3D_Set_prisms(*mesh,prisms,refs);
341 return;
342}
343
347FORTRAN_NAME(MMG3D_GET_PRISM,mmg3d_get_prism,
348 (MMG5_pMesh *mesh, MMG5_int* v0, MMG5_int* v1, MMG5_int* v2, MMG5_int *v3,
349 MMG5_int *v4, MMG5_int* v5,MMG5_int* ref, int* isRequired, int* retval),
350 (mesh,v0,v1,v2,v3,v4,v5,ref,isRequired,retval)) {
351 *retval = MMG3D_Get_prism(*mesh,v0,v1,v2,v3,v4,v5,ref,isRequired);
352 return;
353}
357FORTRAN_NAME(MMG3D_GET_PRISMS,mmg3d_get_prisms,
358 (MMG5_pMesh *mesh, MMG5_int* prisms, MMG5_int* refs, int* areRequired,
359 int* retval),
360 (mesh,prisms,refs,areRequired,retval)) {
361 *retval = MMG3D_Get_prisms(*mesh,prisms,refs,areRequired);
362 return;
363}
364
368FORTRAN_NAME(MMG3D_SET_TRIANGLE,mmg3d_set_triangle,
369 (MMG5_pMesh *mesh, MMG5_int* v0, MMG5_int* v1, MMG5_int* v2, MMG5_int* ref,MMG5_int* pos,
370 int* retval),
371 (mesh,v0,v1,v2,ref,pos,retval)) {
372 *retval = MMG3D_Set_triangle(*mesh, *v0, *v1, *v2, *ref, *pos);
373 return;
374}
375
379FORTRAN_NAME(MMG3D_GET_TRIANGLE,mmg3d_get_triangle,
380 (MMG5_pMesh *mesh, MMG5_int* v0, MMG5_int* v1, MMG5_int* v2, MMG5_int* ref
381 ,int* isRequired, int* retval),
382 (mesh,v0,v1,v2,ref,isRequired,retval)) {
383 *retval = MMG3D_Get_triangle(*mesh,v0,v1,v2,ref,isRequired);
384 return;
385}
389FORTRAN_NAME(MMG3D_SET_TRIANGLES,mmg3d_set_triangles,
390 (MMG5_pMesh *mesh, MMG5_int* tria, MMG5_int* refs,
391 int* retval),
392 (mesh,tria,refs,retval)) {
393 *retval = MMG3D_Set_triangles(*mesh, tria, refs);
394 return;
395}
396
400FORTRAN_NAME(MMG3D_GET_TRIANGLES,mmg3d_get_triangles,
401 (MMG5_pMesh *mesh, MMG5_int* tria, MMG5_int* refs,int* areRequired,
402 int* retval),
403 (mesh,tria,refs,areRequired,retval)) {
404 *retval = MMG3D_Get_triangles(*mesh,tria,refs,areRequired);
405 return;
406}
410FORTRAN_NAME(MMG3D_SET_QUADRILATERAL,mmg3d_set_quadrilateral,
411 (MMG5_pMesh *mesh, MMG5_int* v0, MMG5_int* v1, MMG5_int* v2,MMG5_int *v3,
412 MMG5_int* ref,MMG5_int* pos,int* retval),
413 (mesh,v0,v1,v2,v3,ref,pos,retval)) {
414 *retval = MMG3D_Set_quadrilateral(*mesh, *v0, *v1, *v2, *v3,*ref, *pos);
415 return;
416}
417
421FORTRAN_NAME(MMG3D_GET_QUADRILATERAL,mmg3d_get_quadrilateral,
422 (MMG5_pMesh *mesh, MMG5_int* v0, MMG5_int* v1, MMG5_int* v2,MMG5_int *v3,
423 MMG5_int* ref,int* isRequired, int* retval),
424 (mesh,v0,v1,v2,v3,ref,isRequired,retval)) {
425 *retval = MMG3D_Get_quadrilateral(*mesh,v0,v1,v2,v3,ref,isRequired);
426 return;
427}
431FORTRAN_NAME(MMG3D_SET_QUADRILATERALS,mmg3d_set_quadrilaterals,
432 (MMG5_pMesh *mesh, MMG5_int* quads, MMG5_int* refs,
433 int* retval),
434 (mesh,quads,refs,retval)) {
435 *retval = MMG3D_Set_quadrilaterals(*mesh, quads, refs);
436 return;
437}
438
442FORTRAN_NAME(MMG3D_GET_QUADRILATERALS,mmg3d_get_quadrilaterals,
443 (MMG5_pMesh *mesh, MMG5_int* quads, MMG5_int* refs,int* areRequired,
444 int* retval),
445 (mesh,quads,refs,areRequired,retval)) {
446 *retval = MMG3D_Get_quadrilaterals(*mesh,quads,refs,areRequired);
447 return;
448}
449
453FORTRAN_NAME(MMG3D_SET_EDGE,mmg3d_set_edge,
454 (MMG5_pMesh *mesh, MMG5_int *v0, MMG5_int *v1, MMG5_int *ref, MMG5_int *pos, int* retval),
455 (mesh,v0,v1,ref,pos,retval)){
456 *retval = MMG3D_Set_edge(*mesh,*v0,*v1,*ref,*pos);
457 return;
458}
459
463FORTRAN_NAME(MMG3D_GET_EDGE,mmg3d_get_edge,(MMG5_pMesh *mesh, MMG5_int* e0, MMG5_int* e1, MMG5_int* ref
464 ,int* isRidge, int* isRequired, int* retval),
465 (mesh,e0,e1,ref,isRidge,isRequired,retval)) {
466 *retval = MMG3D_Get_edge(*mesh,e0,e1,ref,isRidge,isRequired);
467 return;
468}
472FORTRAN_NAME(MMG3D_SET_EDGES,mmg3d_set_edges,
473 (MMG5_pMesh *mesh, MMG5_int *edges, MMG5_int *refs, int* retval),
474 (mesh,edges,refs,retval)){
475 *retval = MMG3D_Set_edges(*mesh,edges,refs);
476 return;
477}
478
482FORTRAN_NAME(MMG3D_GET_EDGES,mmg3d_get_edges,(MMG5_pMesh *mesh, MMG5_int* edges,
483 MMG5_int* refs,int* areRidges,
484 int* areRequired, int* retval),
485 (mesh,edges,refs,areRidges,areRequired,retval)) {
486 *retval = MMG3D_Get_edges(*mesh,edges,refs,areRidges,areRequired);
487 return;
488}
489
493FORTRAN_NAME(MMG3D_SET_CORNER,mmg3d_set_corner,(MMG5_pMesh *mesh, MMG5_int *k, int* retval),
494 (mesh,k,retval)) {
496 return;
497}
498
502FORTRAN_NAME(MMG3D_UNSET_CORNER,mmg3d_unset_corner,(MMG5_pMesh *mesh, MMG5_int *k, int* retval),
503 (mesh,k,retval)) {
505 return;
506}
507
511FORTRAN_NAME(MMG3D_SET_REQUIREDVERTEX,mmg3d_set_requiredvertex,
512 (MMG5_pMesh *mesh, MMG5_int *k, int* retval),
513 (mesh,k,retval)) {
515 return;
516}
517
521FORTRAN_NAME(MMG3D_UNSET_REQUIREDVERTEX,mmg3d_unset_requiredvertex,
522 (MMG5_pMesh *mesh, MMG5_int *k, int* retval),
523 (mesh,k,retval)) {
525 return;
526}
527
531FORTRAN_NAME(MMG3D_SET_REQUIREDTETRAHEDRON,mmg3d_set_requiredtetrahedron,
532 (MMG5_pMesh *mesh, MMG5_int *k, int* retval),
533 (mesh,k,retval)) {
535 return;
536}
537
541FORTRAN_NAME(MMG3D_UNSET_REQUIREDTETRAHEDRON,mmg3d_unset_requiredtetrahedron,
542 (MMG5_pMesh *mesh, MMG5_int *k, int* retval),
543 (mesh,k,retval)) {
545 return;
546}
547
551FORTRAN_NAME(MMG3D_SET_REQUIREDTETRAHEDRA,mmg3d_set_requiredtetrahedra,
552 (MMG5_pMesh *mesh, MMG5_int *reqIdx, MMG5_int *nreq, int* retval),
553 (mesh,reqIdx,nreq,retval)) {
554 *retval = MMG3D_Set_requiredTetrahedra(*mesh,reqIdx, *nreq);
555 return;
556}
557
561FORTRAN_NAME(MMG3D_UNSET_REQUIREDTETRAHEDRA,mmg3d_unset_requiredtetrahedra,
562 (MMG5_pMesh *mesh, MMG5_int *reqIdx, MMG5_int *nreq, int* retval),
563 (mesh,reqIdx,nreq,retval)) {
564 *retval = MMG3D_Unset_requiredTetrahedra(*mesh,reqIdx, *nreq);
565 return;
566}
570FORTRAN_NAME(MMG3D_SET_REQUIREDTRIANGLE,mmg3d_set_requiredtriangle,
571 (MMG5_pMesh *mesh, MMG5_int *k, int* retval),
572 (mesh,k,retval)) {
574 return;
575}
579FORTRAN_NAME(MMG3D_UNSET_REQUIREDTRIANGLE,mmg3d_unset_requiredtriangle,
580 (MMG5_pMesh *mesh, MMG5_int *k, int* retval),
581 (mesh,k,retval)) {
583 return;
584}
585
589FORTRAN_NAME(MMG3D_SET_REQUIREDTRIANGLES,mmg3d_set_requiredtriangles,
590 (MMG5_pMesh *mesh, MMG5_int *reqIdx, MMG5_int *nreq, int* retval),
591 (mesh,reqIdx,nreq,retval)) {
592 *retval = MMG3D_Set_requiredTriangles(*mesh, reqIdx, *nreq);
593 return;
594}
595
599FORTRAN_NAME(MMG3D_UNSET_REQUIREDTRIANGLES,mmg3d_unset_requiredtriangles,
600 (MMG5_pMesh *mesh, MMG5_int *reqIdx, MMG5_int *nreq, int* retval),
601 (mesh,reqIdx,nreq,retval)) {
602 *retval = MMG3D_Unset_requiredTriangles(*mesh, reqIdx, *nreq);
603 return;
604}
605
609FORTRAN_NAME(MMG3D_SET_PARALLELTRIANGLE,mmg3d_set_paralleltriangle,
610 (MMG5_pMesh *mesh, MMG5_int *k, int* retval),
611 (mesh,k,retval)) {
613 return;
614}
615
619FORTRAN_NAME(MMG3D_UNSET_PARALLELTRIANGLE,mmg3d_unset_paralleltriangle,
620 (MMG5_pMesh *mesh, MMG5_int *k, int* retval),
621 (mesh,k,retval)) {
623 return;
624}
625
629FORTRAN_NAME(MMG3D_SET_PARALLELTRIANGLES,mmg3d_set_paralleltriangles,
630 (MMG5_pMesh *mesh, MMG5_int *parIdx, MMG5_int *npar, int* retval),
631 (mesh,parIdx,npar,retval)) {
632 *retval = MMG3D_Set_parallelTriangles(*mesh, parIdx, *npar);
633 return;
634}
635
639FORTRAN_NAME(MMG3D_UNSET_PARALLELTRIANGLES,mmg3d_unset_paralleltriangles,
640 (MMG5_pMesh *mesh, MMG5_int *parIdx, MMG5_int *npar, int* retval),
641 (mesh,parIdx,npar,retval)) {
642 *retval = MMG3D_Unset_parallelTriangles(*mesh, parIdx, *npar);
643 return;
644}
645
649FORTRAN_NAME(MMG3D_SET_RIDGE,mmg3d_set_ridge,
650 (MMG5_pMesh *mesh, MMG5_int *k, int* retval),
651 (mesh,k,retval)) {
653 return;
654}
655
659FORTRAN_NAME(MMG3D_UNSET_RIDGE,mmg3d_unset_ridge,
660 (MMG5_pMesh *mesh, MMG5_int *k, int* retval),
661 (mesh,k,retval)) {
663 return;
664}
665
669FORTRAN_NAME(MMG3D_SET_REQUIREDEDGE,mmg3d_set_requirededge,
670 (MMG5_pMesh *mesh, MMG5_int *k, int* retval),
671 (mesh,k,retval)) {
673 return;
674}
675
679FORTRAN_NAME(MMG3D_UNSET_REQUIREDEDGE,mmg3d_unset_requirededge,
680 (MMG5_pMesh *mesh, MMG5_int *k, int* retval),
681 (mesh,k,retval)) {
683 return;
684}
685
689FORTRAN_NAME(MMG3D_SET_NORMALATVERTEX,mmg3d_set_normalatvertex,
690 (MMG5_pMesh *mesh, MMG5_int *k, double* n0, double* n1, double* n2,int* retval),
691 (mesh,k,n0,n1,n2,retval)) {
692 *retval = MMG3D_Set_normalAtVertex(*mesh,*k, *n0, *n1, *n2);
693 return;
694}
698FORTRAN_NAME(MMG3D_GET_NORMALATVERTEX,mmg3d_get_normalatvertex,
699 (MMG5_pMesh *mesh, MMG5_int *k, double* n0, double* n1, double* n2,int* retval),
700 (mesh,k,n0,n1,n2,retval)) {
701 *retval = MMG3D_Get_normalAtVertex(*mesh,*k, n0, n1, n2);
702 return;
703}
707FORTRAN_NAME(MMG3D_GET_TETRAHEDRONQUALITY,mmg3d_get_tetrahedronquality,
708 (MMG5_pMesh *mesh, MMG5_pSol *met, MMG5_int* k, double* retval),
709 (mesh,met,k,retval)) {
711 return;
712}
716FORTRAN_NAME(MMG3D_SET_SCALARSOL,mmg3d_set_scalarsol,
717 (MMG5_pSol *met, double *s, MMG5_int *pos, int* retval),
718 (met,s,pos,retval)) {
719 *retval = MMG3D_Set_scalarSol(*met,*s,*pos);
720 return;
721}
722
726FORTRAN_NAME(MMG3D_GET_SCALARSOL,mmg3d_get_scalarsol,
727 (MMG5_pSol *met, double* s, int* retval),
728 (met,s,retval)) {
729 *retval = MMG3D_Get_scalarSol(*met,s);
730 return;
731}
735FORTRAN_NAME(MMG3D_SET_SCALARSOLS,mmg3d_set_scalarsols,
736 (MMG5_pSol *met, double *s, int* retval),
737 (met,s,retval)) {
738 *retval = MMG3D_Set_scalarSols(*met,s);
739 return;
740}
741
745FORTRAN_NAME(MMG3D_GET_SCALARSOLS,mmg3d_get_scalarsols,
746 (MMG5_pSol *met, double* s, int* retval),
747 (met,s,retval)) {
748 *retval = MMG3D_Get_scalarSols(*met,s);
749 return;
750}
751
755FORTRAN_NAME(MMG3D_SET_VECTORSOL,mmg3d_set_vectorsol,
756 (MMG5_pSol *met, double *vx, double *vy, double *vz,
757 MMG5_int *pos, int* retval),
758 (met,vx,vy,vz,pos,retval)) {
759 *retval = MMG3D_Set_vectorSol(*met,*vx,*vy,*vz,*pos);
760 return;
761}
762
766FORTRAN_NAME(MMG3D_GET_VECTORSOL,mmg3d_get_vectorsol,
767 (MMG5_pSol *met, double* vx,double *vy, double *vz, int* retval),
768 (met,vx,vy,vz,retval)) {
769 *retval = MMG3D_Get_vectorSol(*met,vx,vy,vz);
770 return;
771}
775FORTRAN_NAME(MMG3D_SET_VECTORSOLS,mmg3d_set_vectorsols,
776 (MMG5_pSol *met, double *sols, int* retval),
777 (met,sols,retval)) {
778 *retval = MMG3D_Set_vectorSols(*met,sols);
779 return;
780}
781
785FORTRAN_NAME(MMG3D_GET_VECTORSOLS,mmg3d_get_vectorsols,
786 (MMG5_pSol *met, double* sols, int* retval),
787 (met,sols,retval)) {
788 *retval = MMG3D_Get_vectorSols(*met,sols);
789 return;
790}
791
795FORTRAN_NAME(MMG3D_SET_TENSORSOL,mmg3d_set_tensorsol,
796 (MMG5_pSol *met, double* m11,double *m12, double *m13,
797 double* m22,double *m23, double *m33, MMG5_int *pos, int* retval),
798 (met,m11,m12,m13,m22,m23,m33,pos,retval)) {
799 *retval = MMG3D_Set_tensorSol(*met,*m11,*m12,*m13,*m22,*m23,*m33,*pos);
800 return;
801}
802
806FORTRAN_NAME(MMG3D_GET_TENSORSOL,mmg3d_get_tensorsol,
807 (MMG5_pSol *met, double* m11,double *m12, double *m13,
808 double* m22,double *m23, double *m33, int* retval),
809 (met,m11,m12,m13,m22,m23,m33,retval)) {
810 *retval = MMG3D_Get_tensorSol(*met,m11,m12,m13,m22,m23,m33);
811 return;
812}
816FORTRAN_NAME(MMG3D_SET_TENSORSOLS,mmg3d_set_tensorsols,
817 (MMG5_pSol *met, double* sols,int* retval),
818 (met,sols,retval)) {
819 *retval = MMG3D_Set_tensorSols(*met,sols);
820 return;
821}
822
826FORTRAN_NAME(MMG3D_GET_TENSORSOLS,mmg3d_get_tensorsols,
827 (MMG5_pSol *met, double* sols, int* retval),
828 (met,sols,retval)) {
829 *retval = MMG3D_Get_tensorSols(*met,sols);
830 return;
831}
835FORTRAN_NAME(MMG3D_SET_ITHSOL_INSOLSATVERTICES,mmg3d_set_ithsol_insolsatvertices,
836 (MMG5_pSol *sol, MMG5_int *i,double *s,MMG5_int *pos, int* retval),
837 (sol,i,s,pos,retval)) {
839 return;
840}
844FORTRAN_NAME(MMG3D_GET_ITHSOL_INSOLSATVERTICES,mmg3d_get_ithsol_insolsatvertices,
845 (MMG5_pSol *sol, MMG5_int* i,double *s,MMG5_int *pos, int* retval),
846 (sol,i,s,pos,retval)) {
848 return;
849}
853FORTRAN_NAME(MMG3D_SET_ITHSOLS_INSOLSATVERTICES,mmg3d_set_ithsols_insolsatvertices,
854 (MMG5_pSol *sol, MMG5_int *i,double *s, int* retval),
855 (sol,i,s,retval)) {
857 return;
858}
862FORTRAN_NAME(MMG3D_GET_ITHSOLS_INSOLSATVERTICES,mmg3d_get_ithsols_insolsatvertices,
863 (MMG5_pSol *sol, MMG5_int* i,double *s, int* retval),
864 (sol,i,s,retval)) {
866 return;
867}
868
872FORTRAN_NAME(MMG3D_SET_HANDGIVENMESH,mmg3d_set_handgivenmesh,
873 (MMG5_pMesh *mesh),
874 (mesh)) {
876 return;
877}
878
882FORTRAN_NAME(MMG3D_CHK_MESHDATA,mmg3d_chk_meshdata,
883 (MMG5_pMesh *mesh,MMG5_pSol *met, int* retval),
884 (mesh,met,retval)) {
886 return;
887}
888
892FORTRAN_NAME(MMG3D_ADD_TETRAHEDRON,mmg3d_add_tetrahedron,
893 (MMG5_pMesh *mesh, MMG5_int *v0, MMG5_int *v1, MMG5_int *v2, MMG5_int *v3, MMG5_int *ref,
894 int* retval),
895 (mesh,v0,v1,v2,v3,ref,retval)){
896 *retval = MMG3D_Add_tetrahedron(*mesh,*v0,*v1,*v2,*v3,*ref);
897 return;
898}
899
903FORTRAN_NAME(MMG3D_ADD_VERTEX,mmg3d_add_vertex,
904 (MMG5_pMesh *mesh, double *c0, double *c1, double *c2, MMG5_int *ref,
905 MMG5_int* retval),
906 (mesh,c0,c1,c2,ref,retval)){
907 *retval = MMG3D_Add_vertex(*mesh,*c0,*c1,*c2,*ref);
908 return;
909}
910
914FORTRAN_NAME(MMG3D_SET_IPARAMETER,mmg3d_set_iparameter,
915 (MMG5_pMesh *mesh, MMG5_pSol *sol, int *iparam, MMG5_int *val, int* retval),
916 (mesh,sol,iparam,val,retval)){
917 *retval = MMG3D_Set_iparameter(*mesh,*sol,*iparam,*val);
918 return;
919}
920
924FORTRAN_NAME(MMG3D_GET_IPARAMETER,mmg3d_get_iparameter,
925 (MMG5_pMesh *mesh, int *iparam, MMG5_int* retval),
926 (mesh,iparam,retval)){
927 *retval = MMG3D_Get_iparameter(*mesh,*iparam);
928 return;
929}
930
934FORTRAN_NAME(MMG3D_SET_DPARAMETER,mmg3d_set_dparameter,
935 (MMG5_pMesh *mesh, MMG5_pSol *sol, int *dparam, double *val, int* retval),
936 (mesh,sol,dparam,val,retval)){
937 *retval = MMG3D_Set_dparameter(*mesh,*sol,*dparam,*val);
938 return;
939}
940
944FORTRAN_NAME(MMG3D_SET_LOCALPARAMETER,mmg3d_set_localparameter,
945 (MMG5_pMesh *mesh,MMG5_pSol *sol, int *typ, MMG5_int *ref,
946 double *hmin, double *hmax, double *hausd, int* retval),
947 (mesh,sol,typ,ref,hmin, hmax, hausd,retval)){
948 *retval = MMG3D_Set_localParameter(*mesh,*sol,*typ,*ref,*hmin,*hmax,*hausd);
949 return;
950}
951
955FORTRAN_NAME(MMG3D_SET_MULTIMAT,mmg3d_set_multimat,
956 (MMG5_pMesh *mesh,MMG5_pSol *sol, MMG5_int *ref,int *split,
957 MMG5_int* rin,MMG5_int* rex, int* retval),
958 (mesh,sol,ref,split,rin,rex,retval)){
959 *retval = MMG3D_Set_multiMat(*mesh,*sol,*ref,*split,*rin,*rex);
960 return;
961}
962
966FORTRAN_NAME(MMG3D_SET_LSBASEREFERENCE,mmg3d_set_lsbasereference,
967 (MMG5_pMesh *mesh,MMG5_pSol *sol, int *br, int* retval),
968 (mesh,sol,br,retval)){
970 return;
971}
972
976FORTRAN_NAME(MMG3D_FREE_ALLSOLS,mmg3d_free_allsols,
978 (mesh,sol,retval)){
979
981
982 return;
983}
987FORTRAN_VARIADIC(MMG3D_FREE_ALL,mmg3d_free_all,
988 (const int starter,...),
989 va_list argptr;
990 int ier;
991
993
995
996 va_end(argptr);
997
998 if ( !ier ) exit(EXIT_FAILURE);
999 return;
1000 )
1001
1006 (const int starter,...),
1007 va_list argptr;
1008 int ier;
1009
1011
1013
1015
1016 if ( !ier ) exit(EXIT_FAILURE);
1017
1018 return;
1019 )
1020
1024FORTRAN_VARIADIC(MMG3D_FREE_NAMES,mmg3d_free_names,
1025 (const int starter,...),
1026 va_list argptr;
1027 int ier;
1028
1030
1032
1033 va_end(argptr);
1034
1035 if ( !ier ) exit(EXIT_FAILURE);
1036 return;
1037 )
1038
1039
1046 char *tmp = NULL;
1047
1050 tmp[*strlen0] = '\0';
1051
1053
1055
1056 return;
1057}
1058
1062FORTRAN_NAME(MMG3D_LOADVTUMESH,mmg3d_loadvtumesh,
1063 (MMG5_pMesh *mesh, MMG5_pSol *met,MMG5_pSol *sol,char* filename, int *strlen0,int* retval),
1064 (mesh,met,sol,filename,strlen0, retval)){
1065 char *tmp = NULL;
1066
1067 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1069 tmp[*strlen0] = '\0';
1070
1071 *retval = MMG3D_loadVtuMesh(*mesh,*met,*sol,tmp);
1072
1074
1075 return;
1076}
1080FORTRAN_NAME(MMG3D_LOADVTUMESH_AND_ALLDATA,mmg3d_loadvtumesh_and_alldata,
1081 (MMG5_pMesh *mesh, MMG5_pSol *sol,char* filename, int *strlen0,int* retval),
1083 char *tmp = NULL;
1084
1085 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1087 tmp[*strlen0] = '\0';
1088
1090
1092
1093 return;
1094}
1095
1099FORTRAN_NAME(MMG3D_LOADVTKMESH,mmg3d_loadvtkmesh,
1100 (MMG5_pMesh *mesh, MMG5_pSol *met,MMG5_pSol *sol,char* filename, int *strlen0,int* retval),
1101 (mesh,met,sol,filename,strlen0, retval)){
1102 char *tmp = NULL;
1103
1104 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1106 tmp[*strlen0] = '\0';
1107
1108 *retval = MMG3D_loadVtkMesh(*mesh,*met,*sol,tmp);
1109
1111
1112 return;
1113}
1117FORTRAN_NAME(MMG3D_LOADVTKMESH_AND_ALLDATA,mmg3d_loadvtkmesh_and_alldata,
1118 (MMG5_pMesh *mesh, MMG5_pSol *sol,char* filename, int *strlen0,int* retval),
1120 char *tmp = NULL;
1121
1122 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1124 tmp[*strlen0] = '\0';
1125
1127
1129
1130 return;
1131}
1135FORTRAN_NAME(MMG3D_LOADMSHMESH,mmg3d_loadmshmesh,
1136 (MMG5_pMesh *mesh, MMG5_pSol *sol,char* filename, int *strlen0,int* retval),
1138 char *tmp = NULL;
1139
1140 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1142 tmp[*strlen0] = '\0';
1143
1145
1147
1148 return;
1149}
1150
1154FORTRAN_NAME(MMG3D_LOADGENERICMESH,mmg3d_loadgenericmesh,
1155 (MMG5_pMesh *mesh, MMG5_pSol *met,MMG5_pSol *sol,char* filename, int *strlen0,int* retval),
1156 (mesh,met,sol,filename,strlen0, retval)){
1157 char *tmp = NULL;
1158
1159 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1161 tmp[*strlen0] = '\0';
1162
1164
1166
1167 return;
1168}
1169
1173FORTRAN_NAME(MMG3D_LOADMSHMESH_AND_ALLDATA,mmg3d_loadmshmesh_and_alldata,
1174 (MMG5_pMesh *mesh, MMG5_pSol *sol,char* filename, int *strlen0,int* retval),
1176 char *tmp = NULL;
1177
1178 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1180 tmp[*strlen0] = '\0';
1181
1183
1185
1186 return;
1187}
1188
1192FORTRAN_NAME(MMG3D_SAVEMESH,mmg3d_savemesh,
1193 (MMG5_pMesh *mesh,char* filename, int *strlen0,int* retval),
1195 char *tmp = NULL;
1196
1197 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1199 tmp[*strlen0] = '\0';
1200
1202
1204
1205 return;
1206}
1207
1211FORTRAN_NAME(MMG3D_SAVEVTKMESH,mmg3d_savevtkmesh,
1212 (MMG5_pMesh *mesh, MMG5_pSol *sol,char* filename, int *strlen0,
1213 int* retval),
1215 char *tmp = NULL;
1216
1217 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1219 tmp[*strlen0] = '\0';
1220
1222
1224
1225 return;
1226}
1230FORTRAN_NAME(MMG3D_SAVEVTKMESH_AND_ALLDATA,mmg3d_savevtkmesh_and_alldata,
1231 (MMG5_pMesh *mesh, MMG5_pSol *sol,char* filename, int *strlen0,
1232 int* retval),
1234 char *tmp = NULL;
1235
1236 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1238 tmp[*strlen0] = '\0';
1239
1241
1243
1244 return;
1245}
1246
1250FORTRAN_NAME(MMG3D_SAVEVTUMESH,mmg3d_savevtumesh,
1251 (MMG5_pMesh *mesh, MMG5_pSol *sol,char* filename, int *strlen0,
1252 int* retval),
1254 char *tmp = NULL;
1255
1256 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1258 tmp[*strlen0] = '\0';
1259
1261
1263
1264 return;
1265}
1269FORTRAN_NAME(MMG3D_SAVEVTUMESH_AND_ALLDATA,mmg3d_savevtumesh_and_alldata,
1270 (MMG5_pMesh *mesh, MMG5_pSol *sol,char* filename, int *strlen0,
1271 int* retval),
1273 char *tmp = NULL;
1274
1275 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1277 tmp[*strlen0] = '\0';
1278
1280
1282
1283 return;
1284}
1285
1289FORTRAN_NAME(MMG3D_SAVEMSHMESH,mmg3d_savemshmesh,
1290 (MMG5_pMesh *mesh, MMG5_pSol *sol,char* filename, int *strlen0,
1291 int* retval),
1293 char *tmp = NULL;
1294
1295 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1297 tmp[*strlen0] = '\0';
1298
1300
1302
1303 return;
1304}
1305
1309FORTRAN_NAME(MMG3D_SAVEMSHMESH_AND_ALLDATA,mmg3d_savemshmesh_and_alldata,
1310 (MMG5_pMesh *mesh, MMG5_pSol *sol,char* filename, int *strlen0,
1311 int* retval),
1313 char *tmp = NULL;
1314
1315 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1317 tmp[*strlen0] = '\0';
1318
1320
1322
1323 return;
1324}
1325
1329FORTRAN_NAME(MMG3D_SAVETETGENMESH,mmg3d_savetetgenmesh,(MMG5_pMesh *mesh,char *meshin,int *strlen0, int* retval),
1331 char *tmp = NULL;
1332
1333 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1335 tmp[*strlen0] = '\0';
1338
1339 return;
1340}
1341
1345FORTRAN_NAME(MMG3D_SAVEGENERICMESH,mmg3d_savegenericmesh,
1346 (MMG5_pMesh *mesh, MMG5_pSol *sol,char* filename, int *strlen0,int* retval),
1348 char *tmp = NULL;
1349
1350 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1352 tmp[*strlen0] = '\0';
1353
1355
1357
1358 return;
1359}
1360
1364FORTRAN_NAME(MMG3D_LOADSOL,mmg3d_loadsol,
1365 (MMG5_pMesh *mesh,MMG5_pSol *met,char* filename, int *strlen0,int* retval),
1366 (mesh,met,filename,strlen0,retval)){
1367 char *tmp = NULL;
1368
1369 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1371 tmp[*strlen0] = '\0';
1372
1373 *retval = MMG3D_loadSol(*mesh,*met,tmp);
1374
1376
1377 return;
1378}
1379
1383FORTRAN_NAME(MMG3D_LOADALLSOLS,mmg3d_loadallsols,
1384 (MMG5_pMesh *mesh,MMG5_pSol *sol,char* filename, int *strlen0,int* retval),
1386 char *tmp = NULL;
1387
1388 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1390 tmp[*strlen0] = '\0';
1391
1393
1395
1396 return;
1397}
1398
1402FORTRAN_NAME(MMG3D_SAVESOL,mmg3d_savesol,
1403 (MMG5_pMesh *mesh,MMG5_pSol *met,char* filename, int *strlen0,int* retval),
1404 (mesh,met,filename,strlen0,retval)){
1405 char *tmp = NULL;
1406
1407 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1409 tmp[*strlen0] = '\0';
1410
1411 *retval = MMG3D_saveSol(*mesh,*met,tmp);
1412
1414
1415 return;
1416}
1417
1421FORTRAN_NAME(MMG3D_SAVEALLSOLS,mmg3d_saveallsols,
1422 (MMG5_pMesh *mesh,MMG5_pSol *sol,char* filename, int *strlen0,int* retval),
1424 char *tmp = NULL;
1425
1426 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1428 tmp[*strlen0] = '\0';
1429
1431
1433
1434 return;
1435}
1436
1440FORTRAN_NAME(MMG3D_SWITCH_METRIC_STORAGE,mmg3d_swith_metricstorage,
1441 (MMG5_pMesh *mesh,MMG5_pSol *met,int* retval),
1442 (mesh,met,retval)){
1443
1445
1446 return;
1447}
1448
1452FORTRAN_NAME(MMG3D_CLEAN_ISOSURF,mmg3d_clean_isosurf,
1453 (MMG5_pMesh *mesh, int* retval), (mesh, retval)) {
1455 return;
1456}
int MMG3D_Set_vectorSol(MMG5_pSol met, double vx, double vy, double vz, MMG5_int pos)
Set a single element of a vector solution structure.
int MMG3D_Unset_requiredEdge(MMG5_pMesh mesh, MMG5_int k)
Remove the "required" attribute from a single edge.
int MMG3D_GetByIdx_vertex(MMG5_pMesh mesh, double *c0, double *c1, double *c2, MMG5_int *ref, int *isCorner, int *isRequired, MMG5_int idx)
Get the coordinates and reference of a specific vertex in the mesh.
int MMG3D_Get_vectorSol(MMG5_pSol met, double *vx, double *vy, double *vz)
Get the next element of a vector solution structure.
int MMG3D_Get_vertices(MMG5_pMesh mesh, double *vertices, MMG5_int *refs, int *areCorners, int *areRequired)
Get the coordinates and references of all vertices in the mesh.
int MMG3D_Get_prism(MMG5_pMesh mesh, MMG5_int *v0, MMG5_int *v1, MMG5_int *v2, MMG5_int *v3, MMG5_int *v4, MMG5_int *v5, MMG5_int *ref, int *isRequired)
Get the vertices and reference of the next prism in the mesh.
int MMG3D_Get_normalAtVertex(MMG5_pMesh mesh, MMG5_int k, double *n0, double *n1, double *n2)
Get the normal orientation at a single mesh vertex.
int MMG3D_Set_triangles(MMG5_pMesh mesh, MMG5_int *tria, MMG5_int *refs)
Set the vertices and references of all triangles in a mesh.
int MMG3D_Unset_corner(MMG5_pMesh mesh, MMG5_int k)
Remove the "corner" attribute from a vertex.
int MMG3D_Set_quadrilateral(MMG5_pMesh mesh, MMG5_int v0, MMG5_int v1, MMG5_int v2, MMG5_int v3, MMG5_int ref, MMG5_int pos)
Set the vertices and reference of a single quadrilateral in a mesh.
int MMG3D_Unset_ridge(MMG5_pMesh mesh, MMG5_int k)
Remove the "ridge" attribute from a single edge.
int MMG3D_Set_corner(MMG5_pMesh mesh, MMG5_int k)
Assign the "corner" attribute to a vertex.
int MMG3D_Get_edge(MMG5_pMesh mesh, MMG5_int *e0, MMG5_int *e1, MMG5_int *ref, int *isRidge, int *isRequired)
Get the vertices and reference of the next edge in the mesh.
int MMG3D_Set_inputMeshName(MMG5_pMesh mesh, const char *meshin)
Set the name of input mesh.
int MMG3D_Set_inputParamName(MMG5_pMesh mesh, const char *fparamin)
Set the name of the input parameter file.
int MMG3D_Set_ithSols_inSolsAtVertices(MMG5_pSol sol, int i, double *s)
Set all elements of one out of multiple solution fields that are defined on vertices.
int MMG3D_Get_prisms(MMG5_pMesh mesh, MMG5_int *prisms, MMG5_int *refs, int *areRequired)
Get the vertices and references of all prisms in the mesh.
int MMG3D_Set_edges(MMG5_pMesh mesh, MMG5_int *edges, MMG5_int *refs)
Set the vertices and references of all edges in a mesh.
int MMG3D_Set_tensorSols(MMG5_pSol met, double *sols)
Set all elements of a tensor solution structure.
int MMG3D_Set_requiredTetrahedron(MMG5_pMesh mesh, MMG5_int k)
Assign the "required" attribute to a tetrahedron.
int MMG3D_Get_triangle(MMG5_pMesh mesh, MMG5_int *v0, MMG5_int *v1, MMG5_int *v2, MMG5_int *ref, int *isRequired)
Get the vertices and reference of the next triangle in the mesh.
double MMG3D_Get_tetrahedronQuality(MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k)
Get the quality measure of a single tetrahedron in the mesh.
int MMG3D_Set_dparameter(MMG5_pMesh mesh, MMG5_pSol sol, int dparam, double val)
set a real-valued parameter of the remesher
int MMG3D_Get_tensorSol(MMG5_pSol met, double *m11, double *m12, double *m13, double *m22, double *m23, double *m33)
Get the next element of a tensor solution structure.
int MMG3D_Set_localParameter(MMG5_pMesh mesh, MMG5_pSol sol, int typ, MMG5_int ref, double hmin, double hmax, double hausd)
set a local parameter
int MMG3D_Set_tetrahedron(MMG5_pMesh mesh, MMG5_int v0, MMG5_int v1, MMG5_int v2, MMG5_int v3, MMG5_int ref, MMG5_int pos)
set a single tetrahedron's vertices
int MMG3D_Set_triangle(MMG5_pMesh mesh, MMG5_int v0, MMG5_int v1, MMG5_int v2, MMG5_int ref, MMG5_int pos)
Set the vertices and reference of a single triangle in a mesh.
int MMG3D_Get_tetrahedron(MMG5_pMesh mesh, MMG5_int *v0, MMG5_int *v1, MMG5_int *v2, MMG5_int *v3, MMG5_int *ref, int *isRequired)
Get the vertices and reference of the next tetrahedron in the mesh.
int MMG3D_Set_scalarSols(MMG5_pSol met, double *s)
Set the values of all elements of a scalar solution structure.
int MMG3D_Get_quadrilaterals(MMG5_pMesh mesh, MMG5_int *quads, MMG5_int *refs, int *areRequired)
Get the vertices and references of all quadrilaterals of the mesh.
int MMG3D_Get_solSize(MMG5_pMesh mesh, MMG5_pSol sol, int *typEntity, MMG5_int *np, int *typSol)
Get the number of elements, dimension, and type of a solution structure.
int MMG3D_Set_edge(MMG5_pMesh mesh, MMG5_int v0, MMG5_int v1, MMG5_int ref, MMG5_int pos)
Set the vertices and reference of a single edge in a mesh.
int MMG3D_Get_ithSol_inSolsAtVertices(MMG5_pSol sol, int i, double *s, MMG5_int pos)
Get one out of several solutions at a specific vertex.
int MMG3D_Set_scalarSol(MMG5_pSol met, double s, MMG5_int pos)
Set a single element of a scalar solution structure.
int MMG3D_Free_allSols(MMG5_pMesh mesh, MMG5_pSol *sol)
Deallocate an array of solution fields.
int MMG3D_Get_vectorSols(MMG5_pSol met, double *sols)
Get all elements of a vector solution structure.
int MMG3D_Set_quadrilaterals(MMG5_pMesh mesh, MMG5_int *quads, MMG5_int *refs)
Set the vertices and references of all quadrilaterals in a mesh.
int MMG3D_Get_vertex(MMG5_pMesh mesh, double *c0, double *c1, double *c2, MMG5_int *ref, int *isCorner, int *isRequired)
Get the coordinates c0, c1,c2 and reference ref of the next vertex of mesh.
int MMG3D_Set_ithSol_inSolsAtVertices(MMG5_pSol sol, int i, double *s, MMG5_int pos)
Set a single element of one out of multiple solution fields that are defined on vertices.
int MMG3D_Get_edges(MMG5_pMesh mesh, MMG5_int *edges, MMG5_int *refs, int *areRidges, int *areRequired)
Get the vertices and references of all edges in a mesh.
int MMG3D_Get_tensorSols(MMG5_pSol met, double *sols)
Get all elements of a tensor solution field.
int MMG3D_Set_lsBaseReference(MMG5_pMesh mesh, MMG5_pSol sol, MMG5_int br)
Set a new level-set base reference.
int MMG3D_Set_parallelTriangles(MMG5_pMesh mesh, MMG5_int *parIdx, MMG5_int npar)
Assign the "parallel" attribute to multiple triangles.
int MMG3D_Set_vectorSols(MMG5_pSol met, double *sols)
Set all elements of a vector solution structure.
void MMG3D_Set_handGivenMesh(MMG5_pMesh mesh)
Finish providing mesh data without using the API functions.
int MMG3D_Set_requiredVertex(MMG5_pMesh mesh, MMG5_int k)
Assign the "required" attribute to a vertex.
int MMG3D_Set_inputSolName(MMG5_pMesh mesh, MMG5_pSol sol, const char *solin)
Set the name of input solution file.
int MMG3D_Unset_requiredTriangles(MMG5_pMesh mesh, MMG5_int *reqIdx, MMG5_int nreq)
Remove the "required" attribute from multiple triangles.
int MMG3D_Unset_requiredTetrahedra(MMG5_pMesh mesh, MMG5_int *reqIdx, MMG5_int nreq)
Remove the "required" attribute from multiple tetrahedra.
int MMG3D_Set_multiMat(MMG5_pMesh mesh, MMG5_pSol sol, MMG5_int ref, int split, MMG5_int rmin, MMG5_int rplus)
Set the reference mapping for the elements of reference ref in level-set discretization mode.
int MMG3D_Set_requiredTriangle(MMG5_pMesh mesh, MMG5_int k)
Assign the "required" attribute to a single triangle.
int MMG3D_Set_vertices(MMG5_pMesh mesh, double *vertices, MMG5_int *refs)
Set all vertex coordinates and references in a mesh structure.
int MMG3D_Add_tetrahedron(MMG5_pMesh mesh, MMG5_int v0, MMG5_int v1, MMG5_int v2, MMG5_int v3, MMG5_int ref)
Add a tetrahedron to the mesh.
int MMG3D_Set_ridge(MMG5_pMesh mesh, MMG5_int k)
Assign the "ridge" attribute to a single edge.
int MMG3D_Set_solsAtVerticesSize(MMG5_pMesh mesh, MMG5_pSol *sol, int nsols, MMG5_int nentities, int *typSol)
Initialize an array of solution values defined at vertices.
int MMG3D_Set_outputSolName(MMG5_pMesh mesh, MMG5_pSol sol, const char *solout)
Set the name of the output solution file.
int MMG3D_Get_iparameter(MMG5_pMesh mesh, MMG5_int iparam)
Get the value of an integer parameter of the remesher.
int MMG3D_Set_outputMeshName(MMG5_pMesh mesh, const char *meshout)
Set the name of output mesh file.
int MMG3D_Set_parallelTriangle(MMG5_pMesh mesh, MMG5_int k)
Assign the "parallel" attribute to a single triangle.
int MMG3D_Set_prism(MMG5_pMesh mesh, MMG5_int v0, MMG5_int v1, MMG5_int v2, MMG5_int v3, MMG5_int v4, MMG5_int v5, MMG5_int ref, MMG5_int pos)
Set the vertices and reference of a single prism in a mesh.
int MMG3D_Get_ithSols_inSolsAtVertices(MMG5_pSol sol, int i, double *s)
Get one out of several solutions at all vertices in the mesh.
int MMG3D_Chk_meshData(MMG5_pMesh mesh, MMG5_pSol met)
Check if the number of given entities match with mesh and sol size.
int MMG3D_Get_scalarSols(MMG5_pSol met, double *s)
Get all elements of a scalar solution structure defined at vertices.
MMG5_int MMG3D_Add_vertex(MMG5_pMesh mesh, double c0, double c1, double c2, MMG5_int ref)
Add a vertex to the mesh.
int MMG3D_Get_solsAtVerticesSize(MMG5_pMesh mesh, MMG5_pSol *sol, int *nsols, MMG5_int *np, int *typSol)
Get the number of elements, type, and dimensions of several solutions defined on vertices.
int MMG3D_Get_triangles(MMG5_pMesh mesh, MMG5_int *tria, MMG5_int *refs, int *areRequired)
Get the vertices and references of all triangles in the mesh.
int MMG3D_Unset_parallelTriangle(MMG5_pMesh mesh, MMG5_int k)
Remove the "parallel" attribute from a single triangle.
int MMG3D_Set_tensorSol(MMG5_pSol met, double m11, double m12, double m13, double m22, double m23, double m33, MMG5_int pos)
Set a single element of a tensor solution structure.
int MMG3D_Get_quadrilateral(MMG5_pMesh mesh, MMG5_int *v0, MMG5_int *v1, MMG5_int *v2, MMG5_int *v3, MMG5_int *ref, int *isRequired)
Get the vertices and reference of the next quadrilateral of the mesh.
int MMG3D_Get_tetrahedra(MMG5_pMesh mesh, MMG5_int *tetra, MMG5_int *refs, int *areRequired)
Get the vertices and reference of all tetrahedra in the mesh.
int MMG3D_Set_vertex(MMG5_pMesh mesh, double c0, double c1, double c2, MMG5_int ref, MMG5_int pos)
Set the coordinates of a single vertex.
int MMG3D_Get_scalarSol(MMG5_pSol met, double *s)
Get the next element of a scalar solution structure defined at vertices.
int MMG3D_Get_meshSize(MMG5_pMesh mesh, MMG5_int *np, MMG5_int *ne, MMG5_int *nprism, MMG5_int *nt, MMG5_int *nquad, MMG5_int *na)
Get the number of vertices, tetrahedra, prisms, triangles, quadrilaterals and edges of the mesh.
int MMG3D_Set_prisms(MMG5_pMesh mesh, MMG5_int *prisms, MMG5_int *refs)
Set the vertices and references of all prisms in a mesh.
void MMG3D_Init_parameters(MMG5_pMesh mesh)
Initialize parameters to their default values.
int MMG3D_Set_iparameter(MMG5_pMesh mesh, MMG5_pSol sol, int iparam, MMG5_int val)
set an integer parameter of the remesher
int MMG3D_Unset_requiredTetrahedron(MMG5_pMesh mesh, MMG5_int k)
Remove the "required" attribute from a tetrahedron.
int MMG3D_Unset_requiredVertex(MMG5_pMesh mesh, MMG5_int k)
Remove required attribute from a vertex.
int MMG3D_Set_normalAtVertex(MMG5_pMesh mesh, MMG5_int k, double n0, double n1, double n2)
Set the normal orientation at a single vertex.
int MMG3D_Set_requiredEdge(MMG5_pMesh mesh, MMG5_int k)
Assign the "required" attribute to a single edge.
int MMG3D_Set_meshSize(MMG5_pMesh mesh, MMG5_int np, MMG5_int ne, MMG5_int nprism, MMG5_int nt, MMG5_int nquad, MMG5_int na)
Set the number of vertices, tetrahedra, prisms, triangles, quadrilaterals, and edges of a mesh.
int MMG3D_Unset_requiredTriangle(MMG5_pMesh mesh, MMG5_int k)
Remove the "required" attribute from a single triangle.
int MMG3D_Unset_parallelTriangles(MMG5_pMesh mesh, MMG5_int *parIdx, MMG5_int npar)
Remove the "parallel" attribute from multiple triangles.
int MMG3D_Set_requiredTriangles(MMG5_pMesh mesh, MMG5_int *reqIdx, MMG5_int nreq)
Assign the "required" attribute to multiple triangles.
int MMG3D_Set_requiredTetrahedra(MMG5_pMesh mesh, MMG5_int *reqIdx, MMG5_int nreq)
Assign the "required" attribute to multiple tetrahedra.
int MMG3D_Set_solSize(MMG5_pMesh mesh, MMG5_pSol sol, int typEntity, MMG5_int np, int typSol)
Initialize a solution field.
int MMG3D_Set_tetrahedra(MMG5_pMesh mesh, MMG5_int *tetra, MMG5_int *refs)
Set the vertices and references of all tetrahedra in a mesh structure.
MMG5_pMesh MMG5_pSol * sol
MMG5_pMesh char * meshin
MMG5_pMesh char int int * retval
mmg3d_loadmesh
int ier
MMG5_pMesh char * filename
tmp[*strlen0]
const int starter
MMG5_pMesh char int * strlen0
va_start(argptr, starter)
strncpy(tmp, filename, *strlen0)
mmg3d_init_parameters
MMG5_pMesh * mesh
va_end(argptr)
const int va_list argptr
mmg3d_free_structures
int MMG3D_saveMshMesh_and_allData(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename)
Save a mesh and data in MSH format, ascii or binary depending on the filename extension.
Definition: inout_3d.c:2138
int MMG3D_saveMesh(MMG5_pMesh mesh, const char *filename)
Save a mesh in .mesh/.meshb format.
Definition: inout_3d.c:1273
int MMG3D_saveGenericMesh(MMG5_pMesh mesh, MMG5_pSol sol, const char *filename)
Save mesh data in a file whose format depends on the filename extension.
Definition: inout_3d.c:2062
int MMG3D_loadSol(MMG5_pMesh mesh, MMG5_pSol met, const char *filename)
Load a metric field (or other solution).
Definition: inout_3d.c:2143
int MMG3D_loadMesh(MMG5_pMesh mesh, const char *filename)
Load a mesh (in .mesh/.mesb format) from file.
Definition: inout_3d.c:1049
int MMG3D_loadAllSols(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename)
Load one or more solutions in a solution file in medit file format.
Definition: inout_3d.c:2216
int MMG3D_loadMshMesh(MMG5_pMesh mesh, MMG5_pSol sol, const char *filename)
Load a mesh and possibly a solution in .msh format from file.
Definition: inout_3d.c:1063
int MMG3D_saveTetgenMesh(MMG5_pMesh mesh, const char *filename)
Save data in Tetgen's Triangle format.
Definition: inout_3d.c:2658
int MMG3D_loadMshMesh_and_allData(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename)
Load a mesh and all data from a file in MSH format.
Definition: inout_3d.c:1132
int MMG3D_saveSol(MMG5_pMesh mesh, MMG5_pSol met, const char *filename)
Write isotropic or anisotropic metric.
Definition: inout_3d.c:2314
int MMG3D_saveMshMesh(MMG5_pMesh mesh, MMG5_pSol sol, const char *filename)
Save a mesh in MSH format, ascii or binary depending on the filename extension.
Definition: inout_3d.c:2133
int MMG3D_loadGenericMesh(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pSol sol, const char *filename)
Read mesh data in a format determined by the filename extension.
Definition: inout_3d.c:1190
int MMG3D_saveAllSols(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename)
Save 1 or more solutions in medit solution file format.
Definition: inout_3d.c:2352
int MMG3D_loadVtuMesh_and_allData(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename)
Load a mesh and multiple solutions in VTU (VTK) format from file.
int MMG3D_saveVtuMesh_and_allData(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename)
Save a mesh and multiple data fields in VTU format.
int MMG3D_loadVtkMesh_and_allData(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename)
Load a mesh and multiple solutions from a file in VTK format.
int MMG3D_loadVtkMesh(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pSol sol, const char *filename)
Load a mesh and possibly a solution from a file in VTK format.
int MMG3D_saveVtkMesh(MMG5_pMesh mesh, MMG5_pSol sol, const char *filename)
Save a mesh and optionally one solution in VTK format.
int MMG3D_loadVtuMesh(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pSol sol, const char *filename)
Load a mesh and possibly a solution in VTU (VTK) format from file.
Definition: inoutcpp_3d.cpp:74
int MMG3D_saveVtkMesh_and_allData(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename)
Save a mesh and multiple data fields in VTK format.
int MMG3D_saveVtuMesh(MMG5_pMesh mesh, MMG5_pSol sol, const char *filename)
Save a mesh and optionally one data field in VTU format.
API headers and documentation for the mmg3d library, for volumetric meshes in 3D.
LIBMMG3D_EXPORT int MMG3D_Clean_isoSurf(MMG5_pMesh mesh)
Clean data (triangles and edges) linked to isosurface.
LIBMMG3D_EXPORT int MMG3D_switch_metricStorage(MMG5_pMesh mesh, MMG5_pSol met)
Swap the m22 and m23 values of the metric.
int MMG3D_Free_all_var(va_list argptr)
Definition: variadic_3d.c:261
int MMG3D_Free_structures_var(va_list argptr)
Definition: variadic_3d.c:449
int MMG3D_Free_names_var(va_list argptr)
Definition: variadic_3d.c:547
int MMG3D_Init_mesh_var(va_list argptr)
Definition: variadic_3d.c:177
#define FORTRAN_VARIADIC(nu, nl, pl, body)
Adds function definitions.
#define FORTRAN_NAME(nu, nl, pl, pc)
Adds function definitions.
#define MMG5_SAFE_MALLOC(ptr, size, type, law)
#define MMG5_SAFE_FREE(ptr)
MMG mesh structure.
Definition: libmmgtypes.h:613