BG_Flood  0.8
Documentation (Work-in-progress)
Halo.h
Go to the documentation of this file.
1 
2 #ifndef HALO_H
3 #define HALO_H
4 
5 #include "General.h"
6 #include "Param.h"
7 #include "Write_txtlog.h"
8 #include "Util_CPU.h"
9 #include "Arrays.h"
10 #include "Mesh.h"
11 #include "MemManagement.h"
12 #include "Boundary.h"
13 #include "ConserveElevation.h"
14 
15 template <class T> void fillHaloC(Param XParam, BlockP<T> XBlock, T* z);
16 template <class T> void fillHaloF(Param XParam, bool doProlongation, BlockP<T> XBlock, T* z);
17 template <class T> void fillHaloGPU(Param XParam, BlockP<T> XBlock, cudaStream_t stream, T* z);
18 template <class T> void fillHaloGPUnew(Param XParam, BlockP<T> XBlock, cudaStream_t stream, T* z);
19 template <class T> void fillHaloGPU(Param XParam, BlockP<T> XBlock, T* z);
20 
21 template <class T> void fillHalo(Param XParam, BlockP<T> XBlock, EvolvingP<T> Xev,T*zb);
22 template <class T> void fillHalo(Param XParam, BlockP<T> XBlock, EvolvingP<T> Xev);
23 template <class T> void fillHaloGPU(Param XParam, BlockP<T> XBlock, EvolvingP<T> Xev);
24 template <class T> void fillHaloGPU(Param XParam, BlockP<T> XBlock, EvolvingP<T> Xev, T* zb);
25 
26 template <class T> void fillHalo(Param XParam, BlockP<T> XBlock, GradientsP<T> Grad);
27 template <class T> void fillHaloGPU(Param XParam, BlockP<T> XBlock, GradientsP<T> Grad);
28 
29 template <class T> void fillHalo(Param XParam, BlockP<T> XBlock, FluxP<T> Flux);
30 template <class T> void fillHaloGPU(Param XParam, BlockP<T> XBlock, FluxP<T> Flux);
31 
32 template <class T> void fillHaloTopRightC(Param XParam, BlockP<T> XBlock, T* z);
33 template <class T> void fillHaloTopRightGPU(Param XParam, bool doprolong, BlockP<T> XBlock, cudaStream_t stream, T* z);
34 
35 template <class T> void bndmaskGPU(Param XParam, BlockP<T> XBlock, EvolvingP<T> Xev, FluxP<T> Flux);
36 
37 template <class T> void fillLeft(Param XParam, int ib, BlockP<T> XBlock, T*& z);
38 template <class T> void fillRight(Param XParam, int ib, BlockP<T> XBlock, T*& z);
39 template <class T> void fillBot(Param XParam, int ib, BlockP<T> XBlock, T*& z);
40 template <class T> void fillTop(Param XParam, int ib, BlockP<T> XBlock, T*& z);
41 
42 template <class T> void fillTopFlux(Param XParam, bool doProlongation, int ib, BlockP<T> XBlock, T*& z);
43 template <class T> void fillRightFlux(Param XParam, bool doProlongation, int ib, BlockP<T> XBlock, T*& z);
44 
45 template <class T> void fillCorners(Param XParam, int ib, BlockP<T> XBlock, T*& z);
46 
47 template <class T> void fillCorners(Param XParam, BlockP<T> XBlock, T*& z);
48 template <class T> void fillCorners(Param XParam, BlockP<T> XBlock, EvolvingP<T>& Xev);
49 
50 template <class T> void RecalculateZs(Param XParam, BlockP<T> XBlock, EvolvingP<T> Xev, T* zb);
51 template <class T> __global__ void RecalculateZsGPU(Param XParam, BlockP<T> XBlock, EvolvingP<T> Xev, T* zb);
52 
53 template <class T> void Recalculatehh(Param XParam, BlockP<T> XBlock, EvolvingP<T> Xev, T* zb);
54 
55 template <class T> void refine_linear(Param XParam, BlockP<T> XBlock, T* z, T* dzdx, T* dzdy);
56 template <class T> void refine_linearGPU(Param XParam, BlockP<T> XBlock, T* z, T* dzdx, T* dzdy);
57 
58 template <class T> void refine_linear_Left(Param XParam, int ib, BlockP<T> XBlock, T* z, T* dzdx, T* dzdy);
59 template <class T> void refine_linear_Top(Param XParam, int ib, BlockP<T> XBlock, T* z, T* dzdy);
60 template <class T> void refine_linear_Bot(Param XParam, int ib, BlockP<T> XBlock, T* z, T* dzdy);
61 template <class T> void refine_linear_Right(Param XParam, int ib, BlockP<T> XBlock, T* z, T* dzdx);
62 
63 // GPU versions
64 template <class T> __global__ void fillLeft(int halowidth, int* active, int* level, int* leftbot, int* lefttop, int* rightbot, int* botright, int* topright, T* a);
65 template <class T> __global__ void fillRight(int halowidth, int* active, int* level, int* rightbot, int* righttop, int* leftbot, int* botleft, int* topleft, T* a);
66 template <class T> __global__ void fillBot(int halowidth, int* active, int* level, int* botleft, int* botright, int* topleft, int* lefttop, int* righttop, T* a);
67 template <class T> __global__ void fillTop(int halowidth, int* active, int* level, int* topleft, int* topright, int* botleft, int* leftbot, int* rightbot, T* a);
68 
69 template <class T> __global__ void fillLeftnew(int halowidth, int nblk, int* active, int* level, int* leftbot, int* lefttop, int* rightbot, int* botright, int* topright, T* a);
70 template <class T> __global__ void fillRightnew(int halowidth, int nblk, int* active, int* level, int* rightbot, int* righttop, int* leftbot, int* botleft, int* topleft, T* a);
71 template <class T> __global__ void fillBotnew(int halowidth, int nblk, int* active, int* level, int* botleft, int* botright, int* topleft, int* lefttop, int* righttop, T* a);
72 template <class T> __global__ void fillTopnew(int halowidth, int nblk, int* active, int* level, int* topleft, int* topright, int* botleft, int* leftbot, int* rightbot, T* a);
73 
74 template <class T> __global__ void fillTopFlux(int halowidth, bool doProlongation, int* active, int* level, int* topleft, int* topright, int* botleft, int* leftbot, int* rightbot, T* a);
75 template <class T> __global__ void fillRightFlux(int halowidth, bool doProlongation, int* active, int* level, int* rightbot, int* righttop, int* leftbot, int* botleft, int* topleft, T* a);
76 
77 
78 template <class T> __global__ void HaloFluxGPULR(Param XParam, BlockP<T> XBlock, T* z);
79 template <class T> __global__ void HaloFluxGPUBT(Param XParam, BlockP<T> XBlock, T* z);
80 
81 template <class T> __global__ void HaloFluxGPULRnew(Param XParam, BlockP<T> XBlock, T* z);
82 template <class T> __global__ void HaloFluxGPUBTnew(Param XParam, BlockP<T> XBlock, T* z);
83 
84 template <class T> __global__ void fillCornersGPU(Param XParam, BlockP<T> XBlock, T* z);
85 
86 
87 // End of global definition
88 #endif
void refine_linearGPU(Param XParam, BlockP< T > XBlock, T *z, T *dzdx, T *dzdy)
Definition: Halo.cu:1093
void refine_linear_Right(Param XParam, int ib, BlockP< T > XBlock, T *z, T *dzdx)
__global__ void HaloFluxGPUBT(Param XParam, BlockP< T > XBlock, T *z)
Definition: Halo.cu:1502
void fillRight(Param XParam, int ib, BlockP< T > XBlock, T *&z)
Definition: Halo.cu:2408
void fillHaloGPUnew(Param XParam, BlockP< T > XBlock, cudaStream_t stream, T *z)
Definition: Halo.cu:263
void fillHaloGPU(Param XParam, BlockP< T > XBlock, cudaStream_t stream, T *z)
Wrapping function for calculating halos for each block of a single variable on GPU.
Definition: Halo.cu:210
void fillRightFlux(Param XParam, bool doProlongation, int ib, BlockP< T > XBlock, T *&z)
Definition: Halo.cu:2969
__global__ void fillBotnew(int halowidth, int nblk, int *active, int *level, int *botleft, int *botright, int *topleft, int *lefttop, int *righttop, T *a)
Definition: Halo.cu:3586
void fillHalo(Param XParam, BlockP< T > XBlock, EvolvingP< T > Xev, T *zb)
Definition: Halo.cu:465
void refine_linear_Bot(Param XParam, int ib, BlockP< T > XBlock, T *z, T *dzdy)
__global__ void HaloFluxGPUBTnew(Param XParam, BlockP< T > XBlock, T *z)
Definition: Halo.cu:1601
__global__ void RecalculateZsGPU(Param XParam, BlockP< T > XBlock, EvolvingP< T > Xev, T *zb)
Definition: Halo.cu:150
void refine_linear_Left(Param XParam, int ib, BlockP< T > XBlock, T *z, T *dzdx, T *dzdy)
Definition: Halo.cu:835
void fillBot(Param XParam, int ib, BlockP< T > XBlock, T *&z)
Definition: Halo.cu:3218
__global__ void fillTopnew(int halowidth, int nblk, int *active, int *level, int *topleft, int *topright, int *botleft, int *leftbot, int *rightbot, T *a)
Definition: Halo.cu:4252
__global__ void HaloFluxGPULR(Param XParam, BlockP< T > XBlock, T *z)
Definition: Halo.cu:1200
__global__ void HaloFluxGPULRnew(Param XParam, BlockP< T > XBlock, T *z)
Definition: Halo.cu:1304
void fillHaloF(Param XParam, bool doProlongation, BlockP< T > XBlock, T *z)
Wrapping function for calculating flux in the halos for a block and a single variable on CPU.
Definition: Halo.cu:186
void fillTopFlux(Param XParam, bool doProlongation, int ib, BlockP< T > XBlock, T *&z)
Definition: Halo.cu:4423
__global__ void fillCornersGPU(Param XParam, BlockP< T > XBlock, T *z)
Definition: Halo.cu:4830
void Recalculatehh(Param XParam, BlockP< T > XBlock, EvolvingP< T > Xev, T *zb)
Definition: Halo.cu:98
void fillHaloTopRightGPU(Param XParam, bool doprolong, BlockP< T > XBlock, cudaStream_t stream, T *z)
void refine_linear(Param XParam, BlockP< T > XBlock, T *z, T *dzdx, T *dzdy)
Definition: Halo.cu:1079
void fillCorners(Param XParam, int ib, BlockP< T > XBlock, T *&z)
Definition: Halo.cu:4694
void fillHaloC(Param XParam, BlockP< T > XBlock, T *z)
Wrapping function for calculating halos for each block of a single variable on CPU.
Definition: Halo.cu:36
__global__ void fillRightnew(int halowidth, int nblk, int *active, int *level, int *rightbot, int *righttop, int *leftbot, int *botleft, int *topleft, T *a)
Definition: Halo.cu:2789
void refine_linear_Top(Param XParam, int ib, BlockP< T > XBlock, T *z, T *dzdy)
void fillLeft(Param XParam, int ib, BlockP< T > XBlock, T *&z)
Definition: Halo.cu:1708
void bndmaskGPU(Param XParam, BlockP< T > XBlock, EvolvingP< T > Xev, FluxP< T > Flux)
Definition: Halo.cu:763
void fillHaloTopRightC(Param XParam, BlockP< T > XBlock, T *z)
Wrapping function for calculating flux for halos for each block of a single variable on GPU.
Definition: Halo.cu:300
__global__ void fillLeftnew(int halowidth, int nblk, int *active, int *level, int *leftbot, int *lefttop, int *rightbot, int *botright, int *topright, T *a)
Definition: Halo.cu:2095
void fillTop(Param XParam, int ib, BlockP< T > XBlock, T *&z)
Definition: Halo.cu:3883
void RecalculateZs(Param XParam, BlockP< T > XBlock, EvolvingP< T > Xev, T *zb)
Recalculate water surface after recalculating the values on the halo on the CPU.
Definition: Halo.cu:59
Definition: Param.h:10
Definition: Arrays.h:153
Definition: Arrays.h:43
Definition: Arrays.h:68
Definition: Arrays.h:11