High Performance Plasticity  0.5.0
crystalCUDA.h File Reference

Header file for crystal classes CUDA implementations. More...

#include <hpp/config.h>
#include <type_traits>
#include <hpp/rotation.h>
#include <hpp/cudaUtils.h>
#include <hpp/tensorCUDA.h>
#include <hpp/spectralUtilsCUDA.h>
#include <hpp/gshCUDA.h>
Include dependency graph for crystalCUDA.h:

Go to the source code of this file.

Classes

class  hpp::SpectralPolycrystalCUDA< T, N >
 
struct  hpp::SpectralCrystalCUDA< T >
 
class  hpp::CrystalPropertiesCUDA< T, N >
 
struct  hpp::SpectralCrystalCUDA< T >
 
class  hpp::SpectralCrystalListCUDA< T >
 
class  hpp::SpectralPolycrystalCUDA< T, N >
 
class  hpp::SpectralPolycrystalGSHCUDA< T, CRYSTAL_TYPE >
 

Namespaces

 hpp
 

Functions

template<typename T >
bool hpp::operator== (const SpectralCrystalCUDA< T > &l, const SpectralCrystalCUDA< T > &r)
 
template<typename T , unsigned int N>
__device__ T hpp::slipDeformationResistanceStepSpectralSolver (const CrystalPropertiesCUDA< T, N > *props, const T s_alpha, const T gammaSum, const T dt)
 
template<typename T , unsigned int P>
__device__ void hpp::getSpectralCrystalDatabaseCoordinate (SpectralCrystalCUDA< T > &crystal, SpectralDatabaseUnifiedCUDA< T, 4, P > *db, Tensor2CUDA< T, 3, 3 > &RStretchingTensor, T theta, unsigned int *dbCoord)
 
template<typename T , unsigned int N>
__global__ void hpp::SPECTRAL_POLYCRYSTAL_STEP (unsigned int nCrystals, SpectralCrystalCUDA< T > *crystals, CrystalPropertiesCUDA< T, N > *props, Tensor2CUDA< T, 3, 3 > RStretchingTensor, Tensor2AsymmCUDA< T, 3 > WNext, T theta, T eDot, T dt, SpectralDatabaseCUDA< T, 4 > *db, Tensor2CUDA< T, 3, 3 > *TCauchyPerBlockSums)
 
template<typename T , unsigned int N, unsigned int P>
__global__ void hpp::SPECTRAL_POLYCRYSTAL_STEP_UNIFIED (unsigned int nCrystals, SpectralCrystalCUDA< T > *crystals, CrystalPropertiesCUDA< T, N > *props, Tensor2CUDA< T, 3, 3 > RStretchingTensor, Tensor2AsymmCUDA< T, 3 > WNext, T theta, T eDot, T dt, SpectralDatabaseUnifiedCUDA< T, 4, P > *db, Tensor2CUDA< T, 3, 3 > *TCauchyPerBlockSums)
 
template<typename T >
__global__ void hpp::GET_GSH_COEFFS (const SpectralCrystalCUDA< T > *crystals, unsigned int ncrystals, GSHCoeffsCUDA< T > *coeffsPerBlockSums)
 
template<typename T >
__global__ void hpp::GET_AVERAGE_TCAUCHY (unsigned int nCrystals, const SpectralCrystalCUDA< T > *crystals, Tensor2CUDA< T, 3, 3 > *TCauchyGlobal)
 
template<typename T >
__device__ Tensor2CUDA< T, 3, 3 > hpp::EulerZXZRotationMatrixCUDA (EulerAngles< T > angles)
 

Detailed Description

Header file for crystal classes CUDA implementations.

A class for simulating a polycrystal using a Fourier compressed database.

A class for storing crystal information in a way that makes coalesced global memory reads/writes faster.

Author
Michael Malahe
Template Parameters
Tscalar type
Nnumber of slip systems

Instances of this class only ever live on the host. As it stands this implementation isn't even remotely thread safe, and it is not safe to make and operate on multiple copies of these objects.

Template Parameters
Tscalar type
Nnumber of slip systems

The class presents an interface that allows it to be modified only through the Generalized Spherical Harmonic representation.

The implementation takes an approach where the polycrystal is composed of a number of single crystals that are evenly distributed in orientation space within the fundamental zone. Each crystal represents a volume in the fundamental zone. Associated with each crystal is a density, with the summed density for all of the crystals coming to 1.

Instances of this class only ever live on the host.

Template Parameters
Tscalar type
Nnumber of slip systems in the polycrystal