AcouSTO  version 2.0

◆ vtkout_unc()

void vtkout_unc ( )

Routine vtkout_unc(icounter,CFREQ). Produces the file 'runname-unormals.vtk', which can bee used to visualize the unit normal vectors on the boundary. Produces the file 'runname-body.raw', which can bee used to import the panels' set into Blender (or other modelers) to cross-check the geometry properties. Arguments: none; Data format is 'DATASET UNSTRUCTURED_GRID'.

34  {
35 
36  int i;
37  FILE *f;
38  char fname[MAX_PATH];
39  double xc,yc,zc;
40 
41  if (0 != rank) return;
42 
43  get_filename(fname,"%s-unormals.vtk",rundetails->title);
44  f = fopen(fname,"w");
45 
46  fprintf(f,"# vtk DataFile Version 2.0\n");
47  fprintf(f,"Unit Normal Vectors\n");
48  fprintf(f,"ASCII\n");
49 
50  fprintf(f,"DATASET UNSTRUCTURED_GRID\n");
51  fprintf(f,"POINTS %d float \n",modgeominfo->nelmb);
52  for(i=0;i<modgeominfo->nelmb;i++){
53  xc = 0.25*(geometry->elements[i].x[0].x+geometry->elements[i].x[1].x+geometry->elements[i].x[2].x+geometry->elements[i].x[3].x);
54  yc = 0.25*(geometry->elements[i].x[0].y+geometry->elements[i].x[1].y+geometry->elements[i].x[2].y+geometry->elements[i].x[3].y);
55  zc = 0.25*(geometry->elements[i].x[0].z+geometry->elements[i].x[1].z+geometry->elements[i].x[2].z+geometry->elements[i].x[3].z);
56  fprintf(f," %f %f %f \n",xc,yc,zc);
57  }
58  fprintf(f,"POINT_DATA %d\n", modgeominfo->nelmb);
59  fprintf(f,"VECTORS unit_normal float\n");
60  for(i=0;i<modgeominfo->nelmb;i++){
61  fprintf(f,"%f %f %f \n",(double)geometry->elements[i].n.x,(double)geometry->elements[i].n.y,(double)geometry->elements[i].n.z);
62  }
63 
64  fclose(f);
65 
66  // Raw data output for Blender import
67  get_filename(fname,"%s-body.raw",rundetails->title);
68  f = fopen(fname,"w");
69  for(i=0;i<modgeominfo->nelmb;i++){
70  fprintf(f," %f %f %f %f %f %f %f %f %f %f %f %f\n",(double)geometry->elements[i].x[0].x,
71  (double)geometry->elements[i].x[0].y,
72  (double)geometry->elements[i].x[0].z,
73  (double)geometry->elements[i].x[1].x,
74  (double)geometry->elements[i].x[1].y,
75  (double)geometry->elements[i].x[1].z,
76  (double)geometry->elements[i].x[2].x,
77  (double)geometry->elements[i].x[2].y,
78  (double)geometry->elements[i].x[2].z,
79  (double)geometry->elements[i].x[3].x,
80  (double)geometry->elements[i].x[3].y,
81  (double)geometry->elements[i].x[3].z);
82  }
83 
84  fclose(f);
85 
86 }
const char * title
Definition: structs.h:135
void get_filename(char *filename, const char *format,...)
Definition: utils.c:59
int nelmb
Definition: structs.h:295
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
struct modgeom_info * modgeominfo
Definition: globals.h:38