53int main(
int argc,
char *argv[]) {
60 MMG5_int k,np, nt, na, nc, nr, nreq,ref,Tria[3], Edge[2];
61 int typEntity, typSol;
62 int *corner, *required, *ridge;
64 char *fileout,*solout;
66 fprintf(stdout,
" -- TEST MMGSLIB \n");
69 printf(
" Usage: %s fileout\n",argv[0]);
74 fileout = (
char *) calloc(strlen(argv[1]) + 6,
sizeof(
char));
75 if ( fileout == NULL ) {
76 perror(
" ## Memory problem: calloc");
79 strcpy(fileout,argv[1]);
80 strcat(fileout,
".mesh");
82 solout = (
char *) calloc(strlen(argv[1]) + 5,
sizeof(
char));
83 if ( solout == NULL ) {
84 perror(
" ## Memory problem: calloc");
87 strcpy(solout,argv[1]);
88 strcat(solout,
".sol");
116 if (
MMGS_Set_vertex(mmgMesh,0.5,0 ,0 ,0, 2) != 1 ) exit(EXIT_FAILURE);
117 if (
MMGS_Set_vertex(mmgMesh,0.5,0 ,1 ,0, 3) != 1 ) exit(EXIT_FAILURE);
120 if (
MMGS_Set_vertex(mmgMesh,0.5,1 ,0 ,0, 6) != 1 ) exit(EXIT_FAILURE);
121 if (
MMGS_Set_vertex(mmgMesh,0.5,1 ,1 ,0, 7) != 1 ) exit(EXIT_FAILURE);
124 if (
MMGS_Set_vertex(mmgMesh,1 ,1 ,0 ,0, 10) != 1 ) exit(EXIT_FAILURE);
125 if (
MMGS_Set_vertex(mmgMesh,1 ,0 ,1 ,0, 11) != 1 ) exit(EXIT_FAILURE);
126 if (
MMGS_Set_vertex(mmgMesh,1 ,1 ,1 ,0, 12) != 1 ) exit(EXIT_FAILURE);
164 for(k=1 ; k<=12 ; k++) {
176 fprintf(stdout,
"BAD ENDING OF MMGSLIB: UNABLE TO SAVE MESH\n");
179 fprintf(stdout,
"BAD ENDING OF MMGSLIB\n");
189 if( !(inm = fopen(fileout,
"w")) ) {
190 fprintf(stderr,
" ** UNABLE TO OPEN OUTPUT MESH FILE.\n");
193 fprintf(inm,
"MeshVersionFormatted 2\n");
194 fprintf(inm,
"\nDimension 3\n");
200 corner = (
int*)calloc(np+1,
sizeof(
int));
202 perror(
" ## Memory problem: calloc");
206 required = (
int*)calloc(
MAX3(np,nt,na)+1 ,
sizeof(
int));
208 perror(
" ## Memory problem: calloc");
212 ridge = (
int*)calloc(na+1 ,
sizeof(
int));
214 perror(
" ## Memory problem: calloc");
219 fprintf(inm,
"\nVertices\n%"MMG5_PRId
"\n",np);
220 for(k=1; k<=np; k++) {
223 &ref,&(corner[k]),&(required[k])) != 1 )
225 fprintf(inm,
"%.15lg %.15lg %.15lg %"MMG5_PRId
" \n",Point[0],Point[1],Point[2],ref);
226 if ( corner[k] ) nc++;
227 if ( required[k] ) nreq++;
229 fprintf(inm,
"\nCorners\n%"MMG5_PRId
"\n",nc);
230 for(k=1; k<=np; k++) {
231 if ( corner[k] ) fprintf(inm,
"%"MMG5_PRId
" \n",k);
233 fprintf(inm,
"\nRequiredVertices\n%"MMG5_PRId
"\n",nreq);
234 for(k=1; k<=np; k++) {
235 if ( required[k] ) fprintf(inm,
"%"MMG5_PRId
" \n",k);
241 fprintf(inm,
"\nTriangles\n%"MMG5_PRId
"\n",nt);
242 for(k=1; k<=nt; k++) {
245 &ref,&(required[k])) != 1 )
247 fprintf(inm,
"%"MMG5_PRId
" %"MMG5_PRId
" %"MMG5_PRId
" %"MMG5_PRId
" \n",
248 Tria[0],Tria[1],Tria[2],ref);
249 if ( required[k] ) nreq++;
251 fprintf(inm,
"\nRequiredTriangles\n%"MMG5_PRId
"\n",nreq);
252 for(k=1; k<=nt; k++) {
253 if ( required[k] ) fprintf(inm,
"%"MMG5_PRId
" \n",k);
257 fprintf(inm,
"\nEdges\n%"MMG5_PRId
"\n",na);
258 for(k=1; k<=na; k++) {
261 &(ridge[k]),&(required[k])) != 1 ) exit(EXIT_FAILURE);
262 fprintf(inm,
"%"MMG5_PRId
" %"MMG5_PRId
" %"MMG5_PRId
" \n",Edge[0],Edge[1],ref);
263 if ( ridge[k] ) nr++;
264 if ( required[k] ) nreq++;
266 fprintf(inm,
"\nRequiredEdges\n%"MMG5_PRId
"\n",nreq);
267 for(k=1; k<=na; k++) {
268 if ( required[k] ) fprintf(inm,
"%"MMG5_PRId
" \n",k);
270 fprintf(inm,
"\nRidges\n%"MMG5_PRId
"\n",nr);
271 for(k=1; k<=na; k++) {
272 if ( ridge[k] ) fprintf(inm,
"%"MMG5_PRId
" \n",k);
275 fprintf(inm,
"\nEnd\n");
284 if( !(inm = fopen(solout,
"w")) ) {
285 fprintf(stderr,
" ** UNABLE TO OPEN OUTPUT SOL FILE.\n");
288 fprintf(inm,
"MeshVersionFormatted 2\n");
289 fprintf(inm,
"\nDimension 3\n");
299 fprintf(inm,
"\nSolAtVertices\n%"MMG5_PRId
"\n",np);
300 fprintf(inm,
"1 1 \n\n");
301 for(k=1; k<=np; k++) {
304 fprintf(inm,
"%.15lg \n",Sol);
306 fprintf(inm,
"\nEnd\n");