AcouSTO  version 2.0

◆ vrmlout()

void vrmlout ( )

Produces the VRML files for visualization and handling of the geometry. Uses VRML 2.0 format (http://www.web3d.org)

29  {
30  int in1,in2,in3,in4,i;
31  FILE *f;
32  char fname[MAX_PATH];
33 
34  logger(LOG_DEBUG,"About to produce VRML files \n");
35 
36  if (0 != rank) return; // Does the job only on master process
37 
38  get_filename(fname,"%s-surface.wrl",rundetails->title); // Domain Boundary
39  f = fopen(fname,"w");
40  fprintf(f,"#VRML V2.0 utf8 \n");
41  fprintf(f,"Transform { \n translation 0.0 0.0 0.0 \n children[ \n Shape { \n");
42  fprintf(f,"appearance Appearance{ \n material Material{ \n diffuseColor 1.0 0.0 0.0 \n");
43  fprintf(f,"emissiveColor 1.0 0.0 0.0 \n shininess 0.8 }} \n");
44  fprintf(f,"geometry IndexedFaceSet { \n coord Coordinate { point [ \n");
45  for(i=0;i<modgeominfo->nnodb;i++){
46  fprintf(f," %f %f %f \n",(double)geometry->nodes[i].x,(double)geometry->nodes[i].y,(double)geometry->nodes[i].z);
47  }
48  fprintf(f,"] } coordIndex [ \n");
49  for(i=0;i<modgeominfo->nelmb;i++){
50  in1 = geometry->elements[i].idx[0];
51  in2 = geometry->elements[i].idx[1];
52  in3 = geometry->elements[i].idx[2];
53  in4 = geometry->elements[i].idx[3];
54  fprintf(f,"%d %d %d %d %d -1\n",in1,in2,in3,in4,in1);
55  }
56  fprintf(f," ] } } ] }\n");
57  fclose(f);
58 
59  get_filename(fname,"%s-controls.wrl",rundetails->title); // Domain Boundary
60  f = fopen(fname,"w");
61  fprintf(f,"#VRML V2.0 utf8 \n");
62  fprintf(f,"Transform { \n translation 0.0 0.0 0.0 \n children[ \n Shape { \n");
63  fprintf(f,"appearance Appearance{ \n material Material{ \n diffuseColor 1.0 1.0 0.0 \n");
64  fprintf(f,"emissiveColor 1.0 1.0 0.0 \n shininess 0.8 }} \n");
65  fprintf(f,"geometry PointSet { \n coord Coordinate { point [ \n");
66  for(i=0;i<modgeominfo->ncntr;i++){
67  fprintf(f," %f %f %f \n",(double)geometry->cntr[i].x,(double)geometry->cntr[i].y,(double)geometry->cntr[i].z);
68  }
69  /*fprintf(f,"] } normal Normal { vector [ \n");
70  for(i=0;i<modgeominfo->nelmb;i++){
71  fprintf(f,"%f %f %f \n",geometry->elements[i].n.x,geometry->elements[i].n.y,geometry->elements[i].n.z);
72  }*/
73  fprintf(f,"] } \n");
74  fprintf(f,"} } ] }\n");
75  fclose(f);
76 
77  if(0 != modgeominfo->nchief){
78  get_filename(fname,"%s-chief.wrl",rundetails->title); // Domain Boundary
79  f = fopen(fname,"w");
80  fprintf(f,"#VRML V2.0 utf8 \n");
81  fprintf(f,"Transform { \n translation 0.0 0.0 0.0 \n children[ \n Shape { \n");
82  fprintf(f,"appearance Appearance{ \n material Material{ \n diffuseColor 0.7 0.7 0.7 \n");
83  fprintf(f,"emissiveColor 0.7 0.7 0.7 \n shininess 0.8 }} \n");
84  fprintf(f,"geometry PointSet { \n coord Coordinate { point [ \n");
85  for(i=0;i<modgeominfo->nchief;i++){
86  fprintf(f," %f %f %f \n",(double)geometry->chief[i].x,(double)geometry->chief[i].y,(double)geometry->chief[i].z);
87  }
88  fprintf(f,"] } \n");
89  fprintf(f,"} } ] }\n");
90  fclose(f);
91  }
92  if(0 != modgeominfo->nmics){
93  get_filename(fname,"%s-mics.wrl",rundetails->title); // Domain Boundary
94  f = fopen(fname,"w");
95  fprintf(f,"#VRML V2.0 utf8 \n");
96  fprintf(f,"Transform { \n translation 0.0 0.0 0.0 \n children[ \n Shape { \n");
97  fprintf(f,"appearance Appearance{ \n material Material{ \n diffuseColor 0.0 0.1 0.1 \n");
98  fprintf(f,"emissiveColor 0.0 0.1 0.1 \n shininess 0.8 }} \n");
99  fprintf(f,"geometry PointSet { \n coord Coordinate { point [ \n");
100  for(i=0;i<modgeominfo->nmics;i++){
101  fprintf(f," %f %f %f \n",(double)geometry->mics[i].x,(double)geometry->mics[i].y,(double)geometry->mics[i].z);
102  }
103  fprintf(f,"] } \n");
104  fprintf(f,"} } ] }\n");
105  fclose(f);
106  }
107 
108 
109  logger(LOG_DEBUG,"VRML files produced\n");
110 }
const char * title
Definition: structs.h:135
int ncntr
Definition: structs.h:299
void get_filename(char *filename, const char *format,...)
Definition: utils.c:59
int nchief
Definition: structs.h:301
int nelmb
Definition: structs.h:295
int nnodb
Definition: structs.h:293
int nmics
Definition: structs.h:304
#define LOG_DEBUG
Definition: logger.h:27
int rank
Definition: globals.h:79
struct run_details * rundetails
Definition: globals.h:36
Geometry info structure.
Definition: structs.h:161
#define MAX_PATH
Definition: constants.h:29
void logger(int level, char *msg,...)
Definition: logger.c:56
struct modgeom_info * modgeominfo
Definition: globals.h:38