AcouSTO  version 2.0

◆ georeader()

georeader ( )

Main Geometry function, reads data, builds geometry

64  {
65 
66  int nvrtp,nreal,nintt;
67 #ifdef _ACOUSTO_DEBUG
68  FILE *f;
69  char fname[20];
70 #endif
71 
72  geometry = malloc(sizeof(struct geometry_struct)); // allocating structure
73 
74  runinfo->ndim = 3; /* built-in */
75  nvrtp = 4; // this version works for quadrangular panels
76 
77  modgeominfo->nvelb = modgeominfo->nelmb*nvrtp; // number of vertices
78 
79  allocgeom(); // allocation
80  geometry->ncntrs = modgeominfo->ncntr; // number of control points
81 
82  // calculating allocation size
83  nreal=runinfo->ndim*(modgeominfo->nnodb+
89 
91 
92 
93  // Geometry is read only on master node and sent to every other node
94  if(0 == rank ){
95  if(1 != build_geoms()){
98  }
99  if(1 != read_arrays()){
101  return ACOUSTO_ERROR_GEOMETRY;
102  }
103  }
104  logger(LOG_DEBUG," Total n.of nodes = %d\n",modgeominfo->nnodb);
105  logger(LOG_DEBUG," Total n.of elements = %d\n",modgeominfo->nelmb);
106  logger(LOG_DEBUG," Total n.of control points = %d\n",modgeominfo->ncntr);
107 
108  // Broadcasting geometry
109  logger(LOG_DEBUG," Broadcasting geometry...\n");
110  MPI_Bcast(geometry->nodes ,modgeominfo->nnodb ,mpi_vector_type ,0,MPI_COMM_WORLD);
111  MPI_Bcast(geometry->jnodb ,modgeominfo->nvelb ,MPI_INT ,0,MPI_COMM_WORLD);
112  MPI_Bcast(geometry->jphib ,modgeominfo->nelmb ,MPI_INT ,0,MPI_COMM_WORLD);
113  MPI_Bcast(geometry->jpsib ,modgeominfo->nelmb ,MPI_INT ,0,MPI_COMM_WORLD);
114  MPI_Bcast(geometry->mvrtb ,modgeominfo->nelmb ,MPI_INT ,0,MPI_COMM_WORLD);
115  MPI_Bcast(geometry->kcreb ,modgeominfo->nelmb ,MPI_INT ,0,MPI_COMM_WORLD);
116  MPI_Bcast(geometry->kelmb ,modgeominfo->nelmb ,MPI_INT ,0,MPI_COMM_WORLD);
117  MPI_Bcast(geometry->mics ,modgeominfo->nmics ,mpi_vector_type ,0,MPI_COMM_WORLD);
118  if(modgeominfo->nchief > 0) MPI_Bcast(geometry->chief ,modgeominfo->nchief,mpi_vector_type ,0,MPI_COMM_WORLD);
119  MPI_Bcast(geometry->cntrc ,modgeominfo->ncntr+
120  modgeominfo->nchief,mpi_vector_type ,0,MPI_COMM_WORLD);
121  MPI_Bcast(geometry->cntr ,modgeominfo->ncntr ,mpi_vector_type ,0,MPI_COMM_WORLD);
122  MPI_Bcast(geometry->elements ,modgeominfo->nelmb ,mpi_element_type ,0,MPI_COMM_WORLD);
123  if(modgeominfo->nemics > 0) MPI_Bcast(geometry->jnodm ,4*modgeominfo->nemics ,MPI_INT ,0,MPI_COMM_WORLD);
124  if(modgeominfo->nemics > 0) MPI_Bcast(geometry->kelmm ,modgeominfo->nemics ,MPI_INT ,0,MPI_COMM_WORLD);
125  logger(LOG_DEBUG," Broadcasting geometry done\n");
126 
127  return 1;
128 
129 }
int allocgeom()
Definition: geom.c:40
struct run_info * runinfo
Definition: globals.h:34
int ncntr
Definition: structs.h:299
int nemics
Definition: structs.h:305
int nchief
Definition: structs.h:301
int nvelb
Definition: structs.h:297
int nelmb
Definition: structs.h:295
int nnodb
Definition: structs.h:293
#define LOG_ERROR
Definition: logger.h:24
MPI_Datatype mpi_vector_type
Definition: globals.h:97
#define ACOUSTO_ERROR_GEOMETRY
Definition: constants.h:25
int nmics
Definition: structs.h:304
int read_arrays()
Definition: geom_utils.c:72
#define LOG_DEBUG
Definition: logger.h:27
Geometry common variables.
Definition: structs.h:317
#define malloc(size)
Definition: allocation.h:38
MPI_Datatype mpi_element_type
Definition: globals.h:101
int rank
Definition: globals.h:79
#define MSG_GEOM_READ_ERROR
Definition: messages.h:37
Geometry info structure.
Definition: structs.h:161
void logger(int level, char *msg,...)
Definition: logger.c:56
int ndim
Definition: structs.h:100
struct modgeom_info * modgeominfo
Definition: globals.h:38
int build_geoms()
Definition: geom_utils.c:38