Mmg
Simplicial remeshers (mesh adaptation, isovalue discretization, lagrangian movement)
API_functionsf_2d.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 "libmmg2d.h"
42#include "libmmg2d_private.h"
43
47FORTRAN_VARIADIC ( MMG2D_INIT_MESH, mmg2d_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
67 (mesh,sol)) {
69 return;
70}
74FORTRAN_NAME(MMG2D_INIT_PARAMETERS, mmg2d_init_parameters,(MMG5_pMesh *mesh),
75 (mesh)) {
77 return;
78}
82FORTRAN_NAME(MMG2D_SET_INPUTMESHNAME, mmg2d_set_inputmeshname,
83 (MMG5_pMesh *mesh, char* meshin, int *strlen0, int* retval),
85 char *tmp = NULL;
86
87 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
89 tmp[*strlen0] = '\0';
92
93 return;
94}
95
99FORTRAN_NAME(MMG2D_SET_INPUTSOLNAME, mmg2d_set_inputsolname,
100 (MMG5_pMesh *mesh,MMG5_pSol *sol, char* solin, int* strlen0, int* retval),
101 (mesh,sol,solin,strlen0,retval)) {
102
103 char *tmp = NULL;
104
105 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
106 strncpy(tmp,solin,*strlen0);
107 tmp[*strlen0] = '\0';
110
111 return;
112}
113
118FORTRAN_NAME(MMG2D_SET_OUTPUTMESHNAME,mmg2d_set_outputmeshname,
119 (MMG5_pMesh *mesh, char* meshout, int* strlen0,int* retval),
120 (mesh,meshout,strlen0,retval)){
121 char *tmp = NULL;
122
123 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
124 strncpy(tmp,meshout,*strlen0);
125 tmp[*strlen0] = '\0';
128
129 return;
130}
131
135FORTRAN_NAME(MMG2D_SET_OUTPUTSOLNAME,mmg2d_set_outputsolname,
136 (MMG5_pMesh *mesh,MMG5_pSol *sol, char* solout,int* strlen0, int* retval),
137 (mesh,sol,solout,strlen0,retval)){
138 char *tmp = NULL;
139
140 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
141 strncpy(tmp,solout,*strlen0);
142 tmp[*strlen0] = '\0';
145
146 return;
147}
148
152FORTRAN_NAME(MMG2D_SET_IPARAMETER,mmg2d_set_iparameter,
153 (MMG5_pMesh *mesh, MMG5_pSol *sol, int *iparam, MMG5_int *val, int* retval),
154 (mesh,sol,iparam,val,retval)){
155 *retval = MMG2D_Set_iparameter(*mesh,*sol,*iparam,*val);
156 return;
157}
161FORTRAN_NAME(MMG2D_SET_DPARAMETER,mmg2d_set_dparameter,
162 (MMG5_pMesh *mesh, MMG5_pSol *sol, int *dparam, double *val, int* retval),
163 (mesh,sol,dparam,val,retval)){
164 *retval = MMG2D_Set_dparameter(*mesh,*sol,*dparam,*val);
165 return;
166}
167
171FORTRAN_NAME(MMG2D_SET_LOCALPARAMETER,mmg2d_set_localparameter,
172 (MMG5_pMesh *mesh,MMG5_pSol *sol, int *typ, MMG5_int *ref,
173 double *hmin, double *hmax, double *hausd, int* retval),
174 (mesh,sol,typ,ref,hmin, hmax, hausd,retval)){
175 *retval = MMG2D_Set_localParameter(*mesh,*sol,*typ,*ref,*hmin,*hmax,*hausd);
176 return;
177}
178
179
183FORTRAN_NAME(MMG2D_SET_MULTIMAT,mmg2d_set_multimat,
184 (MMG5_pMesh *mesh,MMG5_pSol *sol, MMG5_int *ref,int *split,
185 MMG5_int* rin,MMG5_int* rex, int* retval),
186 (mesh,sol,ref,split,rin,rex,retval)){
187 *retval = MMG2D_Set_multiMat(*mesh,*sol,*ref,*split,*rin,*rex);
188 return;
189}
190
194FORTRAN_NAME(MMG2D_SET_LSBASEREFERENCE,mmg2d_set_lsbasereference,
195 (MMG5_pMesh *mesh,MMG5_pSol *sol, int *br, int* retval),
196 (mesh,sol,br,retval)){
198 return;
199}
200
204FORTRAN_NAME(MMG2D_SET_MESHSIZE,mmg2d_set_meshsize,
205 (MMG5_pMesh *mesh, MMG5_int *np, MMG5_int *nt, MMG5_int *nquad, MMG5_int *na, int *retval),
206 (mesh,np,nt,nquad,na,retval)) {
207 *retval = MMG2D_Set_meshSize(*mesh,*np,*nt,*nquad,*na);
208 return;
209}
213FORTRAN_NAME(MMG2D_SET_SOLSIZE,mmg2d_set_solsize,
214 (MMG5_pMesh *mesh, MMG5_pSol *sol, int* typEntity,
215 MMG5_int* np, int* typSol, int* retval),
216 (mesh, sol, typEntity, np, typSol, retval)) {
217 *retval = MMG2D_Set_solSize(*mesh,*sol,*typEntity,*np,*typSol);
218 return;
219}
223FORTRAN_NAME(MMG2D_SET_SOLSATVERTICESSIZE,mmg2d_set_solsatverticessize,
224 (MMG5_pMesh *mesh, MMG5_pSol *sol,int* nsols,
225 MMG5_int* nentities, int* typSol, int* retval),
226 (mesh, sol, nsols, nentities, typSol, retval)) {
227 *retval = MMG2D_Set_solsAtVerticesSize(*mesh,sol,*nsols,*nentities,typSol);
228 return;
229}
230
234FORTRAN_NAME(MMG2D_GET_SOLSIZE,mmg2d_get_solsize,
235 (MMG5_pMesh *mesh, MMG5_pSol *sol, int* typEntity, MMG5_int* np, int* typSol, int* retval),
236 (mesh,sol,typEntity,np,typSol,retval)) {
237
238 *retval = MMG2D_Get_solSize(*mesh,*sol,typEntity,np,typSol);
239 return;
240}
241
245FORTRAN_NAME(MMG2D_GET_SOLSATVERTICESSIZE,mmg2d_get_solsatverticessize,
246 (MMG5_pMesh *mesh, MMG5_pSol *sol, int *nsols,
247 MMG5_int* nentities, int* typSol, int* retval),
248 (mesh,sol,nsols,nentities,typSol,retval)) {
249
250 *retval = MMG2D_Get_solsAtVerticesSize(*mesh,sol,nsols,nentities,typSol);
251 return;
252}
253
257FORTRAN_NAME(MMG2D_SET_VERTEX,mmg2d_set_vertex,
258 (MMG5_pMesh *mesh, double* c0, double* c1, MMG5_int* ref,
259 MMG5_int* pos, int* retval),
260 (mesh,c0,c1,ref,pos,retval)) {
261
262 *retval = MMG2D_Set_vertex(*mesh,*c0,*c1,*ref,*pos);
263 return;
264}
268FORTRAN_NAME(MMG2D_SET_CORNER,mmg2d_set_corner,(MMG5_pMesh *mesh, MMG5_int *k, int* retval),
269 (mesh,k,retval)) {
271 return;
272}
276FORTRAN_NAME(MMG2D_UNSET_CORNER,mmg2d_unset_corner,(MMG5_pMesh *mesh, MMG5_int *k, int* retval),
277 (mesh,k,retval)) {
279 return;
280}
281
285FORTRAN_NAME(MMG2D_SET_REQUIREDVERTEX,mmg2d_set_requiredvertex,
286 (MMG5_pMesh *mesh, MMG5_int *k, int* retval),
287 (mesh,k,retval)) {
289 return;
290}
291
295FORTRAN_NAME(MMG2D_UNSET_REQUIREDVERTEX,mmg2d_unset_requiredvertex,
296 (MMG5_pMesh *mesh, MMG5_int *k, int* retval),
297 (mesh,k,retval)) {
299 return;
300}
301
305FORTRAN_NAME(MMG2D_GET_VERTEX,mmg2d_get_vertex,
306 (MMG5_pMesh *mesh,double* c0, double* c1, MMG5_int* ref,
307 int* isCorner, int* isRequired, int* retval),
308 (mesh,c0,c1,ref,isCorner,isRequired, retval)) {
309 *retval = MMG2D_Get_vertex(*mesh,c0,c1,ref,isCorner,isRequired);
310 return;
311}
315FORTRAN_NAME(MMG2D_GETBYIDX_VERTEX,mmg2d_getbyidx_vertex,
316 (MMG5_pMesh *mesh, double* c0, double* c1, MMG5_int* ref,
317 int* isCorner, int* isRequired, MMG5_int* idx,int* retval),
318 (mesh,c0,c1,ref,isCorner,isRequired,idx, retval)) {
319 *retval = MMG2D_GetByIdx_vertex(*mesh,c0,c1,ref,isCorner,isRequired,*idx);
320 return;
321}
322
326FORTRAN_NAME(MMG2D_SET_VERTICES,mmg2d_set_vertices,
327 (MMG5_pMesh *mesh, double* vertices, MMG5_int* refs, int* retval),
328 (mesh,vertices,refs,retval)) {
329
330 *retval = MMG2D_Set_vertices(*mesh,vertices,refs);
331 return;
332}
333
334
338FORTRAN_NAME(MMG2D_GET_VERTICES,mmg2d_get_vertices,
339 (MMG5_pMesh *mesh, double* vertices, MMG5_int* refs,
340 int* areCorners, int* areRequired, int* retval),
341 (mesh,vertices,refs,areCorners,areRequired, retval)) {
342 *retval = MMG2D_Get_vertices(*mesh,vertices,refs,areCorners,areRequired);
343 return;
344}
345
346
350FORTRAN_NAME(MMG2D_SET_TRIANGLE,mmg2d_set_triangle,
351 (MMG5_pMesh *mesh, MMG5_int* v0, MMG5_int* v1, MMG5_int* v2, MMG5_int* ref,MMG5_int* pos,
352 int* retval),
353 (mesh,v0,v1,v2,ref,pos,retval)) {
354 *retval = MMG2D_Set_triangle(*mesh, *v0, *v1, *v2, *ref, *pos);
355 return;
356}
360FORTRAN_NAME(MMG2D_SET_REQUIREDTRIANGLE,mmg2d_set_requiredtriangle,
361 (MMG5_pMesh *mesh, MMG5_int *k, int* retval),
362 (mesh,k,retval)) {
364 return;
365}
369FORTRAN_NAME(MMG2D_UNSET_REQUIREDTRIANGLE,mmg2d_unset_requiredtriangle,
370 (MMG5_pMesh *mesh, MMG5_int *k, int* retval),
371 (mesh,k,retval)) {
373 return;
374}
375
379FORTRAN_NAME(MMG2D_GET_TRIANGLE,mmg2d_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 = MMG2D_Get_triangle(*mesh,v0,v1,v2,ref,isRequired);
384 return;
385}
389FORTRAN_NAME(MMG2D_SET_TRIANGLES,mmg2d_set_triangles,
390 (MMG5_pMesh *mesh, MMG5_int* tria, MMG5_int* refs,
391 int* retval),
392 (mesh,tria,refs,retval)) {
393 *retval = MMG2D_Set_triangles(*mesh, tria, refs);
394 return;
395}
396
400FORTRAN_NAME(MMG2D_GET_TRIANGLES,mmg2d_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 = MMG2D_Get_triangles(*mesh,tria,refs,areRequired);
405 return;
406}
407
411FORTRAN_NAME(MMG2D_SET_QUADRILATERAL,mmg2d_set_quadrilateral,
412 (MMG5_pMesh *mesh, MMG5_int* v0, MMG5_int* v1, MMG5_int* v2, MMG5_int *v3,MMG5_int* ref,MMG5_int* pos,
413 int* retval),
414 (mesh,v0,v1,v2,v3,ref,pos,retval)) {
415 *retval = MMG2D_Set_quadrilateral(*mesh, *v0, *v1, *v2, *v3, *ref, *pos);
416 return;
417}
421FORTRAN_NAME(MMG2D_GET_QUADRILATERAL,mmg2d_get_quadrilateral,
422 (MMG5_pMesh *mesh, MMG5_int* v0, MMG5_int* v1, MMG5_int* v2, MMG5_int *v3, MMG5_int* ref
423 ,int* isRequired, int* retval),
424 (mesh,v0,v1,v2,v3,ref,isRequired,retval)) {
425 *retval = MMG2D_Get_quadrilateral(*mesh,v0,v1,v2,v3,ref,isRequired);
426 return;
427}
431FORTRAN_NAME(MMG2D_SET_QUADRILATERALS,mmg2d_set_quadrilaterals,
432 (MMG5_pMesh *mesh, MMG5_int* quadra, MMG5_int* refs,
433 int* retval),
434 (mesh,quadra,refs,retval)) {
435 *retval = MMG2D_Set_quadrilaterals(*mesh, quadra, refs);
436 return;
437}
438
442FORTRAN_NAME(MMG2D_GET_QUADRILATERALS,mmg2d_get_quadrilaterals,
443 (MMG5_pMesh *mesh, MMG5_int* quadra, MMG5_int* refs,int* areRequired,
444 int* retval),
445 (mesh,quadra,refs,areRequired,retval)) {
446 *retval = MMG2D_Get_quadrilaterals(*mesh,quadra,refs,areRequired);
447 return;
448}
449
453FORTRAN_NAME(MMG2D_SET_EDGE,mmg2d_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 = MMG2D_Set_edge(*mesh,*v0,*v1,*ref,*pos);
457 return;
458}
462FORTRAN_NAME(MMG2D_SET_REQUIREDEDGE,mmg2d_set_requirededge,
463 (MMG5_pMesh *mesh, MMG5_int *k, int* retval),
464 (mesh,k,retval)) {
466 return;
467}
471FORTRAN_NAME(MMG2D_UNSET_REQUIREDEDGE,mmg2d_unset_requirededge,
472 (MMG5_pMesh *mesh, MMG5_int *k, int* retval),
473 (mesh,k,retval)) {
475 return;
476}
480FORTRAN_NAME(MMG2D_SET_PARALLELEDGE,mmg2d_set_paralleledge,
481 (MMG5_pMesh *mesh, MMG5_int *k, int* retval),
482 (mesh,k,retval)) {
484 return;
485}
486
490FORTRAN_NAME(MMG2D_GET_EDGE,mmg2d_get_edge,(MMG5_pMesh *mesh, MMG5_int* e0, MMG5_int* e1, MMG5_int* ref
491 ,int* isRidge, int* isRequired, int* retval),
492 (mesh,e0,e1,ref,isRidge,isRequired,retval)) {
493 *retval = MMG2D_Get_edge(*mesh,e0,e1,ref,isRidge,isRequired);
494 return;
495}
499FORTRAN_NAME(MMG2D_SET_EDGES,mmg2d_set_edges,
500 (MMG5_pMesh *mesh, MMG5_int *edges, MMG5_int *refs, int* retval),
501 (mesh,edges,refs,retval)){
502 *retval = MMG2D_Set_edges(*mesh,edges,refs);
503 return;
504}
505
509FORTRAN_NAME(MMG2D_GET_EDGES,mmg2d_get_edges,(MMG5_pMesh *mesh, MMG5_int* edges,
510 MMG5_int* refs,int* areRidges,
511 int* areRequired, int* retval),
512 (mesh,edges,refs,areRidges,areRequired,retval)) {
513 *retval = MMG2D_Get_edges(*mesh,edges,refs,areRidges,areRequired);
514 return;
515}
516
520FORTRAN_NAME(MMG2D_GET_TRIANGLEQUALITY,mmg2d_get_trianglequality,
521 (MMG5_pMesh *mesh, MMG5_pSol *met, MMG5_int* k, double* retval),
522 (mesh,met,k,retval)) {
524 return;
525}
526
530FORTRAN_NAME(MMG2D_GET_MESHSIZE,mmg2d_get_meshsize,
531 (MMG5_pMesh *mesh, MMG5_int* np, MMG5_int* nt, MMG5_int *nquad, MMG5_int* na, int* retval),
532 (mesh,np,nt, nquad,na,retval)) {
533
534 *retval = MMG2D_Get_meshSize(*mesh,np,nt,nquad,na);
535 return;
536}
540FORTRAN_NAME(MMG2D_SET_SCALARSOL,mmg2d_set_scalarsol,
541 (MMG5_pSol *met, double *s, MMG5_int *pos, int* retval),
542 (met,s,pos,retval)) {
543 *retval = MMG2D_Set_scalarSol(*met,*s,*pos);
544 return;
545}
549FORTRAN_NAME(MMG2D_GET_SCALARSOL,mmg2d_get_scalarsol,
550 (MMG5_pSol *met, double* s, int* retval),
551 (met,s,retval)) {
552 *retval = MMG2D_Get_scalarSol(*met,s);
553 return;
554}
558FORTRAN_NAME(MMG2D_SET_SCALARSOLS,mmg2d_set_scalarsols,
559 (MMG5_pSol *met, double *s, int* retval),
560 (met,s,retval)) {
561 *retval = MMG2D_Set_scalarSols(*met,s);
562 return;
563}
564
568FORTRAN_NAME(MMG2D_GET_SCALARSOLS,mmg2d_get_scalarsols,
569 (MMG5_pSol *met, double* s, int* retval),
570 (met,s,retval)) {
571 *retval = MMG2D_Get_scalarSols(*met,s);
572 return;
573}
574
578FORTRAN_NAME(MMG2D_SET_VECTORSOL,mmg2d_set_vectorsol,
579 (MMG5_pSol *met, double *vx, double *vy,
580 MMG5_int *pos, int* retval),
581 (met,vx,vy,pos,retval)) {
582 *retval = MMG2D_Set_vectorSol(*met,*vx,*vy,*pos);
583 return;
584}
585
589FORTRAN_NAME(MMG2D_GET_VECTORSOL,mmg2d_get_vectorsol,
590 (MMG5_pSol *met, double* vx,double *vy, int* retval),
591 (met,vx,vy,retval)) {
592 *retval = MMG2D_Get_vectorSol(*met,vx,vy);
593 return;
594}
598FORTRAN_NAME(MMG2D_SET_VECTORSOLS,mmg2d_set_vectorsols,
599 (MMG5_pSol *met, double *sols, int* retval),
600 (met,sols,retval)) {
601 *retval = MMG2D_Set_vectorSols(*met,sols);
602 return;
603}
604
608FORTRAN_NAME(MMG2D_GET_VECTORSOLS,mmg2d_get_vectorsols,
609 (MMG5_pSol *met, double* sols, int* retval),
610 (met,sols,retval)) {
611 *retval = MMG2D_Get_vectorSols(*met,sols);
612 return;
613}
614
618FORTRAN_NAME(MMG2D_SET_TENSORSOL,mmg2d_set_tensorsol,
619 (MMG5_pSol *met, double *m11, double *m12, double *m22,
620 MMG5_int *pos, int* retval),
621 (met,m11,m12,m22,pos,retval)) {
622 *retval = MMG2D_Set_tensorSol(*met,*m11,*m12,*m22,*pos);
623 return;
624}
628FORTRAN_NAME(MMG2D_GET_TENSORSOL,mmg2d_get_tensorsol,
629 (MMG5_pSol *met, double* m11,double *m12, double *m22,
630 int* retval),
631 (met,m11,m12,m22,retval)) {
632 *retval = MMG2D_Get_tensorSol(*met,m11,m12,m22);
633 return;
634}
638FORTRAN_NAME(MMG2D_SET_TENSORSOLS,mmg2d_set_tensorsols,
639 (MMG5_pSol *met, double* sols,int* retval),
640 (met,sols,retval)) {
641 *retval = MMG2D_Set_tensorSols(*met,sols);
642 return;
643}
644
648FORTRAN_NAME(MMG2D_GET_TENSORSOLS,mmg2d_get_tensorsols,
649 (MMG5_pSol *met, double* sols, int* retval),
650 (met,sols,retval)) {
651 *retval = MMG2D_Get_tensorSols(*met,sols);
652 return;
653}
657FORTRAN_NAME(MMG2D_SET_ITHSOL_INSOLSATVERTICES,mmg2d_set_ithsol_insolsatvertices,
658 (MMG5_pSol *sol, MMG5_int *i,double *s,MMG5_int *pos, int* retval),
659 (sol,i,s,pos,retval)) {
661 return;
662}
663
667FORTRAN_NAME(MMG2D_GET_ITHSOL_INSOLSATVERTICES,mmg2d_get_ithsol_insolsatvertices,
668 (MMG5_pSol *sol, MMG5_int* i,double *s,MMG5_int *pos, int* retval),
669 (sol,i,s,pos,retval)) {
671 return;
672}
673
674
678FORTRAN_NAME(MMG2D_SET_ITHSOLS_INSOLSATVERTICES,mmg2d_set_ithsols_insolsatvertices,
679 (MMG5_pSol *sol, MMG5_int *i,double *s, int* retval),
680 (sol,i,s,retval)) {
682 return;
683}
684
688FORTRAN_NAME(MMG2D_GET_ITHSOLS_INSOLSATVERTICES,mmg2d_get_ithsols_insolsatvertices,
689 (MMG5_pSol *sol, MMG5_int* i,double *s, int* retval),
690 (sol,i,s,retval)) {
692 return;
693}
694
698FORTRAN_NAME(MMG2D_CHK_MESHDATA,mmg2d_chk_meshdata,
699 (MMG5_pMesh *mesh,MMG5_pSol *met, int* retval),
700 (mesh,met,retval)) {
702 return;
703}
704
708FORTRAN_NAME(MMG2D_FREE_ALLSOLS,mmg2d_free_allsols,
710 (mesh,sol,retval)){
711
713
714 return;
715}
716
717
721FORTRAN_VARIADIC(MMG2D_FREE_ALL,mmg2d_free_all,
722 (const int starter,...),
723 va_list argptr;
724 int ier;
725
727
729
730 va_end(argptr);
731
732 if ( !ier ) exit(EXIT_FAILURE);
733
734 return;
735 )
736
741 (const int starter,...),
742 va_list argptr;
743 int ier;
744
746
748
750
751 if ( !ier ) exit(EXIT_FAILURE);
752
753 return;
754 )
755
759FORTRAN_VARIADIC(MMG2D_FREE_NAMES,mmg2d_free_names,
760 (const int starter,...),
761 va_list argptr;
762 int ier;
763
765
767
768 va_end(argptr);
769
770 if ( !ier ) exit(EXIT_FAILURE);
771
772 return;
773 )
774
779
780 char *tmp = NULL;
781
782 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
784 tmp[*strlen0] = '\0';
785
788
789 return;
790}
791
795FORTRAN_NAME(MMG2D_LOADVTKMESH,mmg2d_loadvtkmesh,
796 (MMG5_pMesh *mesh, MMG5_pSol *sol,char* filename, int *strlen0,int* retval),
798 char *tmp = NULL;
799
800 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
802 tmp[*strlen0] = '\0';
803
805
807
808 return;
809}
813FORTRAN_NAME(MMG2D_LOADVTKMESH_AND_ALLDATA,mmg2d_loadvtkmesh_and_alldata,
814 (MMG5_pMesh *mesh, MMG5_pSol *sol,char* filename, int *strlen0,int* retval),
816 char *tmp = NULL;
817
818 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
820 tmp[*strlen0] = '\0';
821
823
825
826 return;
827}
831FORTRAN_NAME(MMG2D_LOADVTPMESH,mmg2d_loadvtpmesh,
832 (MMG5_pMesh *mesh, MMG5_pSol *sol,char* filename, int *strlen0,int* retval),
834 char *tmp = NULL;
835
836 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
838 tmp[*strlen0] = '\0';
839
841
843
844 return;
845}
849FORTRAN_NAME(MMG2D_LOADVTPMESH_AND_ALLDATA,mmg2d_loadvtpmesh_and_alldata,
850 (MMG5_pMesh *mesh, MMG5_pSol *sol,char* filename, int *strlen0,int* retval),
852 char *tmp = NULL;
853
854 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
856 tmp[*strlen0] = '\0';
857
859
861
862 return;
863}
867FORTRAN_NAME(MMG2D_LOADVTUMESH,mmg2d_loadvtumesh,
868 (MMG5_pMesh *mesh, MMG5_pSol *sol,char* filename, int *strlen0,int* retval),
870 char *tmp = NULL;
871
872 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
874 tmp[*strlen0] = '\0';
875
877
879
880 return;
881}
885FORTRAN_NAME(MMG2D_LOADVTUMESH_AND_ALLDATA,mmg2d_loadvtumesh_and_alldata,
886 (MMG5_pMesh *mesh, MMG5_pSol *sol,char* filename, int *strlen0,int* retval),
888 char *tmp = NULL;
889
890 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
892 tmp[*strlen0] = '\0';
893
895
897
898 return;
899}
900
904FORTRAN_NAME(MMG2D_LOADMSHMESH,mmg2d_loadmshmesh,
905 (MMG5_pMesh *mesh, MMG5_pSol *sol,char* filename, int *strlen0,int* retval),
907 char *tmp = NULL;
908
909 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
911 tmp[*strlen0] = '\0';
912
914
916
917 return;
918}
919
923FORTRAN_NAME(MMG2D_LOADGENERICMESH,mmg2d_loadgenericmesh,
924 (MMG5_pMesh *mesh, MMG5_pSol *sol,char* filename, int *strlen0,int* retval),
926 char *tmp = NULL;
927
928 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
930 tmp[*strlen0] = '\0';
931
933
935
936 return;
937}
938
942FORTRAN_NAME(MMG2D_LOADMSHMESH_AND_ALLDATA,mmg2d_loadmshmesh_and_alldata,
943 (MMG5_pMesh *mesh, MMG5_pSol *sol,char* filename, int *strlen0,int* retval),
945 char *tmp = NULL;
946
947 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
949 tmp[*strlen0] = '\0';
950
952
954
955 return;
956}
957
961FORTRAN_NAME(MMG2D_SAVEMESH,mmg2d_savemesh,(MMG5_pMesh *mesh,char *meshin,int *strlen0, int* retval),
963 char *tmp = NULL;
964
965 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
967 tmp[*strlen0] = '\0';
970
971 return;
972}
976FORTRAN_NAME(MMG2D_SAVEVTKMESH,mmg2d_savevtkmesh,
978 int* retval),
980 char *tmp = NULL;
981
982 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
984 tmp[*strlen0] = '\0';
985
987
989
990 return;
991}
995FORTRAN_NAME(MMG2D_SAVEVTKMESH_AND_ALLDATA,mmg2d_savevtkmesh_and_alldata,
997 int* retval),
999 char *tmp = NULL;
1000
1001 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1003 tmp[*strlen0] = '\0';
1004
1006
1008
1009 return;
1010}
1011
1015FORTRAN_NAME(MMG2D_SAVEVTUMESH,mmg2d_savevtumesh,
1016 (MMG5_pMesh *mesh, MMG5_pSol *sol,char* filename, int *strlen0,
1017 int* retval),
1019 char *tmp = NULL;
1020
1021 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1023 tmp[*strlen0] = '\0';
1024
1026
1028
1029 return;
1030}
1034FORTRAN_NAME(MMG2D_SAVEVTUMESH_AND_ALLDATA,mmg2d_savevtumesh_and_alldata,
1035 (MMG5_pMesh *mesh, MMG5_pSol *sol,char* filename, int *strlen0,
1036 int* retval),
1038 char *tmp = NULL;
1039
1040 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1042 tmp[*strlen0] = '\0';
1043
1045
1047
1048 return;
1049}
1050
1054FORTRAN_NAME(MMG2D_SAVEVTPMESH,mmg2d_savevtpmesh,
1055 (MMG5_pMesh *mesh, MMG5_pSol *sol,char* filename, int *strlen0,
1056 int* retval),
1058 char *tmp = NULL;
1059
1060 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1062 tmp[*strlen0] = '\0';
1063
1065
1067
1068 return;
1069}
1073FORTRAN_NAME(MMG2D_SAVEVTPMESH_AND_ALLDATA,mmg2d_savevtpmesh_and_alldata,
1074 (MMG5_pMesh *mesh, MMG5_pSol *sol,char* filename, int *strlen0,
1075 int* retval),
1077 char *tmp = NULL;
1078
1079 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1081 tmp[*strlen0] = '\0';
1082
1084
1086
1087 return;
1088}
1089
1093FORTRAN_NAME(MMG2D_SAVEMSHMESH,mmg2d_savemshmesh,
1094 (MMG5_pMesh *mesh, MMG5_pSol *sol,char* filename, int *strlen0,
1095 int* retval),
1097 char *tmp = NULL;
1098
1099 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1101 tmp[*strlen0] = '\0';
1102
1104
1106
1107 return;
1108}
1109
1113FORTRAN_NAME(MMG2D_SAVEMSHMESH_AND_ALLDATA,mmg2d_savemshmesh_and_alldata,
1114 (MMG5_pMesh *mesh, MMG5_pSol *sol,char* filename, int *strlen0,
1115 int* retval),
1117 char *tmp = NULL;
1118
1119 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1121 tmp[*strlen0] = '\0';
1122
1124
1126
1127 return;
1128}
1129
1133FORTRAN_NAME(MMG2D_SAVETETGENMESH,mmg2d_savetetgenmesh,(MMG5_pMesh *mesh,char *meshin,int *strlen0, int* retval),
1135 char *tmp = NULL;
1136
1137 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1139 tmp[*strlen0] = '\0';
1142
1143 return;
1144}
1145
1149FORTRAN_NAME(MMG2D_SAVEGENERICMESH,mmg2d_savegenericmesh,
1150 (MMG5_pMesh *mesh, MMG5_pSol *sol,char* filename, int *strlen0,int* retval),
1152 char *tmp = NULL;
1153
1154 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1156 tmp[*strlen0] = '\0';
1157
1159
1161
1162 return;
1163}
1164
1168FORTRAN_NAME(MMG2D_LOADSOL,mmg2d_loadsol,
1169 (MMG5_pMesh *mesh,MMG5_pSol *met,char *meshin,int* strlen0,int* retval),
1170 (mesh,met,meshin,strlen0,retval)){
1171 char *tmp = NULL;
1172
1173 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1175 tmp[*strlen0] = '\0';
1176
1177 *retval = MMG2D_loadSol(*mesh,*met,tmp);
1179
1180 return;
1181}
1182
1186FORTRAN_NAME(MMG2D_LOADALLSOLS,mmg2d_loadallsols,
1187 (MMG5_pMesh *mesh,MMG5_pSol *sol,char *meshin,int* strlen0,int* retval),
1189 char *tmp = NULL;
1190
1191 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1193 tmp[*strlen0] = '\0';
1194
1197
1198 return;
1199}
1200
1201
1205FORTRAN_NAME(MMG2D_SAVESOL,mmg2d_savesol,(MMG5_pMesh *mesh,MMG5_pSol *met,
1206 char *meshin,int *strlen0,int* retval),
1207 (mesh,met,meshin,strlen0,retval)){
1208 char *tmp = NULL;
1209
1210 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1212 tmp[*strlen0] = '\0';
1213
1214 *retval = MMG2D_saveSol(*mesh,*met,tmp);
1216
1217 return;
1218}
1219
1223FORTRAN_NAME(MMG2D_SAVEALLSOLS,mmg2d_saveallsols,(MMG5_pMesh *mesh,MMG5_pSol *sol,
1224 char *meshin,int *strlen0,int* retval),
1226 char *tmp = NULL;
1227
1228 MMG5_SAFE_MALLOC(tmp,*strlen0+1,char,return);
1230 tmp[*strlen0] = '\0';
1231
1234
1235 return;
1236}
int MMG2D_Set_lsBaseReference(MMG5_pMesh mesh, MMG5_pSol sol, MMG5_int br)
int MMG2D_Set_scalarSol(MMG5_pSol met, double s, MMG5_int pos)
int MMG2D_Get_ithSols_inSolsAtVertices(MMG5_pSol sol, int i, double *s)
void MMG2D_Init_parameters(MMG5_pMesh mesh)
void MMG2D_Init_fileNames(MMG5_pMesh mesh, MMG5_pSol sol)
int MMG2D_Set_quadrilateral(MMG5_pMesh mesh, MMG5_int v0, MMG5_int v1, MMG5_int v2, MMG5_int v3, MMG5_int ref, MMG5_int pos)
int MMG2D_Unset_requiredEdge(MMG5_pMesh mesh, MMG5_int k)
int MMG2D_Set_vertex(MMG5_pMesh mesh, double c0, double c1, MMG5_int ref, MMG5_int pos)
int MMG2D_Set_scalarSols(MMG5_pSol met, double *s)
int MMG2D_Get_vectorSols(MMG5_pSol met, double *sols)
int MMG2D_Set_iparameter(MMG5_pMesh mesh, MMG5_pSol sol, int iparam, MMG5_int val)
int MMG2D_Set_meshSize(MMG5_pMesh mesh, MMG5_int np, MMG5_int nt, MMG5_int nquad, MMG5_int na)
int MMG2D_Set_requiredEdge(MMG5_pMesh mesh, MMG5_int k)
int MMG2D_Get_quadrilateral(MMG5_pMesh mesh, MMG5_int *v0, MMG5_int *v1, MMG5_int *v2, MMG5_int *v3, MMG5_int *ref, int *isRequired)
int MMG2D_Set_tensorSol(MMG5_pSol met, double m11, double m12, double m22, MMG5_int pos)
int MMG2D_Get_vectorSol(MMG5_pSol met, double *vx, double *vy)
int MMG2D_Set_edge(MMG5_pMesh mesh, MMG5_int v0, MMG5_int v1, MMG5_int ref, MMG5_int pos)
int MMG2D_Set_ithSols_inSolsAtVertices(MMG5_pSol sol, int i, double *s)
int MMG2D_Unset_requiredTriangle(MMG5_pMesh mesh, MMG5_int k)
int MMG2D_Set_triangles(MMG5_pMesh mesh, MMG5_int *tria, MMG5_int *refs)
int MMG2D_GetByIdx_vertex(MMG5_pMesh mesh, double *c0, double *c1, MMG5_int *ref, int *isCorner, int *isRequired, MMG5_int idx)
int MMG2D_Free_allSols(MMG5_pMesh mesh, MMG5_pSol *sol)
int MMG2D_Set_ithSol_inSolsAtVertices(MMG5_pSol sol, int i, double *s, MMG5_int pos)
int MMG2D_Get_scalarSol(MMG5_pSol met, double *s)
int MMG2D_Get_vertices(MMG5_pMesh mesh, double *vertices, MMG5_int *refs, int *areCorners, int *areRequired)
int MMG2D_Unset_corner(MMG5_pMesh mesh, MMG5_int k)
int MMG2D_Get_solSize(MMG5_pMesh mesh, MMG5_pSol sol, int *typEntity, MMG5_int *np, int *typSol)
int MMG2D_Get_tensorSol(MMG5_pSol met, double *m11, double *m12, double *m22)
int MMG2D_Set_solSize(MMG5_pMesh mesh, MMG5_pSol sol, int typEntity, MMG5_int np, int typSol)
int MMG2D_Chk_meshData(MMG5_pMesh mesh, MMG5_pSol met)
int MMG2D_Set_inputSolName(MMG5_pMesh mesh, MMG5_pSol sol, const char *solin)
int MMG2D_Set_tensorSols(MMG5_pSol met, double *sols)
int MMG2D_Set_inputMeshName(MMG5_pMesh mesh, const char *meshin)
int MMG2D_Get_vertex(MMG5_pMesh mesh, double *c0, double *c1, MMG5_int *ref, int *isCorner, int *isRequired)
int MMG2D_Get_scalarSols(MMG5_pSol met, double *s)
int MMG2D_Set_vectorSol(MMG5_pSol met, double vx, double vy, MMG5_int pos)
int MMG2D_Get_edge(MMG5_pMesh mesh, MMG5_int *e0, MMG5_int *e1, MMG5_int *ref, int *isRidge, int *isRequired)
double MMG2D_Get_triangleQuality(MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k)
int MMG2D_Set_triangle(MMG5_pMesh mesh, MMG5_int v0, MMG5_int v1, MMG5_int v2, MMG5_int ref, MMG5_int pos)
int MMG2D_Set_solsAtVerticesSize(MMG5_pMesh mesh, MMG5_pSol *sol, int nsols, MMG5_int np, int *typSol)
int MMG2D_Get_tensorSols(MMG5_pSol met, double *sols)
int MMG2D_Get_meshSize(MMG5_pMesh mesh, MMG5_int *np, MMG5_int *nt, MMG5_int *nquad, MMG5_int *na)
int MMG2D_Get_edges(MMG5_pMesh mesh, MMG5_int *edges, MMG5_int *refs, int *areRidges, int *areRequired)
int MMG2D_Get_quadrilaterals(MMG5_pMesh mesh, MMG5_int *quadra, MMG5_int *refs, int *areRequired)
int MMG2D_Set_localParameter(MMG5_pMesh mesh, MMG5_pSol sol, int typ, MMG5_int ref, double hmin, double hmax, double hausd)
int MMG2D_Set_vertices(MMG5_pMesh mesh, double *vertices, MMG5_int *refs)
int MMG2D_Get_triangle(MMG5_pMesh mesh, MMG5_int *v0, MMG5_int *v1, MMG5_int *v2, MMG5_int *ref, int *isRequired)
int MMG2D_Set_vectorSols(MMG5_pSol met, double *sols)
int MMG2D_Set_corner(MMG5_pMesh mesh, MMG5_int k)
int MMG2D_Set_edges(MMG5_pMesh mesh, MMG5_int *edges, MMG5_int *refs)
int MMG2D_Set_requiredVertex(MMG5_pMesh mesh, MMG5_int k)
int MMG2D_Get_ithSol_inSolsAtVertices(MMG5_pSol sol, int i, double *s, MMG5_int pos)
int MMG2D_Set_parallelEdge(MMG5_pMesh mesh, MMG5_int k)
int MMG2D_Set_dparameter(MMG5_pMesh mesh, MMG5_pSol sol, int dparam, double val)
int MMG2D_Set_multiMat(MMG5_pMesh mesh, MMG5_pSol sol, MMG5_int ref, int split, MMG5_int rin, MMG5_int rout)
int MMG2D_Get_solsAtVerticesSize(MMG5_pMesh mesh, MMG5_pSol *sol, int *nsols, MMG5_int *np, int *typSol)
int MMG2D_Get_triangles(MMG5_pMesh mesh, MMG5_int *tria, MMG5_int *refs, int *areRequired)
int MMG2D_Set_quadrilaterals(MMG5_pMesh mesh, MMG5_int *quadra, MMG5_int *refs)
int MMG2D_Unset_requiredVertex(MMG5_pMesh mesh, MMG5_int k)
int MMG2D_Set_outputMeshName(MMG5_pMesh mesh, const char *meshout)
int MMG2D_Set_requiredTriangle(MMG5_pMesh mesh, MMG5_int k)
int MMG2D_Set_outputSolName(MMG5_pMesh mesh, MMG5_pSol sol, const char *solout)
MMG5_pMesh char int int * retval
strncpy(tmp, meshin, *strlen0)
int ier
mmg2d_free_structures
tmp[*strlen0]
const int starter
MMG5_pMesh MMG5_pSol * sol
mmg2d_loadmesh
MMG5_pMesh char int * strlen0
va_start(argptr, starter)
MMG5_pMesh char * meshin
MMG5_pMesh * mesh
va_end(argptr)
mmg2d_init_filenames
const int va_list argptr
MMG5_pMesh char * filename
int MMG2D_saveTetgenMesh(MMG5_pMesh mesh, const char *filename)
Definition: inout_2d.c:2209
int MMG2D_saveMesh(MMG5_pMesh mesh, const char *filename)
Definition: inout_2d.c:1096
int MMG2D_saveMshMesh_and_allData(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename)
Definition: inout_2d.c:1535
int MMG2D_loadMshMesh_and_allData(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename)
Definition: inout_2d.c:767
int MMG2D_saveMshMesh(MMG5_pMesh mesh, MMG5_pSol sol, const char *filename)
Definition: inout_2d.c:1531
int MMG2D_loadGenericMesh(MMG5_pMesh mesh, MMG5_pSol sol, const char *filename)
Definition: inout_2d.c:592
int MMG2D_saveGenericMesh(MMG5_pMesh mesh, MMG5_pSol sol, const char *filename)
Definition: inout_2d.c:2230
int MMG2D_saveAllSols(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename)
Definition: inout_2d.c:1673
int MMG2D_saveSol(MMG5_pMesh mesh, MMG5_pSol sol, const char *filename)
Definition: inout_2d.c:1612
int MMG2D_loadMesh(MMG5_pMesh mesh, const char *filename)
Definition: inout_2d.c:28
int MMG2D_loadSol(MMG5_pMesh mesh, MMG5_pSol sol, const char *filename)
Definition: inout_2d.c:900
int MMG2D_loadMshMesh(MMG5_pMesh mesh, MMG5_pSol sol, const char *filename)
Definition: inout_2d.c:701
int MMG2D_loadAllSols(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename)
Definition: inout_2d.c:991
int MMG2D_loadVtkMesh_and_allData(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename)
int MMG2D_loadVtkMesh(MMG5_pMesh mesh, MMG5_pSol sol, const char *filename)
int MMG2D_loadVtpMesh_and_allData(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename)
int MMG2D_saveVtpMesh_and_allData(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename)
int MMG2D_saveVtkMesh_and_allData(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename)
int MMG2D_saveVtkMesh(MMG5_pMesh mesh, MMG5_pSol sol, const char *filename)
int MMG2D_saveVtuMesh(MMG5_pMesh mesh, MMG5_pSol sol, const char *filename)
int MMG2D_loadVtuMesh(MMG5_pMesh mesh, MMG5_pSol sol, const char *filename)
int MMG2D_saveVtpMesh(MMG5_pMesh mesh, MMG5_pSol sol, const char *filename)
int MMG2D_saveVtuMesh_and_allData(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename)
int MMG2D_loadVtpMesh(MMG5_pMesh mesh, MMG5_pSol sol, const char *filename)
Definition: inoutcpp_2d.cpp:83
int MMG2D_loadVtuMesh_and_allData(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename)
API headers for the mmg2d library.
int MMG2D_Free_all_var(va_list argptr)
Definition: variadic_2d.c:259
int MMG2D_Free_structures_var(va_list argptr)
Definition: variadic_2d.c:368
int MMG2D_Free_names_var(va_list argptr)
Definition: variadic_2d.c:483
int MMG2D_Init_mesh_var(va_list argptr)
Definition: variadic_2d.c:176
#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:605