/* Program to build an extended "Topology-Table" that provides more information than "MakeElemTableTable" procedure. See notice of copyright at the end of this file. */ #define ExtendedTable_C_author \ "Modified by L.A.P.Lozada on 2000-07-08." #include #include #define _GNU_SOURCE #include #include TYPE typedef struct Options_t { inFile: char *; } /* Initial guess file name (minus ".tp") */ Options_t *GetOptions(int argc, char **argv); int main(int argc, char **argv) { Options_t *o = GetOptions(argc, argv); char *topo_cmt = jsprintf("Created by %s on %s", PROG_NAME, Today()); /* Random_t coins = MakeRandomSource(4615); */ ??? tc = Triangulation.ReadToMa(o->inFile); ??? top = tc.top; { if (top->der!=3) { fprintf(stderr, "THis topology isn't a triangulation\n"); Process.Exit¦(1); } fprintf(stderr, "@{edge->?}s:\n"); fprintf(stderr, "-----\n"); for (i = 0; i < top->NE; i++) { ??? ei = NARROW(top->edge[i], @{Edge->?}); with ( double v0 = ei.node[0]->num; double v1 = ei.node[1]->num ){ /* Prints */ fprintf(stderr, Fmt.Pad(Fmt.Int(i), 4) & ":"); fprintf(stderr, Fmt.Pad(Fmt.Int(v0), 4) & "v"); fprintf(stderr, Fmt.Pad(Fmt.Int(v1), 4) & "v\n"); } } fprintf(stderr, "walls:\n"); fprintf(stderr, "-----\n"); for (i = 0; i < top->wall.nel; i++) { ??? fi = top->wall[i]; with ( /* nodes */ double v0 = fi.node^[0]->num; double v1 = fi.node^[1]->num; double v2 = fi.node^[2]->num; /* @{edge->?}s */ double a = fi.pa; double b = NextE(a); double c = NextE(b); double e0 = PEdge(a)->num; double e1 = PEdge(b)->num; double e2 = PEdge(c)->num ){ /* Prints */ fprintf(stderr, Fmt.Pad(Fmt.Int(i), 4) & ":"); fprintf(stderr, Fmt.Pad(Fmt.Int(v0), 4) & "v "); fprintf(stderr, Fmt.Pad(Fmt.Int(v1), 4) & "v "); fprintf(stderr, Fmt.Pad(Fmt.Int(v2), 4) & "v - "); fprintf(stderr, Fmt.Pad(Fmt.Int(e0), 4) & "e "); fprintf(stderr, Fmt.Pad(Fmt.Int(e1), 4) & "e "); fprintf(stderr, Fmt.Pad(Fmt.Int(e2), 4) & "e\n"); } } if (top->cell.nel!=0) { fprintf(stderr, "cells:\n"); fprintf(stderr, "---------\n"); for (i = 0; i < top->cell.nel; i++) { ??? pi = top->cell[i]; ??? ri = Srot(top.cell[i]); Place_t a = Tors(ri); ??? v0 = pi.node^[0]->num; ??? v1 = pi.node^[1]->num; ??? v2 = pi.node^[2]->num; ??? v3 = pi.node^[3]->num; with ( /* walls */ double walls = Triangulation.TetraWalls(a); double f0 = walls[0]->num; double f1 = walls[1]->num; double f2 = walls[2]->num; double f3 = walls[3]->num; /* @{edge->?}s */ double @{edge->?}s = Triangulation.TetraEdges(a); double e0 = @{edge->?}s[0]->num; double e1 = @{edge->?}s[1]->num; double e2 = @{edge->?}s[2]->num; double e3 = @{edge->?}s[3]->num; double e4 = @{edge->?}s[4]->num; double e5 = @{edge->?}s[5]->num ){ /* Prints */ fprintf(stderr, Fmt.Pad(Fmt.Int(i), 4) & ": "); fprintf(stderr, Fmt.Pad(Fmt.Int(v0), 3) & "v "); fprintf(stderr, Fmt.Pad(Fmt.Int(v1), 3) & "v "); fprintf(stderr, Fmt.Pad(Fmt.Int(v2), 3) & "v "); fprintf(stderr, Fmt.Pad(Fmt.Int(v3), 3) & "v - "); fprintf(stderr, Fmt.Pad(Fmt.Int(f0), 3) & "f "); fprintf(stderr, Fmt.Pad(Fmt.Int(f1), 3) & "f "); fprintf(stderr, Fmt.Pad(Fmt.Int(f2), 3) & "f "); fprintf(stderr, Fmt.Pad(Fmt.Int(f3), 3) & "f - "); fprintf(stderr, Fmt.Pad(Fmt.Int(e0), 3) & "e "); fprintf(stderr, Fmt.Pad(Fmt.Int(e1), 3) & "e "); fprintf(stderr, Fmt.Pad(Fmt.Int(e2), 3) & "e "); fprintf(stderr, Fmt.Pad(Fmt.Int(e3), 3) & "e "); fprintf(stderr, Fmt.Pad(Fmt.Int(e4), 3) & "e "); fprintf(stderr, Fmt.Pad(Fmt.Int(e5), 3) & "e\n"); } } } } } DoIt; Options_t *GetOptions(int argc, char **argv) { Options_t *o = (Options_t *)malloc(sizeof(Options_t)); argparser_t *pp = argparser_new(stderr, argc, argv); argparser_set_help(pp, PROG_NAME " version " PROG_VERS ", usage:\n" PROG_HELP); argparser_set_info(pp, PROG_INFO); argparser_process_help_info_options(pp); argparser_get_keyword(pp, "-inFile"); o->inFile = argparser_get_next(pp); argparser_finish(pp); ----------------------------------- #define _HELP \ fprintf(stderr, "Usage: ExtendedTable" \ " -inFile \n"); END¦ } } return o; } /* END GetOptions */ { DoIt() } ExtendedTable. /* Copyright © 2000 Universidade Estadual de Campinas (UNICAMP) */