#include #include #include "GPUPOST.h" GPUPOST::GPUPOST() { params = new Params(); gMemory = new GPUmemory(); } GPUPOST::~GPUPOST() { delete params; delete gMemory; delete fileData; } void GPUPOST::initialize() { // checkMemUsed(); params->setFilname(); params->setParams(); params->printInfo(); params->setGPUId(); params->printGPUInfo(); gMemory->initGPUmemory(params); } void GPUPOST::runSimulation() { fileData = new FileData(params,gMemory); NeighborSearch neighborSearch(gMemory, params); SurfaceReconstruction surfaceReconstruction; if (params->mConfigParams.isSurface){ surfaceReconstruction.Init(gMemory, params, fileData); } DiffuseGeneration diffuseGeneration; if (params->mConfigParams.isDiffuse) { diffuseGeneration.Init(gMemory, params, fileData); } for (uint frameIndex = params->mConfigParams.frameStart; frameIndex <= params->mConfigParams.frameEnd; frameIndex += params->mConfigParams.frameStep) { // gMemory->Memreset(); float3 motion = {0,0,0}; // fileData->loadMotionFile(frameIndex, motion); fileData->loadFluidFile(frameIndex, motion); //fileData->loadMotionDatFile(frameIndex, motion); // fileData->loadFluidDatFile(frameIndex, motion); // checkMemUsed(); neighborSearch.SpatialGridBuilding(); if (params->mConfigParams.isSurface){ surfaceReconstruction.runsimulation(); } if (params->mConfigParams.isDiffuse){ diffuseGeneration.runsimulation(); } if(params->mConfigParams.isSurface){ gMemory->MethodYuMemFree(); gMemory->MCMemFree(); } if (params->mConfigParams.isDiffuse){ gMemory->DiffuseMemFree(); } gMemory->Memfree(); } if(params->mConfigParams.isSurface){ surfaceReconstruction.Destory(); } if(params->mConfigParams.isDiffuse){ diffuseGeneration.Destory(); } } void GPUPOST::finalize() { gMemory->finaGPUmemory(); }