Peka2D_v5  v5.0
loadData.h
Go to the documentation of this file.
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4 #include <math.h>
5 #include <omp.h>
6 
7 #include <time.h>
8 
9 #ifdef _WIN32
10  #include <sys/types.h>
11  #include <assert.h>
12 #endif
13 
14 #include "define.h"
15 #include "structs.h"
16 #include "mesh.h"
17 
18 #if SET_SIMGPU
19  #include "writeInOut.cuh"
20 #else
21  #include "writeInOut.h"
22 #endif
23 
24 #ifndef hy_mesh_
25 #define hy_mesh_
26 
27 #define STR_SIZE 1024
28 
29 // BOUNDARY CONDITIONS
30 #define HYD_N_OBT 20
31 #define HYD_N_OBC_TYPES 12
32 
33 //Boundary labels
34 #define HYD_CLOSED 0
35 
36 #define HYD_INFLOW_Q 1
37 #define HYD_INFLOW_HZ 2
38 #define HYD_INFLOW_QHZ 3
39 
40 #define HYD_OUTFLOW_GAUGE 11
41 #define HYD_OUTFLOW_HZ 12
42 #define HYD_OUTFLOW_FREE 13
43 #define HYD_OUTFLOW_FR 14
44 #define HYD_OUTFLOW_NORMAL 15
45 
46 
47 typedef struct Peka2D_Setup_ Peka2D_Setup;
48 typedef struct Peka2D_Run_ Peka2D_Run;
50 typedef struct Peka2D_OBCWalls_ Peka2D_OBCWalls;
52 typedef struct Peka2D_Solute_ Peka2D_Solute;
53 
54 
55 struct Peka2D_Run_{
56  int release; // Release number
57 
58  //components
59  int rain; // 1 if there is rain
60  int sediment; // 1 if there is sediment
61  int weirs;
62  int sources;
63  int dambreach;
64  int wind;
65  int solutes;
67  //controls
68  int writeMass;
69  int extremes;
70  int crossSection; // 1 if there are cross sections
71  int profile; // 1 if there are profiles
72  int obs; // 1 to print out probes
73 
74  int nIterOut;
75  double CFL;
76  double dtDump; // Should not be used by PEKA
77  double dtOut; // Output times
78  double tLimit; // Max Simulation time
79  double tInitial; // Initial Simulation time
80 
81  int iniType;
82  double initialWSE;
83  int hotStart;
84  int indexHS;
85 
86  double XnMan; // Manning's n multiplier
87  double hMin; // Minimum depth for computations
88 
89  int ncores;
90  int gdevice;
91 
92  char hsfile[STR_SIZE];
93 
94  int itrash;
95  double dtrash;
96 
97 };
98 
100  int n; // Nnode
103  int *type;
104  int *obcId;
105 };
106 
108  int *wall;
109  int n;
110 };
111 
113  char name[STR_SIZE];
114  int typeDiff;
115  double k_xx,k_yy;
116  double maxConc;
117 };
118 
120  int nSolutes;
124 };
125 
132 };
133 
134 
136 
141  t_parameters *spar,
142  t_mesh *mesh,
143  t_message *msg);
144 /*----------------------------*/
145 
147 
153  char *filename,
155  t_message *msg);
156 /*----------------------------*/
157 
159 
165  t_parameters *spar,
166  t_mesh *mesh,
167  t_message *msg);
168 /*----------------------------*/
169 
171 
177  t_parameters *spar,
178  t_mesh *mesh,
179  t_message *msg);
180 /*----------------------------*/
181 
183 
187 int IsMeshAllocated(
188  t_mesh *mesh,
189  t_message *e);
190 /*----------------------------*/
191 
193 
198 int readMeshFile(
199  char *filename,
201  t_mesh *mesh,
202  t_message *e);
203 /*----------------------------*/
204 
206 
210 int setInitialState(
213  t_mesh *mesh,
214  t_message *e);
215 /*----------------------------*/
216 
218 
223  t_parameters *spar,
224  t_mesh *mesh,
225  t_message *e);
226 /*----------------------------*/
227 
229 
234  char *filename,
235  int nnodes,
236  Peka2D_NodeBoundary *nbc,
237  t_message *e);
238 /*----------------------------*/
239 
241 
247 int createOpenBounds(
248  Peka2D_NodeBoundary *nbc,
249  Peka2D_OBCWalls *IOBC,
250  Peka2D_OBCWalls *OOBC,
251  t_parameters *spar,
252  t_mesh *mesh,
253  t_message *e);
254 /*----------------------------*/
255 
257 
262  char *filename,
263  Peka2D_NodeBoundary *nbc,
264  Peka2D_OBCWalls *IOBC,
265  Peka2D_OBCWalls *OOBC,
266  t_parameters *spar,
267  t_mesh *mesh,
268  t_message *e);
269 /*----------------------------*/
270 
271 
272 #if SET_SOLUTE
276  t_parameters *spar,
277  t_mesh *mesh,
278  t_message *msg);
279 /*----------------------------*/
280 
282 int readSoluteFile(
283  char *filename,
284  Peka2D_SoluteGroup *soluteGroup,
285  t_message *e);
286 /*----------------------------*/
287 
290  Peka2D_SoluteGroup *soluteGroup,
291  t_parameters *spar,
292  t_mesh *mesh,
293  t_message *e);
294 /*----------------------------*/
295 
298  Peka2D_SoluteGroup *soluteGroup,
300  t_mesh *mesh,
301  t_message *e);
302 /*----------------------------*/
303 #endif
304 
305 
306 #endif //end #ifndef hy_mesh_
#define EXPORT_DLL
Definition: define.h:80
int readSoluteFile(char *filename, Peka2D_SoluteGroup *soluteGroup, t_message *e)
Definition: loadData.cpp:1347
int createOpenBounds(Peka2D_NodeBoundary *nbc, Peka2D_OBCWalls *IOBC, Peka2D_OBCWalls *OOBC, t_parameters *spar, t_mesh *mesh, t_message *e)
This function creates the inlet/outlet structure of the open boundaries.
Definition: loadData.cpp:936
EXPORT_DLL int readControlDataFile(char *filename, Peka2D_Setup *pksetup, t_message *msg)
This function reads control parameters from file .DAT.
Definition: loadData.cpp:30
int readMeshFile(char *filename, Peka2D_Setup *pksetup, t_mesh *mesh, t_message *e)
This function reads the mesh data from file and stores it in variable mesh.
Definition: loadData.cpp:448
#define STR_SIZE
Definition: loadData.h:27
EXPORT_DLL int loadMeshData(Peka2D_Setup *pksetup, t_parameters *spar, t_mesh *mesh, t_message *msg)
This function creates the mesh data structure into variable mesh.
Definition: loadData.cpp:228
EXPORT_DLL int loadControlParameters(Peka2D_Setup *pksetup, t_parameters *spar, t_mesh *mesh, t_message *msg)
This function loads control parameters.
Definition: loadData.cpp:4
int readOpenBoundaryNodes(char *filename, int nnodes, Peka2D_NodeBoundary *nbc, t_message *e)
This function reads the number of open boundary nodes.
Definition: loadData.cpp:830
int setInitialState(Peka2D_Setup *pksetup, t_parameters *spar, t_mesh *mesh, t_message *e)
This function initializes all the computational variables (water depth, water discharge,...
Definition: loadData.cpp:556
int setInitialSoluteState(Peka2D_SoluteGroup *soluteGroup, t_parameters *spar, t_mesh *mesh, t_message *e)
Definition: loadData.cpp:1481
int IsMeshAllocated(t_mesh *mesh, t_message *e)
This function checks if the mesh is properly allocated.
Definition: loadData.cpp:386
int createSoluteStructures(Peka2D_SoluteGroup *soluteGroup, t_parameters *spar, t_mesh *mesh, t_message *e)
Definition: loadData.cpp:1426
EXPORT_DLL int loadSoluteData(Peka2D_Setup *pksetup, t_parameters *spar, t_mesh *mesh, t_message *msg)
Definition: loadData.cpp:1296
EXPORT_DLL int setControlParameters(Peka2D_Setup *pksetup, t_parameters *spar, t_mesh *mesh, t_message *msg)
This function passes the simulation execution paramenters from pksetup to spar.
Definition: loadData.cpp:190
int loadBoundaryConditions(Peka2D_Setup *pksetup, t_parameters *spar, t_mesh *mesh, t_message *e)
This function loads the general setting of the boundary conditions.
Definition: loadData.cpp:631
int readOpenBoundaryFile(char *filename, Peka2D_NodeBoundary *nbc, Peka2D_OBCWalls *IOBC, Peka2D_OBCWalls *OOBC, t_parameters *spar, t_mesh *mesh, t_message *e)
This function reads the data of the inlet and outlet open boundaries (hydrographs) from external file...
Definition: loadData.cpp:1078
t_message * msg
Definition: peka2d.cpp:41
t_mesh * mesh
Definition: peka2d.cpp:42
t_parameters spar
Definition: peka2d.cpp:40
Peka2D_Setup * pksetup
Definition: peka2d.cpp:38
Definition: loadData.h:99
int countInlet
Definition: loadData.h:101
int * obcId
Definition: loadData.h:104
int * type
Definition: loadData.h:103
int n
Definition: loadData.h:100
int countOutlet
Definition: loadData.h:102
Definition: loadData.h:107
int n
Definition: loadData.h:109
int * wall
Definition: loadData.h:108
Definition: loadData.h:55
double dtDump
Definition: loadData.h:76
double hMin
Definition: loadData.h:87
int dambreach
Definition: loadData.h:63
int writeMass
Definition: loadData.h:68
double dtOut
Definition: loadData.h:77
int obs
Definition: loadData.h:72
double CFL
Definition: loadData.h:75
double dtrash
Definition: loadData.h:95
double tLimit
Definition: loadData.h:78
int sources
Definition: loadData.h:62
int nIterOut
Definition: loadData.h:74
int iniType
Definition: loadData.h:81
int release
Definition: loadData.h:56
double initialWSE
Definition: loadData.h:82
int wind
Definition: loadData.h:64
int ncores
Definition: loadData.h:89
int rain
Definition: loadData.h:59
int sediment
Definition: loadData.h:60
char hsfile[STR_SIZE]
Definition: loadData.h:92
int crossSection
Definition: loadData.h:70
double tInitial
Definition: loadData.h:79
int profile
Definition: loadData.h:71
int gdevice
Definition: loadData.h:90
int indexHS
Definition: loadData.h:84
int hotStart
Definition: loadData.h:83
int weirs
Definition: loadData.h:61
double XnMan
Definition: loadData.h:86
int extremes
Definition: loadData.h:69
int solutes
Definition: loadData.h:65
int itrash
Definition: loadData.h:94
Definition: loadData.h:126
Peka2D_SoluteGroup * soluteGroup
Definition: loadData.h:131
Peka2D_OBCWalls * IOBC
Definition: loadData.h:129
Peka2D_NodeBoundary * pknode
Definition: loadData.h:128
Peka2D_Run pkrun
Definition: loadData.h:127
Peka2D_OBCWalls * OOBC
Definition: loadData.h:130
Definition: loadData.h:119
char initialFile[STR_SIZE]
Definition: loadData.h:122
int nSolutes
Definition: loadData.h:120
Peka2D_Solute * solute
Definition: loadData.h:123
int flagDiffussion
Definition: loadData.h:121
Definition: loadData.h:112
char name[STR_SIZE]
Definition: loadData.h:113
double k_xx
Definition: loadData.h:115
int typeDiff
Definition: loadData.h:114
double maxConc
Definition: loadData.h:116
double k_yy
Definition: loadData.h:115
Geometrical mesh and flow data.
Definition: structs.h:82
Compilation and execution messages.
Definition: structs.h:41
Simulation execution paramenters.
Definition: structs.h:61