44#include <cuda_runtime.h>
45#include <device_launch_parameters.h>
64 struct infoForMatVecMul
66 std::vector<int> nClosePanels;
67 std::vector<int> nFarCells;
69 std::vector<int> closePrefixSum;
70 std::vector<int> farPrefixSum;
116 int offsetOfPointInElement;
120 Point2D* maxrD, * minrD;
125 int* mortonCodesKeyUnsortD;
126 int* mortonCodesKeyD;
128 int* mortonCodesIdxUnsortD;
129 int* mortonCodesIdxD;
139 Point4D* lowerupperD;
140 Point4D* gabForLeavesD;
146 void* sortObjectsBufferD;
147 int sortObjectsBufferSizeInBytes;
149 void* sortInternalCellsBufferD;
150 int sortInternalCellsBufferSizeInBytes;
153 int reservedMemorySizeItems;
155 infoForMatVecMul matVecMulInfo;
157 CudaTreeInfo(
int nBlock_,
tree_T treeType_,
object_T objectType_,
scheme_T schemeType_,
bool duplicateObj_);
160 void Update(
int nObject_,
double* objectD_,
double eps);
161 void UpdatePanelGeometry(
int nObject_, double4* gabForLeavesD_);
163 void UpdatePanelFreeVortexIntensity(
const double* dev_ptr_freeVortexSheet,
const double* dev_ptr_freeVortexSheetLin);
164 void UpdatePanelAttachedVortexIntensity(
const double* dev_ptr_attachedVortexSheet,
const double* dev_ptr_attachedVortexSheetLin);
165 void UpdatePanelAttachedSourceIntensity(
const double* dev_ptr_attachedSourceSheet,
const double* dev_ptr_attachedSourceSheetLin);
166 void UpdatePanelFreeAndAttachedVortexIntensity(
const double* dev_ptr_freeVortexSheet,
const double* dev_ptr_freeVortexSheetLin,
const double* dev_ptr_attachedVortexSheet,
const double* dev_ptr_attachedVortexSheetLin);
168 void MemoryAllocateForGMRES();
169 void MemoryFreeForGMRES();
171 void MemoryAllocate(
int nCudaObject);
173 bool IsInitialized()
const;
176 float UpwardTraversal(
int order);
178 float DownwardTraversalVorticesToPoints(CudaTreeInfo& cntrTree, Point2D* velD,
double* epsastD,
double eps2,
double theta,
int order,
bool calcRadius);
179 float DownwardTraversalVorticesToPanels(CudaTreeInfo& cntrTree,
double* rhsD,
double* rhsLinD,
double theta,
int order);
180 float DownwardTraversalPanelsToPoints(CudaTreeInfo& cntrTree, Point2D* velD,
double eps2,
double theta,
int order);
181 float DownwardTraversalGMRES(
double* resD,
double* resLinD,
double theta,
int order,
int iter);
183 float I1I2CalculationWrapper(
double minRd,
double* __restrict I1D, Point2D* __restrict I2D,
double* __restrict epsastD);
184 float I0I3CalculationWrapper(
double minRd,
float* __restrict I0D, Point2Df* __restrict I3D,
double* __restrict epsastD,
const double* __restrict meanEpsD,
int nPan,
double* __restrict panD,
double* __restrict visstrD);
185 void RadixSortMortonCodes(
int beginBit = 0,
int endBit = 2 *
codeLength);
186 void RadixSortInternalCells(
int beginBit = 0,
int endBit = 2 *
codeLength);
Описание констант и параметров для взаимодействия с графическим ускорителем
Заголовочный файл с описанием класса Vortex2D.