|
Vlasiator ebf0dd394 on dev (v5.4.0 + 1054 commits)
|
#include "../parameters.h"#include "../object_wrapper.h"#include <math.h>#include <iostream>#include <fstream>#include <iomanip>#include <iterator>#include <Eigen/Geometry>#include "common_pitch_angle_diffusion.hpp"#include "../arch/gpu_base.hpp"#include "../spatial_cells/block_adjust_gpu.hpp"
Go to the source code of this file.
Macros | |
| #define | GPUCELLMUSPACE(var, cellIdx, v_ind, mu_ind) |
Functions | |
| __global__ void | __launch_bounds__ (WID3) build2dArrayOfFvmu_kernel(size_t *dev_cellIdxArray |
| atomicAdd & | GPUCELLMUSPACE (dev_fmu, cellIdx, vi, mui), increment |
| atomicAdd & | GPUCELLMUSPACE (dev_fcount, cellIdx, vi, mui), 1 |
| dev_velocityBlockContainer[cellIdx] | getData ()[velocityIdx *WID3+k *WID2+j *WID+i] |
| __global__ void | computeDerivativesCFLDdt_kernel (size_t *dev_smallCellIdxArray, int *dev_fcount, Realf *dev_fmu, Real *dev_nu0Values, Realf *dev_dfdt_mu, int *dev_cellIdxKeys, Real *dev_potentialDdtValues, Realf *dev_sparsity, Real dVbins, const Real dmubins, const Real epsilon, Realf PADCFL, int nbins_v, int nbins_mu, int blocksPerSpatialCell, int lastBlockSize) |
| __global__ void | reduceDdtValues_kernel (int *dev_cellIdxKeys, Real *dev_potentialDdtValues, Real *dev_Ddt, int blocksPerSpatialCell) |
| __global__ void | __launch_bounds__ (Hashinator::defaults::MAX_BLOCKSIZE/2) dividefByCount_kernel(size_t *dev_smallCellIdxArray |
| if (idx >=maxThreadIndex) | |
| if (GPUCELLMUSPACE(dev_fcount, cellIdx, indv, indmu)==0||GPUCELLMUSPACE(dev_fmu, cellIdx, indv, indmu)<=0.0) | |
| if (totalBlockIndex >=(size_t) numberOfComputedVelocityBlocks) | |
| while (left<=right) | |
| for (uint velocityIdx=0;velocityIdx< numberOfVelocityCells;velocityIdx++) | |
| __syncthreads () | |
| for (int s=blockSize/2;s > 0;s > >=1) | |
| if (threadIndex==0) | |
| if (dev_densityPostAdjust[cellIdx]==0.0||dev_densityPreAdjust[cellIdx]==dev_densityPostAdjust[cellIdx]) | |
| void | pitchAngleDiffusion (dccrg::Dccrg< spatial_cell::SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid, const uint popID) |
| #define GPUCELLMUSPACE | ( | var, | |
| cellIdx, | |||
| v_ind, | |||
| mu_ind ) |
Definition at line 39 of file gpu_pitch_angle_diffusion.cpp.
| __global__ void __launch_bounds__ | ( | Hashinator::defaults::MAX_BLOCKSIZE/ | 2 | ) |
| __global__ void __launch_bounds__ | ( | WID3 | ) |
| __syncthreads | ( | ) |

| __global__ void computeDerivativesCFLDdt_kernel | ( | size_t * | dev_smallCellIdxArray, |
| int * | dev_fcount, | ||
| Realf * | dev_fmu, | ||
| Real * | dev_nu0Values, | ||
| Realf * | dev_dfdt_mu, | ||
| int * | dev_cellIdxKeys, | ||
| Real * | dev_potentialDdtValues, | ||
| Realf * | dev_sparsity, | ||
| Real | dVbins, | ||
| const Real | dmubins, | ||
| const Real | epsilon, | ||
| Realf | PADCFL, | ||
| int | nbins_v, | ||
| int | nbins_mu, | ||
| int | blocksPerSpatialCell, | ||
| int | lastBlockSize ) |
Definition at line 151 of file gpu_pitch_angle_diffusion.cpp.


| for | ( | int | s = blockSize / 2; s, |
| 0;s > > | = 1 ) |
Definition at line 405 of file gpu_pitch_angle_diffusion.cpp.

| for | ( | ) |
Definition at line 399 of file gpu_pitch_angle_diffusion.cpp.
| dev_velocityBlockContainer[cellIdx] getData | ( | ) |

| atomicAdd & GPUCELLMUSPACE | ( | dev_fcount | , |
| cellIdx | , | ||
| vi | , | ||
| mui | ) |
| if | ( | dev_densityPostAdjust | [cellIdx] = = 0.0 || dev_densityPreAdjust[cellIdx] == dev_densityPostAdjust[cellIdx] | ) |
Definition at line 429 of file gpu_pitch_angle_diffusion.cpp.
| if | ( | GPUCELLMUSPACE(dev_fcount, cellIdx, indv, indmu) | = = 0 || GPUCELLMUSPACE(dev_fmu,cellIdx,indv,indmu) <= 0.0 | ) |
Definition at line 340 of file gpu_pitch_angle_diffusion.cpp.
| if | ( | idx >= | maxThreadIndex | ) |
Definition at line 333 of file gpu_pitch_angle_diffusion.cpp.
| if | ( | threadIndex | = = 0 | ) |
Definition at line 413 of file gpu_pitch_angle_diffusion.cpp.
| if | ( | totalBlockIndex >=(size_t) | numberOfComputedVelocityBlocks | ) |
Definition at line 357 of file gpu_pitch_angle_diffusion.cpp.
| void pitchAngleDiffusion | ( | dccrg::Dccrg< spatial_cell::SpatialCell, dccrg::Cartesian_Geometry > & | mpiGrid, |
| const uint | popID ) |
Definition at line 440 of file gpu_pitch_angle_diffusion.cpp.

| __global__ void reduceDdtValues_kernel | ( | int * | dev_cellIdxKeys, |
| Real * | dev_potentialDdtValues, | ||
| Real * | dev_Ddt, | ||
| int | blocksPerSpatialCell ) |
Definition at line 279 of file gpu_pitch_angle_diffusion.cpp.


| while | ( | left<= | right | ) |
Definition at line 368 of file gpu_pitch_angle_diffusion.cpp.
| Realf adjustRatio = dev_densityPreAdjust[cellIdx]/dev_densityPostAdjust[cellIdx] |
Definition at line 431 of file gpu_pitch_angle_diffusion.cpp.
| const Real *__restrict__ blockParameters = dev_velocityBlockContainer[cellIdx]->getParameters(velocityIdx) |
Definition at line 65 of file gpu_pitch_angle_diffusion.cpp.
| const int blockSize = blockDim.x*blockDim.y*blockDim.z |
Definition at line 392 of file gpu_pitch_angle_diffusion.cpp.
| const int cellIdx = dev_cellIdxArray[totalBlockIndex] |
Definition at line 62 of file gpu_pitch_angle_diffusion.cpp.
| int cellIndex = 0 |
Definition at line 362 of file gpu_pitch_angle_diffusion.cpp.
| const Realf cellValue = dev_velocityBlockContainer[cellIdx]->getData()[velocityIdx*WID3+k*WID2+j*WID+i] |
Definition at line 84 of file gpu_pitch_angle_diffusion.cpp.
| __global__ void size_t size_t vmesh::VelocityBlockContainer *__restrict__ Real * dev_bulkVX |
Definition at line 45 of file gpu_pitch_angle_diffusion.cpp.
| __global__ void size_t size_t vmesh::VelocityBlockContainer *__restrict__ Real Real * dev_bulkVY |
Definition at line 46 of file gpu_pitch_angle_diffusion.cpp.
| __global__ void size_t size_t vmesh::VelocityBlockContainer *__restrict__ Real Real Real * dev_bulkVZ |
Definition at line 47 of file gpu_pitch_angle_diffusion.cpp.
| __global__ void size_t size_t vmesh::VelocityBlockContainer *__restrict__ Real Real Real Real * dev_bValues |
Definition at line 48 of file gpu_pitch_angle_diffusion.cpp.
| dev_cellIdxArray[totalBlockIndex] = cellIndex |
Definition at line 378 of file gpu_pitch_angle_diffusion.cpp.
| __global__ void size_t size_t* dev_cellIdxStartCutoff |
Definition at line 350 of file gpu_pitch_angle_diffusion.cpp.
| __global__ void size_t size_t vmesh::VelocityBlockContainer* __restrict__ Real Real Real Real Realf Real* dev_Ddt |
Definition at line 105 of file gpu_pitch_angle_diffusion.cpp.
| __global__ void Realf* dev_densityPostAdjust |
Definition at line 420 of file gpu_pitch_angle_diffusion.cpp.
| __global__ void size_t size_t vmesh::VelocityBlockContainer* __restrict__ Real Real Real Real Realf* dev_dfdt_mu |
Definition at line 104 of file gpu_pitch_angle_diffusion.cpp.
| __global__ void Realf int * dev_fcount |
Definition at line 50 of file gpu_pitch_angle_diffusion.cpp.
| __global__ void Realf * dev_fmu |
Definition at line 49 of file gpu_pitch_angle_diffusion.cpp.
| __global__ void size_t* dev_remappedCellIdxArray |
Definition at line 97 of file gpu_pitch_angle_diffusion.cpp.
| __global__ void Realf vmesh::VelocityBlockContainer *__restrict__ * dev_velocityBlockContainer |
Definition at line 44 of file gpu_pitch_angle_diffusion.cpp.
| __global__ void size_t * dev_velocityIdxArray = totalBlockIndex - dev_cellIdxStartCutoff[cellIndex] |
Definition at line 43 of file gpu_pitch_angle_diffusion.cpp.
| dfdt = 0.0 |
Definition at line 138 of file gpu_pitch_angle_diffusion.cpp.
| __global__ void size_t size_t vmesh::VelocityBlockContainer *__restrict__ Real Real Real Real Realf Real Real const Real dmubins |
Definition at line 52 of file gpu_pitch_angle_diffusion.cpp.
| __global__ void size_t size_t vmesh::VelocityBlockContainer *__restrict__ Real Real Real Real Realf Real Real dVbins |
Definition at line 51 of file gpu_pitch_angle_diffusion.cpp.
| else |
Definition at line 342 of file gpu_pitch_angle_diffusion.cpp.
| const int i = threadIdx.x |
Definition at line 59 of file gpu_pitch_angle_diffusion.cpp.
Definition at line 85 of file gpu_pitch_angle_diffusion.cpp.
Definition at line 336 of file gpu_pitch_angle_diffusion.cpp.
| int indv = idx%nbins_v |
Definition at line 335 of file gpu_pitch_angle_diffusion.cpp.
| const int j = threadIdx.y |
Definition at line 60 of file gpu_pitch_angle_diffusion.cpp.
| const int k = threadIdx.z |
Definition at line 61 of file gpu_pitch_angle_diffusion.cpp.
| int left = 0 |
Definition at line 360 of file gpu_pitch_angle_diffusion.cpp.
| const bool lessZero = (NewCellValue < 0.0) |
Definition at line 146 of file gpu_pitch_angle_diffusion.cpp.
| localDensity[threadIndex] = 0.0 |
Definition at line 394 of file gpu_pitch_angle_diffusion.cpp.
| __global__ void size_t size_t int int maxCellIndex |
Definition at line 352 of file gpu_pitch_angle_diffusion.cpp.
| __global__ void Realf int int int int maxThreadIndex |
Definition at line 328 of file gpu_pitch_angle_diffusion.cpp.
Definition at line 78 of file gpu_pitch_angle_diffusion.cpp.
Definition at line 87 of file gpu_pitch_angle_diffusion.cpp.
Definition at line 82 of file gpu_pitch_angle_diffusion.cpp.
| __global__ void Realf int int int nbins_mu |
Definition at line 54 of file gpu_pitch_angle_diffusion.cpp.
| __global__ void Realf int int nbins_v |
Definition at line 53 of file gpu_pitch_angle_diffusion.cpp.
| NewCellValue = (dev_velocityBlockContainer[cellIdx]->getData()[velocityIdx*WID3+k*WID2+j*WID+i]) + dfdt * dev_Ddt[cellIdx] |
Definition at line 145 of file gpu_pitch_angle_diffusion.cpp.
Definition at line 76 of file gpu_pitch_angle_diffusion.cpp.
| __global__ void size_t size_t int numberOfComputedVelocityBlocks |
Definition at line 351 of file gpu_pitch_angle_diffusion.cpp.
| const uint numberOfVelocityCells = dev_velocityBlockContainer[cellIdx]->size() |
Definition at line 397 of file gpu_pitch_angle_diffusion.cpp.
| int right = maxCellIndex - 1 |
Definition at line 361 of file gpu_pitch_angle_diffusion.cpp.
Definition at line 337 of file gpu_pitch_angle_diffusion.cpp.
Definition at line 390 of file gpu_pitch_angle_diffusion.cpp.
| size_t velocityIdx = dev_velocityIdxArray[totalBlockIndex] |
Definition at line 63 of file gpu_pitch_angle_diffusion.cpp.
Definition at line 88 of file gpu_pitch_angle_diffusion.cpp.
Definition at line 80 of file gpu_pitch_angle_diffusion.cpp.
Definition at line 81 of file gpu_pitch_angle_diffusion.cpp.
| const Real Vpara = VplasmaX*dev_bValues[3*cellIdx] + VplasmaY*dev_bValues[3*cellIdx+1] + VplasmaZ*dev_bValues[3*cellIdx+2] |
Definition at line 77 of file gpu_pitch_angle_diffusion.cpp.
| const Real VplasmaX = VX - dev_bulkVX[cellIdx] |
Definition at line 72 of file gpu_pitch_angle_diffusion.cpp.
| const Real VplasmaY = VY - dev_bulkVY[cellIdx] |
Definition at line 73 of file gpu_pitch_angle_diffusion.cpp.
| const Real VplasmaZ = VZ - dev_bulkVZ[cellIdx] |
Definition at line 74 of file gpu_pitch_angle_diffusion.cpp.
| const Real VX = blockParameters[BlockParams::VXCRD] + (i + 0.5)*blockParameters[BlockParams::DVX] |
Definition at line 68 of file gpu_pitch_angle_diffusion.cpp.
| const Real VY = blockParameters[BlockParams::VYCRD] + (j + 0.5)*blockParameters[BlockParams::DVY] |
Definition at line 69 of file gpu_pitch_angle_diffusion.cpp.
| const Real VZ = blockParameters[BlockParams::VZCRD] + (k + 0.5)*blockParameters[BlockParams::DVZ] |
Definition at line 70 of file gpu_pitch_angle_diffusion.cpp.