1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
#include <strings.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include "Mesh.h"
/* prototypes for storage functions (Utils.c) */
double **BuildMatrix(int Nrows, int Ncols);
double *BuildVector(int Nrows);
int **BuildIntMatrix(int Nrows, int Ncols);
int *BuildIntVector(int Nrows);
double **DestroyMatrix(double **);
double *DestroyVector(double *);
int **DestroyIntMatrix(int **);
int *DestroyIntVector(int *);
void PrintMatrix(char *message, double **A, int Nrows, int Ncols);
void SaveMatrix(char *filename, double **A, int Nrows, int Ncols);
/* geometric/mesh functions */
Mesh *ReadMesh2d(char *filename);
Mesh *ReadMesh3d(char *filename);
void PrintMesh ( Mesh *mesh );
void Normals2d(Mesh *mesh, int k, double *nx, double *ny, double *sJ);
void Normals3d(Mesh *mesh, int k,
double *nx, double *ny, double *nz, double *sJ);
void GeometricFactors2d(Mesh *mesh, int k,
double *drdx, double *dsdx, double *drdy, double *dsdy,
double *J);
void GeometricFactors3d(Mesh *mesh, int k,
double *drdx, double *dsdx, double *dtdx,
double *drdy, double *dsdy, double *dtdy,
double *drdz, double *dsdz, double *dtdz,
double *J);
/* start up */
void StartUp2d(Mesh *mesh);
void StartUp3d(Mesh *mesh);
void BuildMaps2d(Mesh *mesh);
void BuildMaps3d(Mesh *mesh);
/* Parallel */
void LoadBalance2d(Mesh *mesh);
void LoadBalance3d(Mesh *mesh);
void FacePair2d(Mesh *mesh, int *maxNv);
void FacePair3d(Mesh *mesh, int *maxNv);
void ParallelPairs(void *objs, int Nmyobjs, int sizeobj,
int (*numget)(const void *),
void (*numset)(const void *, int ),
int (*procget)(const void *),
void (*marry)(const void *, const void *),
int (*compare_objs)(const void *, const void *));
void MaxwellsMPISend2d(Mesh *mesh);
void MaxwellsMPIRecv2d(Mesh *mesh, float *c_partQ);
void MaxwellsMPISend3d(Mesh *mesh);
void MaxwellsMPIRecv3d(Mesh *mesh, float *c_partQ);
/* GPU functions */
void gpu_set_data2d(int K,
double *d_Hx, double *d_Hy, double *d_Ez);
void gpu_set_data3d(int K,
double *d_Hx, double *d_Hy, double *d_Hz,
double *d_Ex, double *d_Ey, double *d_Ez);
void gpu_get_data2d(int K,
double *d_Hx, double *d_Hy, double *d_Ez);
void gpu_get_data3d(int K,
double *d_Hx, double *d_Hy, double *d_Hz,
double *d_Ex, double *d_Ey, double *d_Ez);
double InitGPU2d(Mesh *mesh, int Nfields);
double InitGPU3d(Mesh *mesh, int Nfields);
/* CPU functions */
void cpu_set_data2d(Mesh *mesh, double *Hx, double *Hy, double *Ez);
void cpu_set_data3d(Mesh *mesh, double *Hx, double *Hy, double *Hz,
double *Ex, double *Ey, double *Ez);
double InitCPU2d(Mesh *mesh, int Nfields);
double InitCPU3d(Mesh *mesh, int Nfields);
/* Maxwells functions */
void MaxwellsKernel2d(Mesh *mesh, float frka, float frkb, float fdt);
void MaxwellsKernel3d(Mesh *mesh, float frka, float frkb, float fdt);
void MaxwellsRHS2d(Mesh *mesh, float frka, float frkb, float fdt);
void MaxwellsRHS3d(Mesh *mesh, float frka, float frkb, float fdt);
void MaxwellsRun2d(Mesh *mesh, double FinalTime, double dt);
void MaxwellsRun3d(Mesh *mesh, double FinalTime, double dt);
/* CUDA headers */
#ifdef CUDA
#include "cuda.h"
#include "cuda_runtime_api.h"
#endif
|