|
High Performance Plasticity
0.5.0
|
Enumerations | |
| enum | CrystalType { CRYSTAL_TYPE_NONE, CRYSTAL_TYPE_FCC } |
| enum | HardeningLaw { HARDENING_LAW_BROWN, HARDENING_LAW_VOCE } |
| enum | CrystalDatasetIdx { SIGMA00, SIGMA11, SIGMA12, SIGMA02, SIGMA01, WP01, WP12, WP02, GAMMA } |
| enum | HDFReadWrite : char { HDFReadWrite::Write ='w', HDFReadWrite::Read ='r' } |
| enum | SymmetryType { SYMMETRY_TYPE_NONE, SYMMETRY_TYPE_C4 } |
Functions | |
| std::vector< SpectralDatasetID > | defaultCrystalSpectralDatasetIDs () |
| template<typename U > | |
| hpp::Tensor2< U > | tensorA (hpp::Tensor2< U > F_p, hpp::Tensor2< U > F_next) |
| See kalidindi1992.TensorA. More... | |
| template<typename U > | |
| std::vector< hpp::Tensor2< U > > | tensorC_alphas (const hpp::Tensor4< U > &L, const hpp::Tensor2< U > &A, const std::vector< hpp::Tensor2< U >> &S_0, const unsigned int n_alpha) |
| See kalidindi1992.TensorC_alphas. More... | |
| template<typename U > | |
| void | tensorC_alphasInPlace (const hpp::Tensor4< U > &L, const hpp::Tensor2< U > &A, const std::vector< hpp::Tensor2< U >> &S_0, const unsigned int n_alpha, hpp::Tensor2< U > &dumB_alpha, std::vector< hpp::Tensor2< U >> &C_alphas) |
| In-place version of hpp.tensorC_alphas. More... | |
| template<typename U > | |
| U | plasticShearingRate (U tau_alpha, U s_alpha, U gammadot_0, U m) |
| See kalidindi1992.PlasticShearingRate. More... | |
| template<typename U > | |
| std::vector< U > | shearStrainRates (const CrystalProperties< U > &props, const hpp::Tensor2< U > &T, const std::vector< U > &s_alphas) |
| See kalidindi1992.ShearStrainRates. More... | |
| template<typename U > | |
| void | shearStrainRatesInPlace (const CrystalProperties< U > &props, const hpp::Tensor2< U > &T, const std::vector< U > &s_alphas, std::vector< U > &gammadot_alphas) |
| In-place version of hpp.shearStrainRates. More... | |
| template<typename U > | |
| std::vector< U > | shearStrainIncrements (const CrystalProperties< U > &props, const hpp::Tensor2< U > &T, const std::vector< U > &s_alphas, const U dt) |
| See kalidindi1992.ShearStrainIncrements. More... | |
| template<typename U > | |
| void | shearStrainIncrementsInPlace (const CrystalProperties< U > &props, const hpp::Tensor2< U > &T, const std::vector< U > &s_alphas, const U dt, std::vector< U > &Dgamma_alphas) |
| In-place version of hpp.shearStrainIncrements. More... | |
| template<typename U > | |
| hpp::Tensor2< U > | partialDGammaPartialT (U m, U gammadot_0, const hpp::Tensor2< U > &T, const hpp::Tensor2< U > &S_0_alpha, U s_alpha, U dt) |
| See kalidindi1992.PartialDGammaPartialT. More... | |
| template<typename U > | |
| void | partialDGammaPartialTInPlace (U m, U gammadot_0, const hpp::Tensor2< U > &T, const hpp::Tensor2< U > &S_0_alpha, U s_alpha, U dt, hpp::Tensor2< U > &pdgpt) |
| In-place version of hpp.partialDGammaPartialT. More... | |
| template<typename U > | |
| hpp::Tensor4< U > | tensorJ (const CrystalProperties< U > &props, const std::vector< hpp::Tensor2< U >> &C_alphas, const std::vector< U > &s_alphas, const hpp::Tensor2< U > &T, const U dt) |
| See kalidindi1992.TensorJ. More... | |
| template<typename U > | |
| void | tensorJInPlace (const CrystalProperties< U > &props, const std::vector< hpp::Tensor2< U >> &C_alphas, const std::vector< U > &s_alphas, const hpp::Tensor2< U > &T, const U dt, hpp::Tensor2< U > &dum2ndOrder, hpp::Tensor4< U > &dum4thOrder, hpp::Tensor4< U > &J) |
| In-place version of hpp.tensorJ. More... | |
| template<typename U > | |
| hpp::Tensor2< U > | tensorG (const hpp::Tensor4< U > &L, const hpp::Tensor2< U > &A, const hpp::Tensor2< U > &T_prev_iter, const std::vector< U > &Dgamma_alphas, const std::vector< hpp::Tensor2< U >> &C_alphas) |
| See kalidindi1992.TensorG. More... | |
| template<typename U > | |
| void | tensorGInPlace (const hpp::Tensor4< U > &L, const hpp::Tensor2< U > &A, const hpp::Tensor2< U > &T_prev_iter, const std::vector< U > &Dgamma_alphas, const std::vector< hpp::Tensor2< U >> &C_alphas, Tensor2< U > &dum2ndOrder, hpp::Tensor2< U > &dumT_tr, hpp::Tensor2< U > &G) |
| In-place version of hpp.TensorG. More... | |
| template<typename U > | |
| hpp::Tensor2< U > | newtonStressCorrection (const CrystalProperties< U > &props, const hpp::Tensor2< U > &A, const std::vector< hpp::Tensor2< U >> &C_alphas, const std::vector< U > &s_alphas, const hpp::Tensor2< U > &T_old, const U DT_max, const U dt) |
| See kalidindi1992.NewtonStressCorrection. More... | |
| template<typename U > | |
| void | newtonStressCorrectionInPlace (const CrystalProperties< U > &props, const hpp::Tensor2< U > &A, const std::vector< hpp::Tensor2< U >> &C_alphas, const std::vector< U > &s_alphas, const hpp::Tensor2< U > &T_old, const U DT_max, const U dt, std::vector< U > &dumDgamma_alphas, hpp::Tensor4< U > &dumJ, hpp::Tensor2< U > &dumT_tr, hpp::Tensor2< U > &dumG, hpp::Tensor2< U > &dum2ndOrder, hpp::Tensor4< U > &dum4thOrder, hpp::Tensor2< U > &DT) |
| In-place version of hpp.newtonStressCorrection. More... | |
| template<typename U > | |
| U | slipHardeningRate (U h_0, U s_s, U a, U s_beta) |
| template<typename U > | |
| hpp::Tensor2< U > | strainHardeningRates (const CrystalProperties< U > &props, const std::vector< U > &s_alphas) |
| template<typename U > | |
| U | strainHardeningRateVoce (const CrystalProperties< U > &props, const std::vector< U > &s_alphas) |
| Voce hardening law. More... | |
| template<typename U > | |
| std::vector< U > | slipDeformationResistanceUpdate (const CrystalProperties< U > &props, const hpp::Tensor2< U > &T_next, const std::vector< U > &s_alphas_current_time, const std::vector< U > &s_alphas_prev_iter, const U dt) |
| template<typename U > | |
| U | slipDeformationResistanceStepSpectralSolver (const CrystalProperties< U > &props, const U s_alpha, const U gammaSum, const U dt) |
| From kalidindi2006 Equation 5. More... | |
| template<typename U > | |
| hpp::Tensor2< U > | plasticDeformationGradientUpdate (const CrystalProperties< U > &props, const hpp::Tensor2< U > &F_p_prev_time, const std::vector< U > &Dgamma_alphas) |
| template<typename U > | |
| Tensor2< U > | plasticSpinTensor (CrystalProperties< U > mprops, std::vector< U > gammadot_alphas, std::vector< std::vector< U >> m_alphas, std::vector< std::vector< U >> n_alphas) |
| Mihaila 2014 equation 14. More... | |
| template<typename U > | |
| bool | strainRateLowEnough (const std::vector< U > &Dgamma_alphas, U Dgamma_goal) |
| template<typename U > | |
| U | setTimestepByShearRate (U dt_old, const std::vector< U > &Dgamma_alphas, U Dgamma_goal) |
| The exact method in kalidindi1992. More... | |
| template<typename T > | |
| std::vector< T > | cartesianToSpherical (const std::vector< T > &cartVec) |
| template<typename T > | |
| Tensor2< T > | histogramPoleEqualArea (const std::vector< EulerAngles< T >> &angles, const std::vector< T > &planeNormal) |
| template<typename T > | |
| void | writePoleHistogramHistoryHDF5 (H5::H5File &outfile, const std::string &dsetBaseName, std::vector< Tensor2< T >> &history, const std::vector< T > &pole) |
| void | hdfSuppressErrors () |
| void | hdfRestoreErrors () |
| hid_t | getComplexHDFType () |
| std::vector< hsize_t > | getDatasetDims (hid_t dset_id) |
| bool | MPIAllTrue (bool condition, MPI_Comm comm) |
| Determine if condition is true for all processes. More... | |
| FFTWConfigRealND | prepareFFTWConfigRealND (const std::vector< ptrdiff_t > &realDims, MPI_Comm comm) |
| void | destroyConfigRealND (FFTWConfigRealND &cfg) |
| unsigned int | roundUpToMultiple (unsigned int val, unsigned int multiple) |
| bool | operator< (const SpectralDatasetID &l, const SpectralDatasetID &r) |
| bool | operator== (const SpectralDatasetID &l, const SpectralDatasetID &r) |
| void | evaluateSpectralCompressionErrorFull (std::string rawDBName, std::string spectralDBName, std::string errorDBName, unsigned int nTermsMax, std::string outFilename, MPI_Comm comm) |
| void | evaluateSpectralCompressionErrorFullUnified (std::string rawDBName, std::string spectralDBName, std::string errorDBName, unsigned int nTermsMax, std::string outFilename, MPI_Comm comm) |
| void | evaluateSpectralCompressionErrorAxisSlice (std::string rawDBName, std::string spectralDBName, std::vector< std::string > dsetBasenames, unsigned int nTermsMax, unsigned int refineMult, std::vector< int > axisSlice, std::string outFilename, MPI_Comm comm) |
| Evaluate the error incurred in the spectral reresentation of a database. More... | |
| void | evaluateSpectralCompressionErrorAxisSliceUnified (std::string rawDBName, std::string spectralDBName, std::vector< std::string > dsetBasenames, unsigned int nTermsMax, unsigned int refineMult, std::vector< int > axisSlice, std::string outFilename, MPI_Comm comm) |
| Evaluate the error incurred in the spectral reresentation of a database. More... | |
| template<typename U > | |
| Tensor2< U > | simpleShearDeformationGradient (U t, U shear_rate) |
| The deformation gradient from a simple shear. More... | |
| template<typename U > | |
| Tensor2< U > | simpleShearVelocityGradient (U t, U shear_rate) |
| The velocity gradient from a simple shear. More... | |
| template<typename U > | |
| Tensor2< U > | simpleCompressionDeformationGradient (U t, U comp_rate) |
| The deformation gradient from a simple compression. More... | |
| template<typename U > | |
| Tensor2< U > | simpleCompressionVelocityGradient (U t, U comp_rate) |
| The velocity gradient from a simple compression. More... | |
| template<typename U > | |
| Tensor2< U > | planeStrainCompressionDeformationGradient (U t, U comp_rate) |
| The deformation gradient from a plane strain compression. More... | |
| template<typename U > | |
| Tensor2< U > | planeStrainCompressionVelocityGradient (U t, U comp_rate) |
| The velocity gradient from a plane strain compression. More... | |
| template<typename U > | |
| Tensor2< U > | staticDeformationGradient (U t) |
| The deformation gradient for no deformation. More... | |
| template<typename U > | |
| Tensor2< U > | staticVelocityGradient (U t) |
| The velocity gradient for no deformation. More... | |
| template<typename U > | |
| Tensor2< U > | deformationGradFromVelGrad (U t_init, const Tensor2< U > &F_init, const Tensor2< U > &L, U t) |
| template<typename U > | |
| Tensor2< U > | stretchingVelocityGradient (U theta, U eDot) |
| template<typename T > | |
| StretchingTensorDecomposition< T > | getStretchingTensorDecomposition (const Tensor2< T > &L) |
| template<typename U > | |
| Tensor4< U > | isotropicElasticityTensor (U mu, U kappa) |
| Construct a fourth order isotropic elasticity tensor. More... | |
| template<typename U > | |
| Tensor4< U > | cubeSymmetricElasticityTensor (U c11, U c12, U c44) |
| Construct a fourth order elasticity tensor accounting for cubic symmetry. More... | |
| template<typename U > | |
| Tensor4< U > | volumeAverage (const std::vector< Tensor4< U >> &tVec, const std::vector< U > &vVec) |
| Volume average fourth order tensors. More... | |
| template<typename U > | |
| Tensor4< U > | getEshelbyTensorCubicMaterialSphericalInclusion (U c11, U c12, U c44, U I0, U I1, U I2) |
| template<typename U > | |
| Tensor4< U > | getHomogenizedStiffnessVolumeAverage (const std::vector< Tensor4< U >> &cVec, const std::vector< U > &vVec) |
| Get the homogenized stiffness tensor using a volume average. More... | |
| template<typename U > | |
| Tensor4< U > | getHomogenizedStiffnessELSC (const std::vector< Tensor4< U >> &cVec, const std::vector< U > &vVec, const Tensor4< U > &S) |
| Get the homogenized stiffness tensor using the elastic self-consistent method. More... | |
| constexpr int | nSlipSystems (CrystalType crystalType) |
| template<typename U > | |
| CrystalProperties< U > | defaultCrystalProperties () |
| template<typename U > | |
| CrystalProperties< U > | rotate (const CrystalProperties< U > &propsOld, hpp::Tensor2< U > rotTensor) |
| template<typename U > | |
| CrystalSolverConfig< U > | defaultCrystalSolverConfig () |
| template<typename U > | |
| CrystalSolverConfig< U > | defaultConservativeCrystalSolverConfig () |
| template<typename U > | |
| CrystalInitialConditions< U > | defaultCrystalInitialConditions () |
| template<typename T > | |
| EulerAngles< T > | getEulerAnglesFromDeformationGradient (const hpp::Tensor2< T > &F_star) |
| Get the corresponding Euler angles for the rotation induced by this deformation. More... | |
| template<typename U > | |
| bool | operator== (const Crystal< U > &l, const Crystal< U > &r) |
| template<typename T > | |
| bool | operator== (const SpectralCrystalCUDA< T > &l, const SpectralCrystalCUDA< T > &r) |
| template<typename T , unsigned int N> | |
| __device__ T | slipDeformationResistanceStepSpectralSolver (const CrystalPropertiesCUDA< T, N > *props, const T s_alpha, const T gammaSum, const T dt) |
| template<typename T , unsigned int P> | |
| __device__ void | 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 | 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 | 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 | GET_GSH_COEFFS (const SpectralCrystalCUDA< T > *crystals, unsigned int ncrystals, GSHCoeffsCUDA< T > *coeffsPerBlockSums) |
| template<typename T > | |
| __global__ void | GET_AVERAGE_TCAUCHY (unsigned int nCrystals, const SpectralCrystalCUDA< T > *crystals, Tensor2CUDA< T, 3, 3 > *TCauchyGlobal) |
| template<typename T > | |
| __device__ Tensor2CUDA< T, 3, 3 > | EulerZXZRotationMatrixCUDA (EulerAngles< T > angles) |
| template<typename T > | |
| GSHCoeffs< T > | operator+ (const GSHCoeffs< T > &coeffs1, const GSHCoeffs< T > &coeffs2) |
| template<typename T > | |
| void | operator+= (GSHCoeffs< T > &A, const GSHCoeffs< T > &B) |
| template<typename T > | |
| GSHCoeffs< T > | operator/ (const GSHCoeffs< T > &coeffs, const T val) |
| template<typename T > | |
| void | operator/= (GSHCoeffs< T > &A, const T B) |
| template<typename T > | |
| __host__ __device__ GSHCoeffsCUDA< T > | operator+ (const GSHCoeffsCUDA< T > &coeffs1, const GSHCoeffsCUDA< T > &coeffs2) |
| template<typename T > | |
| __host__ __device__ void | operator+= (GSHCoeffsCUDA< T > &A, const GSHCoeffsCUDA< T > &B) |
| template<typename T > | |
| __host__ __device__ GSHCoeffsCUDA< T > | operator/ (const GSHCoeffsCUDA< T > &coeffs, T val) |
| template<typename T > | |
| __device__ GSHCoeffsCUDA< T > | warpReduceSumGSHCoeffs (GSHCoeffsCUDA< T > coeffs) |
| template<typename T > | |
| __device__ GSHCoeffsCUDA< T > | blockReduceSumGSHCoeffs (GSHCoeffsCUDA< T > val) |
| template<typename T > | |
| __global__ void | BLOCK_REDUCE_KEPLER_GSH_COEFFS (GSHCoeffsCUDA< T > *in, GSHCoeffsCUDA< T > *out, int nTerms) |
| void | hdfAssert (herr_t code, const char *file, int line) |
| template<typename T > | |
| hid_t | getHDF5TypeC () |
| Get HDF5 equivalent type. More... | |
| template<typename T > | |
| hid_t | createHDF5Dataset (hid_t file_id, std::string datasetName, std::vector< hsize_t > dataDims) |
| template<typename T > | |
| hid_t | createHDF5GridOfArrays (hid_t file_id, std::string datasetName, std::vector< hsize_t > gridDims, std::vector< hsize_t > arrayDims) |
| template<typename T > | |
| HDFReadWriteParamsC | getReadWriteParametersForMultipleHDF5Arrays (hid_t dset_id, std::vector< hsize_t > gridOffset, std::vector< hsize_t > arrayDims, std::vector< hsize_t > arrayCount) |
| Gets the parameters and ensures that they're compatible with the actual dataset. More... | |
| template<typename T > | |
| HDFReadWriteParamsC | getReadWriteParametersForSingleHDF5Array (hid_t dset_id, std::vector< hsize_t > gridOffset, std::vector< hsize_t > arrayDims) |
| Gets the parameters and ensures that they're compatible with the actual dataset. More... | |
| template<typename T > | |
| void | readWriteHDF5SimpleArray (hid_t dset_id, hid_t plist_id, HDFReadWriteParamsC parms, T *output, HDFReadWrite mode) |
| template<typename T > | |
| void | readHDF5SimpleArray (hid_t dset_id, hid_t plist_id, HDFReadWriteParamsC parms, T *output) |
| template<typename T > | |
| void | writeHDF5SimpleArray (hid_t dset_id, hid_t plist_id, HDFReadWriteParamsC parms, T *output) |
| template<typename T > | |
| void | readSingleHDF5Array (hid_t dset_id, hid_t plist_id, std::vector< hsize_t > gridOffset, std::vector< hsize_t > arrayDims, T *output) |
| template<typename T > | |
| void | readSingleHDF5Array (hid_t dset_id, hid_t plist_id, std::vector< hsize_t > arrayDims, T *output) |
| template<typename T > | |
| void | writeSingleHDF5Array (hid_t dset_id, hid_t plist_id, std::vector< hsize_t > gridOffset, std::vector< hsize_t > arrayDims, T *output) |
| template<typename T > | |
| void | writeSingleHDF5Array (hid_t dset_id, hid_t plist_id, std::vector< hsize_t > arrayDims, T *output) |
| template<typename T > | |
| void | writeMultipleHDF5Arrays (hid_t dset_id, hid_t plist_id, std::vector< hsize_t > gridOffset, std::vector< hsize_t > arrayDims, std::vector< hsize_t > arrayCount, T *output) |
| template<typename T > | |
| void | readMultipleHDF5Arrays (hid_t dset_id, hid_t plist_id, std::vector< hsize_t > gridOffset, std::vector< hsize_t > arrayDims, std::vector< hsize_t > arrayCount, T *output) |
| template<typename T > | |
| void | readSingleHDF5Value (hid_t dset_id, hid_t plist_id, std::vector< hsize_t > gridOffset, T *output) |
| template<typename T > | |
| void | writeSingleHDF5Value (hid_t dset_id, hid_t plist_id, std::vector< hsize_t > gridOffset, T *output) |
| template<typename T > | |
| H5::DataType | getHDF5Type () |
| Get HDF5 equivalent type. More... | |
| template<typename T > | |
| H5::DataSet | createHDF5Dataset (H5::H5File &file, const H5std_string &datasetName, std::vector< hsize_t > dataDims) |
| template<typename T > | |
| H5::DataSet | createHDF5GridOfArrays (H5::H5File &file, const H5std_string &datasetName, std::vector< hsize_t > gridDims, std::vector< hsize_t > arrayDims) |
| template<typename T > | |
| HDFReadWriteParams | getReadWriteParametersForSingleHDF5Array (H5::DataSet &dataset, std::vector< hsize_t > gridOffset, std::vector< hsize_t > arrayDims) |
| template<typename T > | |
| void | readWriteHDF5SimpleArray (H5::DataSet &dataset, HDFReadWriteParams parms, T *output, HDFReadWrite mode) |
| template<typename T > | |
| void | readHDF5SimpleArray (H5::DataSet &dataset, HDFReadWriteParams parms, T *output) |
| template<typename T > | |
| void | writeHDF5SimpleArray (H5::DataSet &dataset, HDFReadWriteParams parms, T *output) |
| template<typename T > | |
| void | readSingleHDF5Array (H5::DataSet &dataset, std::vector< hsize_t > gridOffset, std::vector< hsize_t > arrayDims, T *output) |
| template<typename T > | |
| void | writeSingleHDF5Array (H5::DataSet &dataset, std::vector< hsize_t > gridOffset, std::vector< hsize_t > arrayDims, T *output) |
| template<typename T > | |
| void | writeVectorToHDF5Array (H5::H5File &file, const std::string &dsetName, std::vector< T > &vec) |
| template<typename T > | |
| void | addAttribute (H5::H5File &file, const std::string &attrName, T attrVal) |
| template<typename T > | |
| MPI_Datatype | MPIType () |
| Get the MPI datatype from the C++ type. More... | |
| template<typename T > | |
| T | MPIMin (const T &localVal, MPI_Comm comm) |
| template<typename T > | |
| T | MPIMax (const T &localVal, MPI_Comm comm) |
| template<typename T > | |
| T | MPISum (const T &localVal, MPI_Comm comm) |
| template<typename T > | |
| std::vector< T > | MPIConcatOnRoot (T localVal, MPI_Comm comm) |
| template<typename T > | |
| std::vector< T > | MPIConcatOnRoot (std::vector< T > localVec, MPI_Comm comm) |
| template<typename T > | |
| T | MPIBroadcastFromRoot (T rootVal, MPI_Comm comm) |
| template<typename T > | |
| std::vector< T > | MPIBroadcastFromRoot (std::vector< T > rootVec, MPI_Comm comm) |
| template<typename T > | |
| std::vector< T > | MPISplitVectorEvenly (const std::vector< T > &rootVec, MPI_Comm comm) |
| template<typename T > | |
| std::vector< T > | MPISplitVectorEvenly (const std::vector< T > &rootVec, MPI_Comm comm, MPI_Datatype dtype) |
| template<class T > | |
| boost::python::list | toPythonList (const std::vector< T > &vec) |
| template<class T > | |
| std::vector< T > | toStdVector (const boost::python::list &list) |
| template<typename T > | |
| MPI_Datatype | getEulerAnglesTypeMPI () |
| template<typename T > | |
| EulerAngles< T > | polarToEuler (T theta, T phi) |
| Convert polar angles to Euler angles. More... | |
| template<typename T > | |
| std::ostream & | operator<< (std::ostream &out, const EulerAngles< T > &angles) |
| template<typename T > | |
| bool | operator== (const EulerAngles< T > &l, const EulerAngles< T > &r) |
| template<typename T > | |
| bool | operator!= (const EulerAngles< T > &l, const EulerAngles< T > &r) |
| template<typename T > | |
| Tensor2< T > | EulerZXZRotationMatrix (T alpha, T beta, T gamma) |
| template<typename T > | |
| Tensor2< T > | EulerZXZRotationMatrix (EulerAngles< T > angle) |
| template<typename T > | |
| EulerAngles< T > | getEulerZXZAngles (Tensor2< T > R) |
| Get Euler angles from rotation matrix. More... | |
| std::mt19937 | makeMt19937 (bool defaultSeed) |
| template<typename T > | |
| void | rotationTensorFrom3UniformRandomsArvo1992 (Tensor2< T > &A, T x1, T x2, T x3) |
| template<typename T > | |
| void | randomRotationTensorArvo1992 (std::mt19937 &gen, Tensor2< T > &A) |
| template<typename T > | |
| void | randomRotationTensorArvo1992 (Tensor2< T > &A, bool defaultSeed=false) |
| template<typename T > | |
| void | rotationTensorFrom3UniformRandoms (Tensor2< T > &A, T x1, T x2, T x3) |
| template<typename T > | |
| Tensor2< T > | randomRotationTensorStewart1980 (unsigned int dim, bool defaultSeed=false) |
| Generate a random rotation tensor. More... | |
| template<typename T > | |
| void | randomRotationTensorInPlace (unsigned int dim, Tensor2< T > &A, bool defaultSeed=false) |
| Generate a random rotation tensor. More... | |
| template<typename T > | |
| Tensor2< T > | randomRotationTensor (unsigned int dim, bool defaultSeed=false) |
| template<typename T > | |
| EulerAngles< T > | quaternionToEulerAngles (isoi::Quaternion &q) |
| int | fftwFlat2 (int i0, int i1, int N0, int N1) |
| int | fftwFlat4 (int i0, int i1, int i2, int i3, const std::vector< ptrdiff_t > &N) |
| double | fftwComplexMag (fftw_complex comps) |
| std::string | getCoordsName (std::string baseName) |
| std::string | getCoeffsName (std::string baseName) |
| template<typename U > | |
| std::string | getComponentSuffix (const std::vector< U > &componentIdx) |
| std::string | getDefaultCoeffsDatasetName (SpectralDatasetID dsetID) |
| template<typename U > | |
| void | loadSpectralDatabase (hpp::HDF5Handler &infile, std::string dsetNameCoords, std::string dsetNameCoeffs, std::vector< hsize_t > componentIdx, std::vector< std::vector< unsigned int >> &coordsList, std::vector< std::complex< U >> &coeffList, unsigned int nTerms, unsigned int refineMult=1) |
| Load a spectral database. More... | |
| template<typename U > | |
| std::complex< U > | TruncatedIFFTNDSingleSquare (const unsigned int spatialDim, const std::vector< std::complex< U >> &expTable, const std::vector< std::vector< unsigned int >> &spectralCoordsList, const std::vector< std::complex< U >> &coeffs, std::vector< unsigned int > spatialCoord, unsigned int nTerms) |
| TruncatedIFFTND where all dimensions have the same number of points. More... | |
| template<typename U > | |
| U | TruncatedIFFTNDSingleSquareReal (const unsigned int spatialDim, const std::vector< std::complex< U >> &expTable, const std::vector< std::vector< unsigned int >> &spectralCoordsList, const std::vector< std::complex< U >> &coeffs, std::vector< unsigned int > spatialCoord, unsigned int nTerms) |
| template<typename U > | |
| U | TruncatedIFFTNDSingleSquareRealScalar (const unsigned int nDims, const unsigned int spatialDim, const U expTable[], const int spectralCoordsList[], const U coeffs[], std::vector< unsigned int > spatialCoord, unsigned int nTerms) |
| Scalar implementation of hpp.TruncatedIFFTNDSingleSquareReal. More... | |
| template<typename U > | |
| U | TruncatedIFFTNDSingleSquareRealScalar (const unsigned int nDims, const unsigned int spatialDim, const int spectralCoordsList[], const U coeffs[], std::vector< unsigned int > spatialCoord, unsigned int nTerms) |
| template<typename U > | |
| U | TruncatedIFFT4DSingleSquareReal (const unsigned int spatialDim, const U expTable[], const int spectralCoordsList[], const U coeffs[], const std::vector< unsigned int > &spatialCoord, unsigned int nTerms) |
| AVX implementation of hpp.TruncatedIFFT4DSingleSquareReal. More... | |
| template<typename U > | |
| U | TruncatedIFFTNDSingleSquareReal (const unsigned int nDims, const unsigned int spatialDim, const U expTable[], const int spectralCoordsList[], const U coeffs[], const std::vector< unsigned int > &spatialCoord, unsigned int nTerms) |
| template<typename U > | |
| U | TruncatedIFFT4DSingleSquareReal (const unsigned int spatialDim, const int spectralCoordsList[], const U coeffs[], const std::vector< unsigned int > &spatialCoord, unsigned int nTerms) |
| template<typename U > | |
| U | TruncatedIFFTNDSingleSquareReal (const unsigned int nDims, const unsigned int spatialDim, const int spectralCoordsList[], const U coeffs[], const std::vector< unsigned int > &spatialCoord, unsigned int nTerms) |
| template<typename T , unsigned int N> | |
| __global__ void | GET_IDFT_REAL (SpectralDatabaseCUDA< T, N > *db, unsigned int dsetIdx, unsigned int *spatialCoord, T *val) |
| template<typename T , unsigned int N, unsigned int P> | |
| struct | ALIGN (16) SpectralDataUnifiedCUDA |
| template<typename T , unsigned int N> | |
| __device__ void | getExpVal (unsigned int *spatialCoord, SpectralCoordCUDA< N > &coord, unsigned int gridDim, T expArgFactor, T *expValRe, T *expValIm) |
| template<typename T > | |
| std::vector< T > | operator/ (const std::vector< T > &vec, T scalar) |
| Elementwise division. More... | |
| template<typename T > | |
| std::vector< std::vector< T > > | operator/ (const std::vector< std::vector< T >> &veclist, T scalar) |
| template<typename T > | |
| void | operator*= (std::vector< T > &vec, const T scalar) |
| template<typename T > | |
| void | operator/= (std::vector< T > &vec, const T scalar) |
| template<typename T > | |
| std::vector< T > | operator* (const std::vector< T > &vec, const T scalar) |
| template<typename T > | |
| std::vector< T > | operator* (const T scalar, const std::vector< T > &vec) |
| template<typename T > | |
| std::vector< std::vector< T > > | operator* (T scalar, const std::vector< std::vector< T >> &veclist) |
| template<typename T > | |
| std::vector< T > | abs (const std::vector< T > &vec) |
| template<typename T > | |
| T | min (const std::vector< T > &vec) |
| template<typename T > | |
| T | max (const std::vector< T > &vec) |
| template<typename T > | |
| std::vector< T > | operator- (const std::vector< T > &vec1, const std::vector< T > &vec2) |
| template<typename T > | |
| T | prod (const std::vector< T > &vec) |
| Product of all the entries of a vector. More... | |
| template<typename T > | |
| std::ostream & | operator<< (std::ostream &out, const std::vector< T > &vec) |
| template<typename T > | |
| std::ostream & | operator<< (std::ostream &out, const std::valarray< T > &vec) |
| idx2d | unflat (unsigned int flatIdx, unsigned int n1, unsigned int n2) |
| idx4d | unflat (unsigned int flatIdx, unsigned int n1, unsigned int n2, unsigned int n3, unsigned int n4) |
| template<typename T , typename U > | |
| std::vector< T > | unflatC (T flatIdx, std::vector< U > dims) |
| template<typename T , typename U > | |
| T | flatC (std::vector< T > idx, std::vector< U > dims) |
| template<typename T > | |
| std::vector< T > | ones (unsigned int n) |
| template<typename T > | |
| Tensor2< T > | outer (const std::vector< T > &A, const std::vector< T > &B) |
| template<typename T > | |
| void | outerInPlace (const std::vector< T > &A, const std::vector< T > &B, Tensor2< T > &C) |
| template<typename T > | |
| Tensor2< T > | outer (const std::valarray< T > &A, const std::valarray< T > &B) |
| template<typename T > | |
| Tensor2< T > | identityTensor2 (unsigned int n) |
| template<typename T > | |
| void | identityTensor2InPlace (unsigned int n, Tensor2< T > &A) |
| template<typename T > | |
| Tensor2< T > | ones2 (unsigned int n) |
| template<typename T > | |
| Tensor2< T > | diag2 (const std::vector< T > &vals) |
| template<typename T > | |
| Tensor2< T > | diag2 (const std::valarray< T > &vals) |
| template<typename T > | |
| bool | areEqual (const Tensor2< T > &A, const Tensor2< T > &B, T tol) |
| template<typename T > | |
| bool | operator== (const Tensor2< T > &A, const Tensor2< T > &B) |
| Test equality of two tensors. More... | |
| template<typename T > | |
| bool | operator!= (const Tensor2< T > &A, const Tensor2< T > &B) |
| template<typename T > | |
| bool | areSameShape (const Tensor2< T > &A, const Tensor2< T > &B) |
| template<typename T > | |
| void | assertSameShape (const Tensor2< T > &A, const Tensor2< T > &B) |
| template<typename T > | |
| Tensor2< T > | operator+ (const Tensor2< T > &A, const Tensor2< T > &B) |
| Addition. More... | |
| template<typename T > | |
| void | operator+= (Tensor2< T > &A, const Tensor2< T > &B) |
| template<typename T > | |
| Tensor2< T > | operator+ (const Tensor2< T > &A, const T &B) |
| template<typename T > | |
| Tensor2< T > | operator+ (const T &A, const Tensor2< T > &B) |
| template<typename T > | |
| void | operator+= (Tensor2< T > &A, const T &B) |
| template<typename T > | |
| Tensor2< T > | MPISum (Tensor2< T > &local, MPI_Comm comm) |
| template<typename T > | |
| Tensor2< T > | operator- (const Tensor2< T > &A, const Tensor2< T > &B) |
| template<typename T > | |
| void | operator-= (Tensor2< T > &A, const Tensor2< T > &B) |
| template<typename T > | |
| Tensor2< T > | operator- (const Tensor2< T > &A, const T &B) |
| template<typename T > | |
| Tensor2< T > | operator- (const T &A, const Tensor2< T > &B) |
| template<typename T > | |
| void | operator-= (Tensor2< T > &A, const T &B) |
| template<typename T > | |
| Tensor2< T > | operator* (const Tensor2< T > &A, const T &B) |
| template<typename T > | |
| Tensor2< T > | operator* (const T &A, const Tensor2< T > &B) |
| template<typename T > | |
| void | operator*= (Tensor2< T > &A, const T &B) |
| template<typename T > | |
| Tensor2< T > | operator/ (const Tensor2< T > &A, const T &B) |
| template<typename T > | |
| void | operator/= (Tensor2< T > &A, const T &B) |
| template<typename T > | |
| void | assertCompatibleForMultiplication (const Tensor2< T > &A, const Tensor2< T > &B) |
| template<typename T > | |
| Tensor2< T > | operator* (const Tensor2< T > &A, const Tensor2< T > &B) |
| template<typename T > | |
| void | ABPlusBTransposeAInPlace (const hpp::Tensor2< T > &A, const hpp::Tensor2< T > &B, hpp::Tensor2< T > &C) |
| template<typename T > | |
| T | contract (const Tensor2< T > &A, const Tensor2< T > &B) |
| template<typename T > | |
| std::ostream & | operator<< (std::ostream &out, const Tensor2< T > &A) |
| template<typename T > | |
| std::ostream & | operator<< (std::ostream &out, Tensor4< T > &A) |
| template<typename T > | |
| Tensor4< T > | identityTensor4 (unsigned int n) |
| template<typename T > | |
| void | identityTensor4InPlace (unsigned int n, Tensor4< T > &A) |
| template<typename T > | |
| bool | areSameShape (const Tensor4< T > &A, const Tensor4< T > &B) |
| template<typename T > | |
| void | assertSameShape (const Tensor4< T > &A, const Tensor4< T > &B) |
| template<typename T > | |
| bool | operator== (const Tensor4< T > &A, const Tensor4< T > &B) |
| Test equality of two tensors. More... | |
| template<typename T > | |
| bool | operator!= (const Tensor4< T > &A, const Tensor4< T > &B) |
| template<typename T > | |
| Tensor4< T > | operator+ (const Tensor4< T > &A, const Tensor4< T > &B) |
| Addition. More... | |
| template<typename T > | |
| void | operator+= (Tensor4< T > &A, const Tensor4< T > &B) |
| template<typename T > | |
| Tensor4< T > | operator+ (const Tensor4< T > &A, const T &B) |
| template<typename T > | |
| Tensor4< T > | operator+ (const T &A, const Tensor4< T > &B) |
| template<typename T > | |
| void | operator+= (Tensor4< T > &A, const T &B) |
| template<typename T > | |
| Tensor4< T > | operator- (const Tensor4< T > &A) |
| template<typename T > | |
| Tensor4< T > | operator- (const Tensor4< T > &A, const Tensor4< T > &B) |
| template<typename T > | |
| void | operator-= (Tensor4< T > &A, const Tensor4< T > &B) |
| template<typename T > | |
| Tensor4< T > | operator- (const Tensor4< T > &A, const T &B) |
| template<typename T > | |
| Tensor4< T > | operator- (const T &A, const Tensor4< T > &B) |
| template<typename T > | |
| void | operator-= (Tensor4< T > &A, const T &B) |
| template<typename T > | |
| Tensor4< T > | operator* (const Tensor4< T > &A, const T &B) |
| template<typename T > | |
| Tensor4< T > | operator* (const T &A, const Tensor4< T > &B) |
| template<typename T > | |
| void | operator*= (Tensor4< T > &A, const T &B) |
| template<typename T > | |
| Tensor4< T > | operator/ (const Tensor4< T > &A, const T &B) |
| template<typename T > | |
| void | operator/= (Tensor4< T > &A, const T &B) |
| template<typename T > | |
| Tensor4< T > | outer (const Tensor2< T > &A, const Tensor2< T > &B) |
| template<typename T > | |
| void | assertCompatibleForOuterProduct (const Tensor2< T > &A, const Tensor2< T > &B, const Tensor4< T > &C) |
| template<typename T > | |
| void | outerInPlace (const Tensor2< T > &A, const Tensor2< T > &B, Tensor4< T > &C) |
| template<typename T > | |
| void | assertCompatibleForContraction (const Tensor4< T > &A, const Tensor2< T > &B) |
| template<typename T > | |
| void | assertCompatibleForContraction (const Tensor4< T > &A, const Tensor2< T > &B, const Tensor2< T > &C) |
| template<typename T > | |
| Tensor2< T > | contract (const Tensor4< T > &A, const Tensor2< T > &B) |
| template<typename T > | |
| void | contractInPlace (const Tensor4< T > &A, const Tensor2< T > &B, Tensor2< T > &C) |
| template<typename U > | |
| void | assertCompatibleForContraction (const Tensor4< U > &A, const Tensor4< U > &B) |
| template<typename U > | |
| Tensor4< U > | contract (const Tensor4< U > &A, const Tensor4< U > &B) |
| template<typename T > | |
| std::vector< T > | operator* (const hpp::Tensor2< T > &A, const std::vector< T > &x) |
| template<typename T > | |
| std::valarray< T > | operator* (const hpp::Tensor2< T > &A, const std::valarray< T > &x) |
| template<typename T > | |
| hpp::Tensor2< T > | operator* (const std::vector< T > &x, const hpp::Tensor2< T > &A) |
| Replicates the numpy behaviour of vec*mat. More... | |
| template<typename T > | |
| Tensor2< T > | transformIntoFrame (const Tensor2< T > &A, const Tensor2< T > &Q) |
| Transform tensor \( \mathbf{A} \) into the frame given by the columns of \( \mathbf{Q} \). More... | |
| template<typename T > | |
| Tensor2< T > | transformOutOfFrame (const Tensor2< T > &A_star, const Tensor2< T > &Q) |
| Transform tensor \( \mathbf{A}^* \) out of the frame given by the columns of \( \mathbf{Q} \). More... | |
| template<typename T > | |
| Tensor4< T > | transformOutOfFrame (const Tensor4< T > &E_star, const Tensor2< T > &Q) |
| Transform tensor \( \mathbf{E}^* \) out of the frame given by the columns of \( \mathbf{Q} \). More... | |
| template<typename T , unsigned int N> | |
| __device__ VecCUDA< T, N > | operator/ (const VecCUDA< T, N > &inVec, T scalar) |
| template<typename T > | |
| __device__ VecCUDA< T, 3 > | cartesianToSpherical (const VecCUDA< T, 3 > &cartVec) |
| Uses the "mathematics" convention. More... | |
| template<typename T , unsigned int M, unsigned N> | |
| __host__ __device__ Tensor2CUDA< T, M, N > | operator- (const Tensor2CUDA< T, M, N > &A, const Tensor2CUDA< T, M, N > &B) |
| template<typename T , unsigned int M, unsigned N> | |
| __host__ __device__ Tensor2CUDA< T, M, N > | operator+ (const Tensor2CUDA< T, M, N > &A, const Tensor2CUDA< T, M, N > &B) |
| template<typename T , unsigned int M, unsigned N> | |
| __host__ __device__ void | operator+= (Tensor2CUDA< T, M, N > &A, const Tensor2CUDA< T, M, N > &B) |
| template<typename T , unsigned int M, unsigned N> | |
| __host__ __device__ Tensor2CUDA< T, M, N > | operator* (const Tensor2CUDA< T, M, N > &A, T scalar) |
| template<typename T , unsigned int M, unsigned N> | |
| __host__ __device__ Tensor2CUDA< T, M, N > | operator* (T scalar, const Tensor2CUDA< T, M, N > &A) |
| template<typename T , unsigned int M, unsigned N> | |
| __host__ __device__ Tensor2CUDA< T, M, N > | operator/ (const Tensor2CUDA< T, M, N > &A, T scalar) |
| template<typename T , unsigned int M, unsigned N> | |
| __host__ __device__ void | operator/= (Tensor2CUDA< T, M, N > &A, T scalar) |
| template<typename T , unsigned int M, unsigned int N, unsigned int P> | |
| __host__ __device__ Tensor2CUDA< T, M, P > | operator* (const Tensor2CUDA< T, M, N > &A, const Tensor2CUDA< T, N, P > &B) |
| template<typename T , unsigned int M, unsigned int N> | |
| __host__ __device__ VecCUDA< T, M > | operator* (const Tensor2CUDA< T, M, N > &A, const VecCUDA< T, N > &x) |
| template<typename T , unsigned int M> | |
| __host__ __device__ Tensor2CUDA< T, M, M > | transformIntoFrame (const Tensor2CUDA< T, M, M > &A, const Tensor2CUDA< T, M, M > &Q) |
| Transform tensor \( \mathbf{A} \) into the frame given by the columns of \( \mathbf{Q} \). More... | |
| template<typename T , unsigned int M> | |
| __host__ __device__ Tensor2CUDA< T, M, M > | transformOutOfFrame (const Tensor2CUDA< T, M, M > &A_star, const Tensor2CUDA< T, M, M > &Q) |
| Transform tensor \( \mathbf{A}^* \) out of the frame given by the columns of \( \mathbf{Q} \). More... | |
| template<typename T , unsigned int M> | |
| __host__ __device__ Tensor2CUDA< T, M, M > | transformIntoFrame (const Tensor2AsymmCUDA< T, M > &A, const Tensor2CUDA< T, M, M > &Q) |
| template<typename T , unsigned int M> | |
| __host__ __device__ Tensor2CUDA< T, M, M > | transformOutOfFrame (const Tensor2AsymmCUDA< T, M > &A_star, const Tensor2CUDA< T, M, M > &Q) |
| template<typename T > | |
| __device__ Tensor2CUDA< T, 3, 3 > | EulerZXZRotationMatrixCUDA (T alpha, T beta, T gamma) |
| template<typename T , unsigned int M, unsigned int N> | |
| std::ostream & | operator<< (std::ostream &out, const Tensor2CUDA< T, M, N > &A) |
| template<typename T , unsigned int M, unsigned N> | |
| __device__ Tensor2CUDA< T, M, N > | warpReduceSumTensor2 (Tensor2CUDA< T, M, N > A) |
| template<typename T , unsigned int M, unsigned N> | |
| __device__ Tensor2CUDA< T, M, N > | blockReduceSumTensor2 (Tensor2CUDA< T, M, N > val) |
| template<typename T , unsigned int M, unsigned N> | |
| __global__ void | BLOCK_REDUCE_KEPLER_TENSOR2 (Tensor2CUDA< T, M, N > *in, Tensor2CUDA< T, M, N > *out, int nTerms) |
| template<typename T , unsigned int M, unsigned int N> | |
| __device__ EulerAngles< T > | getEulerZXZAngles (const Tensor2CUDA< T, M, N > &R) |
| Coresponds to the ZXZ Proper Euler Angles. More... | |
| template<typename T , unsigned int N> | |
| __host__ __device__ Tensor2SymmCUDA< T, N > | operator- (const Tensor2SymmCUDA< T, N > &A, const Tensor2SymmCUDA< T, N > &B) |
| template<typename T , unsigned int N> | |
| __host__ __device__ Tensor2SymmCUDA< T, N > | operator+ (const Tensor2SymmCUDA< T, N > &A, const Tensor2SymmCUDA< T, N > &B) |
| template<typename T , unsigned int N, unsigned int P> | |
| __host__ __device__ Tensor2CUDA< T, N, P > | operator* (const Tensor2SymmCUDA< T, N > &A, const Tensor2CUDA< T, N, P > &B) |
| template<typename T , unsigned int N> | |
| __host__ __device__ Tensor2AsymmCUDA< T, N > | operator- (const Tensor2AsymmCUDA< T, N > &A, const Tensor2AsymmCUDA< T, N > &B) |
| template<typename T , unsigned int N> | |
| __host__ __device__ Tensor2CUDA< T, N, N > | operator- (const Tensor2AsymmCUDA< T, N > &A, const Tensor2CUDA< T, N, N > &B) |
| template<typename T , unsigned int N> | |
| __host__ __device__ Tensor2AsymmCUDA< T, N > | operator+ (const Tensor2AsymmCUDA< T, N > &A, const Tensor2AsymmCUDA< T, N > &B) |
| template<typename T , unsigned int N, unsigned int P> | |
| __host__ __device__ Tensor2CUDA< T, N, P > | operator* (const Tensor2AsymmCUDA< T, N > &A, const Tensor2CUDA< T, N, P > &B) |
| template<typename T , unsigned int N, unsigned int P> | |
| __host__ __device__ Tensor2CUDA< T, N, P > | operator* (const Tensor2CUDA< T, N, P > &A, const Tensor2AsymmCUDA< T, P > &B) |
Variables | |
| H5E_auto2_t | dummyHDFErrorHandler |
| void * | dummyHDFClientData |
| hid_t | hdf_complex_id = getComplexHDFType() |
| enum hpp::CrystalType |
| enum hpp::HardeningLaw |
|
strong |
| enum hpp::SymmetryType |
| void hpp::ABPlusBTransposeAInPlace | ( | const hpp::Tensor2< T > & | A, |
| const hpp::Tensor2< T > & | B, | ||
| hpp::Tensor2< T > & | C | ||
| ) |
| std::vector<T> hpp::abs | ( | const std::vector< T > & | vec | ) |
| void hpp::addAttribute | ( | H5::H5File & | file, |
| const std::string & | attrName, | ||
| T | attrVal | ||
| ) |
| struct hpp::ALIGN | ( | 16 | ) |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
| void hpp::assertCompatibleForMultiplication | ( | const Tensor2< T > & | A, |
| const Tensor2< T > & | B | ||
| ) |
| void hpp::assertCompatibleForOuterProduct | ( | const Tensor2< T > & | A, |
| const Tensor2< T > & | B, | ||
| const Tensor4< T > & | C | ||
| ) |
| __global__ void hpp::BLOCK_REDUCE_KEPLER_GSH_COEFFS | ( | GSHCoeffsCUDA< T > * | in, |
| GSHCoeffsCUDA< T > * | out, | ||
| int | nTerms | ||
| ) |
| __global__ void hpp::BLOCK_REDUCE_KEPLER_TENSOR2 | ( | Tensor2CUDA< T, M, N > * | in, |
| Tensor2CUDA< T, M, N > * | out, | ||
| int | nTerms | ||
| ) |
Adapted from https://devblogs.nvidia.com/parallelforall/faster-parallel-reductions-kepler/
| in | |
| out | |
| N |
|
inline |
Adapted from https://devblogs.nvidia.com/parallelforall/faster-parallel-reductions-kepler/
| val |
|
inline |
Adapted from https://devblogs.nvidia.com/parallelforall/faster-parallel-reductions-kepler/
| val |
| __device__ VecCUDA<T,3> hpp::cartesianToSpherical | ( | const VecCUDA< T, 3 > & | cartVec | ) |
Uses the "mathematics" convention.
| cartVec | the vector in cartesian coordinates |
| std::vector<T> hpp::cartesianToSpherical | ( | const std::vector< T > & | cartVec | ) |
|
inline |
|
inline |
|
inline |
| H5::DataSet hpp::createHDF5Dataset | ( | H5::H5File & | file, |
| const H5std_string & | datasetName, | ||
| std::vector< hsize_t > | dataDims | ||
| ) |
| hid_t hpp::createHDF5Dataset | ( | hid_t | file_id, |
| std::string | datasetName, | ||
| std::vector< hsize_t > | dataDims | ||
| ) |
| H5::DataSet hpp::createHDF5GridOfArrays | ( | H5::H5File & | file, |
| const H5std_string & | datasetName, | ||
| std::vector< hsize_t > | gridDims, | ||
| std::vector< hsize_t > | arrayDims | ||
| ) |
| hid_t hpp::createHDF5GridOfArrays | ( | hid_t | file_id, |
| std::string | datasetName, | ||
| std::vector< hsize_t > | gridDims, | ||
| std::vector< hsize_t > | arrayDims | ||
| ) |
| Tensor4<U> hpp::cubeSymmetricElasticityTensor | ( | U | c11, |
| U | c12, | ||
| U | c44 | ||
| ) |
Construct a fourth order elasticity tensor accounting for cubic symmetry.
| c11 | elastic constant \({C}_11\) |
| c12 | elastic constant \({C}_12\) |
| c44 | elastic constant \({C}_44\) |
| CrystalSolverConfig<U> hpp::defaultConservativeCrystalSolverConfig | ( | ) |
| CrystalInitialConditions<U> hpp::defaultCrystalInitialConditions | ( | ) |
| CrystalProperties<U> hpp::defaultCrystalProperties | ( | ) |
| CrystalSolverConfig<U> hpp::defaultCrystalSolverConfig | ( | ) |
| std::vector< SpectralDatasetID > hpp::defaultCrystalSpectralDatasetIDs | ( | ) |
| Tensor2<U> hpp::deformationGradFromVelGrad | ( | U | t_init, |
| const Tensor2< U > & | F_init, | ||
| const Tensor2< U > & | L, | ||
| U | t | ||
| ) |
| void hpp::destroyConfigRealND | ( | FFTWConfigRealND & | cfg | ) |
| Tensor2<T> hpp::diag2 | ( | const std::vector< T > & | vals | ) |
| Tensor2<T> hpp::diag2 | ( | const std::valarray< T > & | vals | ) |
| Tensor2<T> hpp::EulerZXZRotationMatrix | ( | T | alpha, |
| T | beta, | ||
| T | gamma | ||
| ) |
| Tensor2<T> hpp::EulerZXZRotationMatrix | ( | EulerAngles< T > | angle | ) |
| __device__ Tensor2CUDA<T,3,3> hpp::EulerZXZRotationMatrixCUDA | ( | EulerAngles< T > | angles | ) |
| __device__ Tensor2CUDA<T,3,3> hpp::EulerZXZRotationMatrixCUDA | ( | T | alpha, |
| T | beta, | ||
| T | gamma | ||
| ) |
| void hpp::evaluateSpectralCompressionErrorAxisSlice | ( | std::string | rawDBName, |
| std::string | spectralDBName, | ||
| std::vector< std::string > | dsetBasenames, | ||
| unsigned int | nTermsMax, | ||
| unsigned int | refineMult, | ||
| std::vector< int > | axisSlice, | ||
| std::string | outFilename, | ||
| MPI_Comm | comm | ||
| ) |
Evaluate the error incurred in the spectral reresentation of a database.
| rawDBName | |
| spectralDBName | |
| dsetBasenames | |
| nTermsMax | |
| refineMult | |
| axisSlice | a vector of length N, where N is the dimension of the dataset, containing [axis, otherCoord0, otherCoord1, ..., otherCoordN-1], where axis specifies the axis along which a slice is to be taken, and the values otherCoord0, ..., otherCoordN-1 specify in order what the fixed values of the coordinates should be in the other dimensions. For example, an axis slice of [2, 19, 3, 5] specifies that the slice is to be taken along axis/dimension "2", that is, the third axis. The following numbers then dictate that the fixed coordinates for the other axes should be:
|
| outFilename | |
| comm |
| void hpp::evaluateSpectralCompressionErrorAxisSliceUnified | ( | std::string | rawDBName, |
| std::string | spectralDBName, | ||
| std::vector< std::string > | dsetBasenames, | ||
| unsigned int | nTermsMax, | ||
| unsigned int | refineMult, | ||
| std::vector< int > | axisSlice, | ||
| std::string | outFilename, | ||
| MPI_Comm | comm | ||
| ) |
Evaluate the error incurred in the spectral reresentation of a database.
| rawDBName | |
| spectralDBName | |
| dsetBasenames | |
| nTermsMax | |
| refineMult | |
| axisSlice | a vector of length N, where N is the dimension of the dataset, containing [axis, otherCoord0, otherCoord1, ..., otherCoordN-1], where axis specifies the axis along which a slice is to be taken, and the values otherCoord0, ..., otherCoordN-1 specify in order what the fixed values of the coordinates should be in the other dimensions. For example, an axis slice of [2, 19, 3, 5] specifies that the slice is to be taken along axis/dimension "2", that is, the third axis. The following numbers then dictate that the fixed coordinates for the other axes should be:
|
| outFilename | |
| comm |
| void hpp::evaluateSpectralCompressionErrorFull | ( | std::string | rawDBName, |
| std::string | spectralDBName, | ||
| std::string | errorDBName, | ||
| unsigned int | nTermsMax, | ||
| std::string | outFilename, | ||
| MPI_Comm | comm | ||
| ) |
| void hpp::evaluateSpectralCompressionErrorFullUnified | ( | std::string | rawDBName, |
| std::string | spectralDBName, | ||
| std::string | errorDBName, | ||
| unsigned int | nTermsMax, | ||
| std::string | outFilename, | ||
| MPI_Comm | comm | ||
| ) |
|
inline |
|
inline |
FFTW uses row-major flattening
|
inline |
| T hpp::flatC | ( | std::vector< T > | idx, |
| std::vector< U > | dims | ||
| ) |
| __global__ void hpp::GET_AVERAGE_TCAUCHY | ( | unsigned int | nCrystals, |
| const SpectralCrystalCUDA< T > * | crystals, | ||
| Tensor2CUDA< T, 3, 3 > * | TCauchyGlobal | ||
| ) |
| __global__ void hpp::GET_GSH_COEFFS | ( | const SpectralCrystalCUDA< T > * | crystals, |
| unsigned int | ncrystals, | ||
| GSHCoeffsCUDA< T > * | coeffsPerBlockSums | ||
| ) |
| __global__ void hpp::GET_IDFT_REAL | ( | SpectralDatabaseCUDA< T, N > * | db, |
| unsigned int | dsetIdx, | ||
| unsigned int * | spatialCoord, | ||
| T * | val | ||
| ) |
|
inline |
| hid_t hpp::getComplexHDFType | ( | ) |
| std::string hpp::getComponentSuffix | ( | const std::vector< U > & | componentIdx | ) |
|
inline |
| std::vector< hsize_t > hpp::getDatasetDims | ( | hid_t | dset_id | ) |
|
inline |
| Tensor4<U> hpp::getEshelbyTensorCubicMaterialSphericalInclusion | ( | U | c11, |
| U | c12, | ||
| U | c44, | ||
| U | I0, | ||
| U | I1, | ||
| U | I2 | ||
| ) |
| EulerAngles<T> hpp::getEulerAnglesFromDeformationGradient | ( | const hpp::Tensor2< T > & | F_star | ) |
Get the corresponding Euler angles for the rotation induced by this deformation.
| F_star |
| MPI_Datatype hpp::getEulerAnglesTypeMPI | ( | ) |
| EulerAngles<T> hpp::getEulerZXZAngles | ( | Tensor2< T > | R | ) |
Get Euler angles from rotation matrix.
| R | the rotation matrix |
| __device__ EulerAngles<T> hpp::getEulerZXZAngles | ( | const Tensor2CUDA< T, M, N > & | R | ) |
Coresponds to the ZXZ Proper Euler Angles.
| R | the rotation matrix |
| __device__ void hpp::getExpVal | ( | unsigned int * | spatialCoord, |
| SpectralCoordCUDA< N > & | coord, | ||
| unsigned int | gridDim, | ||
| T | expArgFactor, | ||
| T * | expValRe, | ||
| T * | expValIm | ||
| ) |
| H5::DataType hpp::getHDF5Type | ( | ) |
Get HDF5 equivalent type.
For C++ interface
| hid_t hpp::getHDF5TypeC | ( | ) |
Get HDF5 equivalent type.
For the C interface
| Tensor4<U> hpp::getHomogenizedStiffnessELSC | ( | const std::vector< Tensor4< U >> & | cVec, |
| const std::vector< U > & | vVec, | ||
| const Tensor4< U > & | S | ||
| ) |
Get the homogenized stiffness tensor using the elastic self-consistent method.
| cVec | a vector of stiffness tensors to homogenize |
| vVec | a vector of volumes occupied by the stiffness tensors |
| S | the Eshelby tensor |
| Tensor4<U> hpp::getHomogenizedStiffnessVolumeAverage | ( | const std::vector< Tensor4< U >> & | cVec, |
| const std::vector< U > & | vVec | ||
| ) |
Get the homogenized stiffness tensor using a volume average.
| cVec | a vector of stiffness tensors to homogenize |
| vVec | a vector of volumes occupied by the stiffness tensors |
| HDFReadWriteParamsC hpp::getReadWriteParametersForMultipleHDF5Arrays | ( | hid_t | dset_id, |
| std::vector< hsize_t > | gridOffset, | ||
| std::vector< hsize_t > | arrayDims, | ||
| std::vector< hsize_t > | arrayCount | ||
| ) |
Gets the parameters and ensures that they're compatible with the actual dataset.
| dset_id | |
| gridOffset | |
| arrayDims | |
| arrayCount |
| HDFReadWriteParams hpp::getReadWriteParametersForSingleHDF5Array | ( | H5::DataSet & | dataset, |
| std::vector< hsize_t > | gridOffset, | ||
| std::vector< hsize_t > | arrayDims | ||
| ) |
| HDFReadWriteParamsC hpp::getReadWriteParametersForSingleHDF5Array | ( | hid_t | dset_id, |
| std::vector< hsize_t > | gridOffset, | ||
| std::vector< hsize_t > | arrayDims | ||
| ) |
Gets the parameters and ensures that they're compatible with the actual dataset.
| dset_id | |
| gridOffset | |
| arrayDims |
| __device__ void hpp::getSpectralCrystalDatabaseCoordinate | ( | SpectralCrystalCUDA< T > & | crystal, |
| SpectralDatabaseUnifiedCUDA< T, 4, P > * | db, | ||
| Tensor2CUDA< T, 3, 3 > & | RStretchingTensor, | ||
| T | theta, | ||
| unsigned int * | dbCoord | ||
| ) |
| StretchingTensorDecomposition<T> hpp::getStretchingTensorDecomposition | ( | const Tensor2< T > & | L | ) |
| L | the velocity gradient tensor |
|
inline |
| void hpp::hdfRestoreErrors | ( | ) |
| void hpp::hdfSuppressErrors | ( | ) |
| Tensor2<T> hpp::histogramPoleEqualArea | ( | const std::vector< EulerAngles< T >> & | angles, |
| const std::vector< T > & | planeNormal | ||
| ) |
| Tensor2<T> hpp::identityTensor2 | ( | unsigned int | n | ) |
| void hpp::identityTensor2InPlace | ( | unsigned int | n, |
| Tensor2< T > & | A | ||
| ) |
|
inline |
| void hpp::identityTensor4InPlace | ( | unsigned int | n, |
| Tensor4< T > & | A | ||
| ) |
| Tensor4<U> hpp::isotropicElasticityTensor | ( | U | mu, |
| U | kappa | ||
| ) |
Construct a fourth order isotropic elasticity tensor.
| mu | the elastic shear modulus \(\mu\) |
| kappa | the elastic bulk modulus \(\kappa\) |
| void hpp::loadSpectralDatabase | ( | hpp::HDF5Handler & | infile, |
| std::string | dsetNameCoords, | ||
| std::string | dsetNameCoeffs, | ||
| std::vector< hsize_t > | componentIdx, | ||
| std::vector< std::vector< unsigned int >> & | coordsList, | ||
| std::vector< std::complex< U >> & | coeffList, | ||
| unsigned int | nTerms, | ||
| unsigned int | refineMult = 1 |
||
| ) |
Load a spectral database.
| infile | the file |
| dsetNameCoords | the name of the dataset containing the spectral coordinates |
| dsetNameCoeffs | the name of the dataset containing the corresponding spectral coefficients |
| componentIdx | the vector or tensor index of the component of the quantity to load |
| coordsList | the list of coordinates to return |
| coeffList | the list of coefficients to return |
| nTerms | the number of Fourier terms to load |
| refineMult | the spectral refinement multiplier to use |
|
inline |
| T hpp::max | ( | const std::vector< T > & | vec | ) |
| T hpp::min | ( | const std::vector< T > & | vec | ) |
| bool hpp::MPIAllTrue | ( | bool | condition, |
| MPI_Comm | comm | ||
| ) |
Determine if condition is true for all processes.
| condition | |
| comm |
| T hpp::MPIBroadcastFromRoot | ( | T | rootVal, |
| MPI_Comm | comm | ||
| ) |
| std::vector<T> hpp::MPIBroadcastFromRoot | ( | std::vector< T > | rootVec, |
| MPI_Comm | comm | ||
| ) |
| std::vector<T> hpp::MPIConcatOnRoot | ( | T | localVal, |
| MPI_Comm | comm | ||
| ) |
| std::vector<T> hpp::MPIConcatOnRoot | ( | std::vector< T > | localVec, |
| MPI_Comm | comm | ||
| ) |
| T hpp::MPIMax | ( | const T & | localVal, |
| MPI_Comm | comm | ||
| ) |
| T hpp::MPIMin | ( | const T & | localVal, |
| MPI_Comm | comm | ||
| ) |
| std::vector<T> hpp::MPISplitVectorEvenly | ( | const std::vector< T > & | rootVec, |
| MPI_Comm | comm | ||
| ) |
| std::vector<T> hpp::MPISplitVectorEvenly | ( | const std::vector< T > & | rootVec, |
| MPI_Comm | comm, | ||
| MPI_Datatype | dtype | ||
| ) |
| T hpp::MPISum | ( | const T & | localVal, |
| MPI_Comm | comm | ||
| ) |
| MPI_Datatype hpp::MPIType | ( | ) |
Get the MPI datatype from the C++ type.
| hpp::Tensor2<U> hpp::newtonStressCorrection | ( | const CrystalProperties< U > & | props, |
| const hpp::Tensor2< U > & | A, | ||
| const std::vector< hpp::Tensor2< U >> & | C_alphas, | ||
| const std::vector< U > & | s_alphas, | ||
| const hpp::Tensor2< U > & | T_old, | ||
| const U | DT_max, | ||
| const U | dt | ||
| ) |
See kalidindi1992.NewtonStressCorrection.
| void hpp::newtonStressCorrectionInPlace | ( | const CrystalProperties< U > & | props, |
| const hpp::Tensor2< U > & | A, | ||
| const std::vector< hpp::Tensor2< U >> & | C_alphas, | ||
| const std::vector< U > & | s_alphas, | ||
| const hpp::Tensor2< U > & | T_old, | ||
| const U | DT_max, | ||
| const U | dt, | ||
| std::vector< U > & | dumDgamma_alphas, | ||
| hpp::Tensor4< U > & | dumJ, | ||
| hpp::Tensor2< U > & | dumT_tr, | ||
| hpp::Tensor2< U > & | dumG, | ||
| hpp::Tensor2< U > & | dum2ndOrder, | ||
| hpp::Tensor4< U > & | dum4thOrder, | ||
| hpp::Tensor2< U > & | DT | ||
| ) |
In-place version of hpp.newtonStressCorrection.
| constexpr int hpp::nSlipSystems | ( | CrystalType | crystalType | ) |
| std::vector<T> hpp::ones | ( | unsigned int | n | ) |
| Tensor2<T> hpp::ones2 | ( | unsigned int | n | ) |
| bool hpp::operator!= | ( | const EulerAngles< T > & | l, |
| const EulerAngles< T > & | r | ||
| ) |
| std::vector<T> hpp::operator* | ( | const std::vector< T > & | vec, |
| const T | scalar | ||
| ) |
| std::vector<T> hpp::operator* | ( | const T | scalar, |
| const std::vector< T > & | vec | ||
| ) |
| std::vector<std::vector<T> > hpp::operator* | ( | T | scalar, |
| const std::vector< std::vector< T >> & | veclist | ||
| ) |
| __host__ __device__ Tensor2CUDA<T,M,N> hpp::operator* | ( | const Tensor2CUDA< T, M, N > & | A, |
| T | scalar | ||
| ) |
| __host__ __device__ Tensor2CUDA<T,M,N> hpp::operator* | ( | T | scalar, |
| const Tensor2CUDA< T, M, N > & | A | ||
| ) |
| __host__ __device__ Tensor2CUDA<T,M,P> hpp::operator* | ( | const Tensor2CUDA< T, M, N > & | A, |
| const Tensor2CUDA< T, N, P > & | B | ||
| ) |
| __host__ __device__ VecCUDA<T,M> hpp::operator* | ( | const Tensor2CUDA< T, M, N > & | A, |
| const VecCUDA< T, N > & | x | ||
| ) |
| __host__ __device__ Tensor2CUDA<T,N,P> hpp::operator* | ( | const Tensor2SymmCUDA< T, N > & | A, |
| const Tensor2CUDA< T, N, P > & | B | ||
| ) |
| __host__ __device__ Tensor2CUDA<T,N,P> hpp::operator* | ( | const Tensor2AsymmCUDA< T, N > & | A, |
| const Tensor2CUDA< T, N, P > & | B | ||
| ) |
| __host__ __device__ Tensor2CUDA<T,N,P> hpp::operator* | ( | const Tensor2CUDA< T, N, P > & | A, |
| const Tensor2AsymmCUDA< T, P > & | B | ||
| ) |
| std::vector<T> hpp::operator* | ( | const hpp::Tensor2< T > & | A, |
| const std::vector< T > & | x | ||
| ) |
| std::valarray<T> hpp::operator* | ( | const hpp::Tensor2< T > & | A, |
| const std::valarray< T > & | x | ||
| ) |
| hpp::Tensor2<T> hpp::operator* | ( | const std::vector< T > & | x, |
| const hpp::Tensor2< T > & | A | ||
| ) |
Replicates the numpy behaviour of vec*mat.
| x | the vector |
| A | the matrix |
| void hpp::operator*= | ( | std::vector< T > & | vec, |
| const T | scalar | ||
| ) |
| void hpp::operator*= | ( | Tensor2< T > & | A, |
| const T & | B | ||
| ) |
| void hpp::operator*= | ( | Tensor4< T > & | A, |
| const T & | B | ||
| ) |
| GSHCoeffs<T> hpp::operator+ | ( | const GSHCoeffs< T > & | coeffs1, |
| const GSHCoeffs< T > & | coeffs2 | ||
| ) |
| __host__ __device__ GSHCoeffsCUDA<T> hpp::operator+ | ( | const GSHCoeffsCUDA< T > & | coeffs1, |
| const GSHCoeffsCUDA< T > & | coeffs2 | ||
| ) |
| __host__ __device__ Tensor2CUDA<T,M,N> hpp::operator+ | ( | const Tensor2CUDA< T, M, N > & | A, |
| const Tensor2CUDA< T, M, N > & | B | ||
| ) |
| __host__ __device__ Tensor2SymmCUDA<T,N> hpp::operator+ | ( | const Tensor2SymmCUDA< T, N > & | A, |
| const Tensor2SymmCUDA< T, N > & | B | ||
| ) |
Addition.
| A | first tensor |
| B | second tensor |
| T | the scalar type |
| __host__ __device__ Tensor2AsymmCUDA<T,N> hpp::operator+ | ( | const Tensor2AsymmCUDA< T, N > & | A, |
| const Tensor2AsymmCUDA< T, N > & | B | ||
| ) |
Addition.
| A | first tensor |
| B | second tensor |
| T | the scalar type |
| __host__ __device__ void hpp::operator+= | ( | GSHCoeffsCUDA< T > & | A, |
| const GSHCoeffsCUDA< T > & | B | ||
| ) |
| __host__ __device__ void hpp::operator+= | ( | Tensor2CUDA< T, M, N > & | A, |
| const Tensor2CUDA< T, M, N > & | B | ||
| ) |
| void hpp::operator+= | ( | Tensor2< T > & | A, |
| const T & | B | ||
| ) |
| void hpp::operator+= | ( | Tensor4< T > & | A, |
| const T & | B | ||
| ) |
| std::vector<T> hpp::operator- | ( | const std::vector< T > & | vec1, |
| const std::vector< T > & | vec2 | ||
| ) |
| __host__ __device__ Tensor2CUDA<T,M,N> hpp::operator- | ( | const Tensor2CUDA< T, M, N > & | A, |
| const Tensor2CUDA< T, M, N > & | B | ||
| ) |
| __host__ __device__ Tensor2SymmCUDA<T,N> hpp::operator- | ( | const Tensor2SymmCUDA< T, N > & | A, |
| const Tensor2SymmCUDA< T, N > & | B | ||
| ) |
| __host__ __device__ Tensor2AsymmCUDA<T,N> hpp::operator- | ( | const Tensor2AsymmCUDA< T, N > & | A, |
| const Tensor2AsymmCUDA< T, N > & | B | ||
| ) |
| __host__ __device__ Tensor2CUDA<T,N,N> hpp::operator- | ( | const Tensor2AsymmCUDA< T, N > & | A, |
| const Tensor2CUDA< T, N, N > & | B | ||
| ) |
| A | |
| B |
| T | the scalar type |
| void hpp::operator-= | ( | Tensor2< T > & | A, |
| const T & | B | ||
| ) |
| A | |
| B |
| T | the scalar type |
| void hpp::operator-= | ( | Tensor4< T > & | A, |
| const T & | B | ||
| ) |
| std::vector<T> hpp::operator/ | ( | const std::vector< T > & | vec, |
| T | scalar | ||
| ) |
Elementwise division.
| vec | |
| scalar |
| std::vector<std::vector<T> > hpp::operator/ | ( | const std::vector< std::vector< T >> & | veclist, |
| T | scalar | ||
| ) |
| __device__ VecCUDA<T,N> hpp::operator/ | ( | const VecCUDA< T, N > & | inVec, |
| T | scalar | ||
| ) |
| __host__ __device__ GSHCoeffsCUDA<T> hpp::operator/ | ( | const GSHCoeffsCUDA< T > & | coeffs, |
| T | val | ||
| ) |
| __host__ __device__ Tensor2CUDA<T,M,N> hpp::operator/ | ( | const Tensor2CUDA< T, M, N > & | A, |
| T | scalar | ||
| ) |
| void hpp::operator/= | ( | std::vector< T > & | vec, |
| const T | scalar | ||
| ) |
| void hpp::operator/= | ( | GSHCoeffs< T > & | A, |
| const T | B | ||
| ) |
| __host__ __device__ void hpp::operator/= | ( | Tensor2CUDA< T, M, N > & | A, |
| T | scalar | ||
| ) |
| void hpp::operator/= | ( | Tensor2< T > & | A, |
| const T & | B | ||
| ) |
| void hpp::operator/= | ( | Tensor4< T > & | A, |
| const T & | B | ||
| ) |
| bool hpp::operator< | ( | const SpectralDatasetID & | l, |
| const SpectralDatasetID & | r | ||
| ) |
| std::ostream& hpp::operator<< | ( | std::ostream & | out, |
| const EulerAngles< T > & | angles | ||
| ) |
| std::ostream& hpp::operator<< | ( | std::ostream & | out, |
| const std::vector< T > & | vec | ||
| ) |
| std::ostream& hpp::operator<< | ( | std::ostream & | out, |
| const std::valarray< T > & | vec | ||
| ) |
| std::ostream& hpp::operator<< | ( | std::ostream & | out, |
| const Tensor2CUDA< T, M, N > & | A | ||
| ) |
| std::ostream& hpp::operator<< | ( | std::ostream & | out, |
| const Tensor2< T > & | A | ||
| ) |
| std::ostream& hpp::operator<< | ( | std::ostream & | out, |
| Tensor4< T > & | A | ||
| ) |
| bool hpp::operator== | ( | const SpectralCrystalCUDA< T > & | l, |
| const SpectralCrystalCUDA< T > & | r | ||
| ) |
| bool hpp::operator== | ( | const EulerAngles< T > & | l, |
| const EulerAngles< T > & | r | ||
| ) |
| bool hpp::operator== | ( | const SpectralDatasetID & | l, |
| const SpectralDatasetID & | r | ||
| ) |
Test equality of two tensors.
Uses the arbitrary \(10 \epsilon_{\mathrm{machine}}\) to determine if floats are equal. Test coverage in testTensor2Basics().
| A | first tensor |
| B | second tensor |
| T | the scalar type |
Test equality of two tensors.
Uses the arbitrary \(10 \epsilon_{\mathrm{machine}}\) to determine if floats are equal. Test coverage in testTensor4Basics().
| A | first tensor |
| B | second tensor |
| T | the scalar type |
| Tensor2<T> hpp::outer | ( | const std::vector< T > & | A, |
| const std::vector< T > & | B | ||
| ) |
| Tensor2<T> hpp::outer | ( | const std::valarray< T > & | A, |
| const std::valarray< T > & | B | ||
| ) |
| void hpp::outerInPlace | ( | const std::vector< T > & | A, |
| const std::vector< T > & | B, | ||
| Tensor2< T > & | C | ||
| ) |
| void hpp::outerInPlace | ( | const Tensor2< T > & | A, |
| const Tensor2< T > & | B, | ||
| Tensor4< T > & | C | ||
| ) |
| hpp::Tensor2<U> hpp::partialDGammaPartialT | ( | U | m, |
| U | gammadot_0, | ||
| const hpp::Tensor2< U > & | T, | ||
| const hpp::Tensor2< U > & | S_0_alpha, | ||
| U | s_alpha, | ||
| U | dt | ||
| ) |
See kalidindi1992.PartialDGammaPartialT.
| m | \(m\) |
| gammadot_0 | \(\dot{\gamma}_0\) |
| T | \(\mathbf{T}^*(t_{i+1})\) |
| S_0_alpha | \(\mathbf{S}_0^\alpha\) |
| s_alpha | \(s^\alpha(t_{i+1})\) |
| dt | \(\Delta t\) |
| void hpp::partialDGammaPartialTInPlace | ( | U | m, |
| U | gammadot_0, | ||
| const hpp::Tensor2< U > & | T, | ||
| const hpp::Tensor2< U > & | S_0_alpha, | ||
| U | s_alpha, | ||
| U | dt, | ||
| hpp::Tensor2< U > & | pdgpt | ||
| ) |
In-place version of hpp.partialDGammaPartialT.
| m | \(m\) |
| gammadot_0 | \(\dot{\gamma}_0\) |
| T | \(\mathbf{T}^*(t_{i+1})\) |
| S_0_alpha | \(\mathbf{S}_0^\alpha\) |
| s_alpha | \(s^\alpha(t_{i+1})\) |
| dt | \(\Delta t\) |
| pdgpt |
| Tensor2<U> hpp::planeStrainCompressionDeformationGradient | ( | U | t, |
| U | comp_rate | ||
| ) |
The deformation gradient from a plane strain compression.
The deformation gradient is zero with the addition of \(\mathbf{F}(0,0) = \exp(1.0\dot{\varepsilon} t)\), \(\mathbf{F}(1,1) = 1.0\), \(\mathbf{F}(2,2) = \exp(-1.0\dot{\varepsilon} t)\).
| t | The current time \(t\) |
| comp_rate |
| U | the scalar type |
| Tensor2<U> hpp::planeStrainCompressionVelocityGradient | ( | U | t, |
| U | comp_rate | ||
| ) |
The velocity gradient from a plane strain compression.
The velocity gradient is zero with the addition of \(\mathbf{L}(0,0) = 1.0\dot{\varepsilon}\), \(\mathbf{L}(2,2) = -1.0\dot{\varepsilon}\).
| t | The current time \(t\) |
| comp_rate | the compression rate \( \dot{\varepsilon}\) |
| U | the scalar type |
| hpp::Tensor2<U> hpp::plasticDeformationGradientUpdate | ( | const CrystalProperties< U > & | props, |
| const hpp::Tensor2< U > & | F_p_prev_time, | ||
| const std::vector< U > & | Dgamma_alphas | ||
| ) |
| U hpp::plasticShearingRate | ( | U | tau_alpha, |
| U | s_alpha, | ||
| U | gammadot_0, | ||
| U | m | ||
| ) |
See kalidindi1992.PlasticShearingRate.
| tau_alpha | \(\tau^\alpha\) |
| s_alpha | \(s^\alpha\) |
| gammadot_0 | \(\dot{\gamma}_0\) |
| m | \(m\) |
| Tensor2<U> hpp::plasticSpinTensor | ( | CrystalProperties< U > | mprops, |
| std::vector< U > | gammadot_alphas, | ||
| std::vector< std::vector< U >> | m_alphas, | ||
| std::vector< std::vector< U >> | n_alphas | ||
| ) |
Mihaila 2014 equation 14.
| mprops | |
| gammadot_alphas | |
| m_alphas | an array of \(\mathbf{m}^\alpha\) for each slip system \(\alpha\) |
| n_alphas | an array of \(\mathbf{n}^\alpha\) for each slip system \(\alpha\) |
| EulerAngles<T> hpp::polarToEuler | ( | T | theta, |
| T | phi | ||
| ) |
Convert polar angles to Euler angles.
| theta | the azimuthal angle |
| phi | the zenithal angle |
| FFTWConfigRealND hpp::prepareFFTWConfigRealND | ( | const std::vector< ptrdiff_t > & | realDims, |
| MPI_Comm | comm | ||
| ) |
| T hpp::prod | ( | const std::vector< T > & | vec | ) |
Product of all the entries of a vector.
| vec | the vector |
| EulerAngles<T> hpp::quaternionToEulerAngles | ( | isoi::Quaternion & | q | ) |
| Tensor2<T> hpp::randomRotationTensor | ( | unsigned int | dim, |
| bool | defaultSeed = false |
||
| ) |
| void hpp::randomRotationTensorArvo1992 | ( | std::mt19937 & | gen, |
| Tensor2< T > & | A | ||
| ) |
| void hpp::randomRotationTensorArvo1992 | ( | Tensor2< T > & | A, |
| bool | defaultSeed = false |
||
| ) |
| void hpp::randomRotationTensorInPlace | ( | unsigned int | dim, |
| Tensor2< T > & | A, | ||
| bool | defaultSeed = false |
||
| ) |
Generate a random rotation tensor.
| dim | |
| A | the output tensor to populate |
| defaultSeed | if true, use a default random seed, otherwise generate a truly random one |
| Tensor2<T> hpp::randomRotationTensorStewart1980 | ( | unsigned int | dim, |
| bool | defaultSeed = false |
||
| ) |
Generate a random rotation tensor.
This is translated from scipy/linalg/tests/test_decomp.py The description there, verbatim is: Return a random rotation matrix, drawn from the Haar distribution (the only uniform distribution on SO(n)). The algorithm is described in the paper Stewart, G.W., 'The efficient generation of random orthogonal matrices with an application to condition estimators', SIAM Journal on Numerical Analysis, 17(3), pp. 403-409, 1980. For more information see http://en.wikipedia.org/wiki/Orthogonal_matrix#Randomization
| dim | |
| defaultSeed | if true, use a default random seed, otherwise generate a truly random one |
| void hpp::readHDF5SimpleArray | ( | H5::DataSet & | dataset, |
| HDFReadWriteParams | parms, | ||
| T * | output | ||
| ) |
| void hpp::readHDF5SimpleArray | ( | hid_t | dset_id, |
| hid_t | plist_id, | ||
| HDFReadWriteParamsC | parms, | ||
| T * | output | ||
| ) |
| void hpp::readMultipleHDF5Arrays | ( | hid_t | dset_id, |
| hid_t | plist_id, | ||
| std::vector< hsize_t > | gridOffset, | ||
| std::vector< hsize_t > | arrayDims, | ||
| std::vector< hsize_t > | arrayCount, | ||
| T * | output | ||
| ) |
| void hpp::readSingleHDF5Array | ( | H5::DataSet & | dataset, |
| std::vector< hsize_t > | gridOffset, | ||
| std::vector< hsize_t > | arrayDims, | ||
| T * | output | ||
| ) |
| void hpp::readSingleHDF5Array | ( | hid_t | dset_id, |
| hid_t | plist_id, | ||
| std::vector< hsize_t > | gridOffset, | ||
| std::vector< hsize_t > | arrayDims, | ||
| T * | output | ||
| ) |
| void hpp::readSingleHDF5Array | ( | hid_t | dset_id, |
| hid_t | plist_id, | ||
| std::vector< hsize_t > | arrayDims, | ||
| T * | output | ||
| ) |
| void hpp::readSingleHDF5Value | ( | hid_t | dset_id, |
| hid_t | plist_id, | ||
| std::vector< hsize_t > | gridOffset, | ||
| T * | output | ||
| ) |
| void hpp::readWriteHDF5SimpleArray | ( | H5::DataSet & | dataset, |
| HDFReadWriteParams | parms, | ||
| T * | output, | ||
| HDFReadWrite | mode | ||
| ) |
| void hpp::readWriteHDF5SimpleArray | ( | hid_t | dset_id, |
| hid_t | plist_id, | ||
| HDFReadWriteParamsC | parms, | ||
| T * | output, | ||
| HDFReadWrite | mode | ||
| ) |
| CrystalProperties<U> hpp::rotate | ( | const CrystalProperties< U > & | propsOld, |
| hpp::Tensor2< U > | rotTensor | ||
| ) |
| void hpp::rotationTensorFrom3UniformRandoms | ( | Tensor2< T > & | A, |
| T | x1, | ||
| T | x2, | ||
| T | x3 | ||
| ) |
| void hpp::rotationTensorFrom3UniformRandomsArvo1992 | ( | Tensor2< T > & | A, |
| T | x1, | ||
| T | x2, | ||
| T | x3 | ||
| ) |
| unsigned int hpp::roundUpToMultiple | ( | unsigned int | val, |
| unsigned int | multiple | ||
| ) |
| U hpp::setTimestepByShearRate | ( | U | dt_old, |
| const std::vector< U > & | Dgamma_alphas, | ||
| U | Dgamma_goal | ||
| ) |
The exact method in kalidindi1992.
Equation 38 in kalidindi1992
| dt_old | the old timestep |
| Dgamma_alphas | the strain increments |
| Dgamma_goal | the strain increment goal |
|
inline |
See kalidindi1992.ShearStrainIncrements.
| props | the properties of the material defined in hpp.CrystalProperties |
| T | \(\mathbf{T}^*\) |
| s_alphas | a list of \(s^\alpha(t_{i+1})\) for each slip system \(\alpha\) |
| dt | \(\Delta t\) |
|
inline |
In-place version of hpp.shearStrainIncrements.
| props | the properties of the material defined in hpp.CrystalProperties |
| T | \(\mathbf{T}^*\) |
| s_alphas | a list of \(s^\alpha(t_{i+1})\) for each slip system \(\alpha\) |
| dt | \(\Delta t\) |
| Dgamma_alphas | list of \(\Delta \gamma^\alpha\) for each \(\alpha\) to return |
| std::vector<U> hpp::shearStrainRates | ( | const CrystalProperties< U > & | props, |
| const hpp::Tensor2< U > & | T, | ||
| const std::vector< U > & | s_alphas | ||
| ) |
See kalidindi1992.ShearStrainRates.
| props | the properties of the material defined in hpp.CrystalProperties |
| T | \(\mathbf{T}^*\) |
| s_alphas | a list of \(s^\alpha(t_{i+1})\) for each slip system \(\alpha\) |
|
inline |
In-place version of hpp.shearStrainRates.
| props | the properties of the material defined in hpp.CrystalProperties |
| T | \(\mathbf{T}^*\) |
| s_alphas | a list of \(s^\alpha(t_{i+1})\) for each slip system \(\alpha\) |
| gammadot_alphas | An array of \(\dot{\gamma}^\alpha\) for each slip system \(\alpha\) that is returned |
| Tensor2<U> hpp::simpleCompressionDeformationGradient | ( | U | t, |
| U | comp_rate | ||
| ) |
The deformation gradient from a simple compression.
The deformation gradient is zero with the addition of \(\mathbf{F}(0,0) = \exp(-0.5\dot{\varepsilon} t)\), \(\mathbf{F}(1,1) = \exp(-0.5\dot{\varepsilon} t)\), \(\mathbf{F}(2,2) = \exp(1.0\dot{\varepsilon} t)\).
| t | The current time \(t\) |
| comp_rate | the compression rate \( \dot{\varepsilon}\) |
| U | the scalar type |
| Tensor2<U> hpp::simpleCompressionVelocityGradient | ( | U | t, |
| U | comp_rate | ||
| ) |
The velocity gradient from a simple compression.
The velocity gradient is zero with the addition of \(\mathbf{L}(0,0) = -0.5\dot{\varepsilon}\), \(\mathbf{L}(1,1) = -0.5\dot{\varepsilon}\), \(\mathbf{L}(2,2) = 1.0\dot{\varepsilon}\).
| t | The current time \(t\) |
| comp_rate | the compression rate \( \dot{\varepsilon}\) |
| U | the scalar type |
| Tensor2<U> hpp::simpleShearDeformationGradient | ( | U | t, |
| U | shear_rate | ||
| ) |
The deformation gradient from a simple shear.
The deformation gradient is the identity with the addition of \( \mathbf{F}(0,1) = \dot{\varepsilon} t \).
| t | The current time \(t\) |
| shear_rate | The shear rate \( \dot{\varepsilon}\) |
| U | the scalar type |
| Tensor2<U> hpp::simpleShearVelocityGradient | ( | U | t, |
| U | shear_rate | ||
| ) |
The velocity gradient from a simple shear.
The velocity gradient is zero with the addition of \( \mathbf{L}(0,1) = \dot{\varepsilon} \).
| t | The current time \(t\) |
| shear_rate | The shear rate \( \dot{\varepsilon}\) |
| U | the scalar type |
| __device__ T hpp::slipDeformationResistanceStepSpectralSolver | ( | const CrystalPropertiesCUDA< T, N > * | props, |
| const T | s_alpha, | ||
| const T | gammaSum, | ||
| const T | dt | ||
| ) |
| U hpp::slipDeformationResistanceStepSpectralSolver | ( | const CrystalProperties< U > & | props, |
| const U | s_alpha, | ||
| const U | gammaSum, | ||
| const U | dt | ||
| ) |
From kalidindi2006 Equation 5.
| props | |
| s_alpha | |
| gammaSum | |
| dt |
| std::vector<U> hpp::slipDeformationResistanceUpdate | ( | const CrystalProperties< U > & | props, |
| const hpp::Tensor2< U > & | T_next, | ||
| const std::vector< U > & | s_alphas_current_time, | ||
| const std::vector< U > & | s_alphas_prev_iter, | ||
| const U | dt | ||
| ) |
| U hpp::slipHardeningRate | ( | U | h_0, |
| U | s_s, | ||
| U | a, | ||
| U | s_beta | ||
| ) |
| __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 | ||
| ) |
| __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 | ||
| ) |
| Tensor2<U> hpp::staticDeformationGradient | ( | U | t | ) |
The deformation gradient for no deformation.
The deformation gradient is the identity.
| t | The current time \(t\) |
| U | the scalar type |
| Tensor2<U> hpp::staticVelocityGradient | ( | U | t | ) |
The velocity gradient for no deformation.
The velocity gradient is zero.
| t | The current time \(t\) |
| U | the scalar type |
| hpp::Tensor2<U> hpp::strainHardeningRates | ( | const CrystalProperties< U > & | props, |
| const std::vector< U > & | s_alphas | ||
| ) |
| U hpp::strainHardeningRateVoce | ( | const CrystalProperties< U > & | props, |
| const std::vector< U > & | s_alphas | ||
| ) |
Voce hardening law.
identical for each slip system
| props | |
| s_alphas |
| bool hpp::strainRateLowEnough | ( | const std::vector< U > & | Dgamma_alphas, |
| U | Dgamma_goal | ||
| ) |
| Tensor2<U> hpp::stretchingVelocityGradient | ( | U | theta, |
| U | eDot | ||
| ) |
| hpp::Tensor2<U> hpp::tensorA | ( | hpp::Tensor2< U > | F_p, |
| hpp::Tensor2< U > | F_next | ||
| ) |
See kalidindi1992.TensorA.
| F_p | \(\mathbf{F}^{p}(t_{i})\) |
| F_next | \(\mathbf{F}(t_{i+1})\) |
| U | the scalar type |
| std::vector<hpp::Tensor2<U> > hpp::tensorC_alphas | ( | const hpp::Tensor4< U > & | L, |
| const hpp::Tensor2< U > & | A, | ||
| const std::vector< hpp::Tensor2< U >> & | S_0, | ||
| const unsigned int | n_alpha | ||
| ) |
See kalidindi1992.TensorC_alphas.
| L | \(\mathcal{L}\) |
| A | \(\mathbf{A}\) |
| S_0 | List of \(\mathbf{S}_0^\alpha\) |
| n_alpha | the number of slip systems |
| U | the scalar type |
| void hpp::tensorC_alphasInPlace | ( | const hpp::Tensor4< U > & | L, |
| const hpp::Tensor2< U > & | A, | ||
| const std::vector< hpp::Tensor2< U >> & | S_0, | ||
| const unsigned int | n_alpha, | ||
| hpp::Tensor2< U > & | dumB_alpha, | ||
| std::vector< hpp::Tensor2< U >> & | C_alphas | ||
| ) |
In-place version of hpp.tensorC_alphas.
The input C_alphas do not need to be zeroed
| L | \(\mathcal{L}\) |
| A | \(\mathbf{A}\) |
| S_0 | List of \(\mathbf{S}_0^\alpha\) for each \(\alpha\) |
| n_alpha | the number of slip systems |
| dumB_alpha | a dummy tensor of size 3x3 for holding intermediate values of \(\mathbf{B}^\alpha\) |
| C_alphas | list of \(\mathbf{C}^\alpha\) for each \(\alpha\) to be returned |
| U | the scalar type |
|
inline |
See kalidindi1992.TensorG.
|
inline |
In-place version of hpp.TensorG.
|
inline |
See kalidindi1992.TensorJ.
| props | the properties of the material defined in hpp.CrystalProperties |
| C_alphas | list of \(\mathbf{C}^\alpha\) for each \(\alpha\) |
| s_alphas | a list of \(s^\alpha(t_{i+1})\) for each slip system \(\alpha\) |
| T | \(\mathbf{T}^*(t_{i+1})\) |
| dt | \(\Delta t\) |
|
inline |
In-place version of hpp.tensorJ.
See kalidindi1992.TensorJ.
| props | the properties of the material defined in hpp.CrystalProperties |
| C_alphas | list of \(\mathbf{C}^\alpha\) for each \(\alpha\) |
| s_alphas | a list of \(s^\alpha(t_{i+1})\) for each slip system \(\alpha\) |
| T | \(\mathbf{T}^*(t_{i+1})\) |
| dt | \(\Delta t\) |
| dum2ndOrder | a 3x3 dummy tensor |
| dum4thOrder | a 3x3x3x3 dummy tensor |
| J | a 3x3x3x3 tensor for the output of J |
| boost::python::list hpp::toPythonList | ( | const std::vector< T > & | vec | ) |
| std::vector<T> hpp::toStdVector | ( | const boost::python::list & | list | ) |
| __host__ __device__ Tensor2CUDA<T,M,M> hpp::transformIntoFrame | ( | const Tensor2CUDA< T, M, M > & | A, |
| const Tensor2CUDA< T, M, M > & | Q | ||
| ) |
Transform tensor \( \mathbf{A} \) into the frame given by the columns of \( \mathbf{Q} \).
| A | \( \mathbf{A} \) |
| Q | \( \mathbf{Q} \) |
| __host__ __device__ Tensor2CUDA<T,M,M> hpp::transformIntoFrame | ( | const Tensor2AsymmCUDA< T, M > & | A, |
| const Tensor2CUDA< T, M, M > & | Q | ||
| ) |
| Tensor2<T> hpp::transformIntoFrame | ( | const Tensor2< T > & | A, |
| const Tensor2< T > & | Q | ||
| ) |
Transform tensor \( \mathbf{A} \) into the frame given by the columns of \( \mathbf{Q} \).
| A | \( \mathbf{A} \) |
| Q | \( \mathbf{Q} \) |
| __host__ __device__ Tensor2CUDA<T,M,M> hpp::transformOutOfFrame | ( | const Tensor2CUDA< T, M, M > & | A_star, |
| const Tensor2CUDA< T, M, M > & | Q | ||
| ) |
Transform tensor \( \mathbf{A}^* \) out of the frame given by the columns of \( \mathbf{Q} \).
| A_star | \( \mathbf{A}^* \) |
| Q | \( \mathbf{Q} \) |
| __host__ __device__ Tensor2CUDA<T,M,M> hpp::transformOutOfFrame | ( | const Tensor2AsymmCUDA< T, M > & | A_star, |
| const Tensor2CUDA< T, M, M > & | Q | ||
| ) |
| Tensor2<T> hpp::transformOutOfFrame | ( | const Tensor2< T > & | A_star, |
| const Tensor2< T > & | Q | ||
| ) |
Transform tensor \( \mathbf{A}^* \) out of the frame given by the columns of \( \mathbf{Q} \).
| A_star | \( \mathbf{A}^* \) |
| Q | \( \mathbf{Q} \) |
| Tensor4<T> hpp::transformOutOfFrame | ( | const Tensor4< T > & | E_star, |
| const Tensor2< T > & | Q | ||
| ) |
Transform tensor \( \mathbf{E}^* \) out of the frame given by the columns of \( \mathbf{Q} \).
| E_star | \( \mathbf{E}^* \) |
| Q | \( \mathbf{Q} \) |
| U hpp::TruncatedIFFT4DSingleSquareReal | ( | const unsigned int | spatialDim, |
| const U | expTable[], | ||
| const int | spectralCoordsList[], | ||
| const U | coeffs[], | ||
| const std::vector< unsigned int > & | spatialCoord, | ||
| unsigned int | nTerms | ||
| ) |
AVX implementation of hpp.TruncatedIFFT4DSingleSquareReal.
AVX2 implementation of hpp.TruncatedIFFT4DSingleSquareReal
| spatialDim | |
| expTable | 16/32-byte (float/double) aligned array of real-im pairs from the exp table |
| spectralCoordsList | 16/32-byte (float/double) aligned array of spectral indices |
| coeffs | 16/32-byte (float/double) aligned array of real-im pairs from the coeffs list in the same order as the spectral indices |
| spatialCoord | the spatial coordinate |
| nTerms | the number of Fourier terms to use |
| U hpp::TruncatedIFFT4DSingleSquareReal | ( | const unsigned int | spatialDim, |
| const int | spectralCoordsList[], | ||
| const U | coeffs[], | ||
| const std::vector< unsigned int > & | spatialCoord, | ||
| unsigned int | nTerms | ||
| ) |
| std::complex<U> hpp::TruncatedIFFTNDSingleSquare | ( | const unsigned int | spatialDim, |
| const std::vector< std::complex< U >> & | expTable, | ||
| const std::vector< std::vector< unsigned int >> & | spectralCoordsList, | ||
| const std::vector< std::complex< U >> & | coeffs, | ||
| std::vector< unsigned int > | spatialCoord, | ||
| unsigned int | nTerms | ||
| ) |
TruncatedIFFTND where all dimensions have the same number of points.
AVX implementation of hpp.TruncatedIFFT4DSingleSquareReal. AVX2 implementation of hpp.TruncatedIFFT4DSingleSquareReal
| spatialDim | |
| expTable | 16/32-byte (float/double) aligned array of real-im pairs from the exp table |
| spectralCoordsList | 16/32-byte (float/double) aligned array of spectral indices |
| coeffs | 16/32-byte (float/double) aligned array of real-im pairs from the coeffs list in the same order as the spectral indices |
| spatialCoord | the spatial coordinate |
| nTerms | the number of Fourier terms to use |
| U hpp::TruncatedIFFTNDSingleSquareReal | ( | const unsigned int | spatialDim, |
| const std::vector< std::complex< U >> & | expTable, | ||
| const std::vector< std::vector< unsigned int >> & | spectralCoordsList, | ||
| const std::vector< std::complex< U >> & | coeffs, | ||
| std::vector< unsigned int > | spatialCoord, | ||
| unsigned int | nTerms | ||
| ) |
| U hpp::TruncatedIFFTNDSingleSquareReal | ( | const unsigned int | nDims, |
| const unsigned int | spatialDim, | ||
| const U | expTable[], | ||
| const int | spectralCoordsList[], | ||
| const U | coeffs[], | ||
| const std::vector< unsigned int > & | spatialCoord, | ||
| unsigned int | nTerms | ||
| ) |
| U hpp::TruncatedIFFTNDSingleSquareReal | ( | const unsigned int | nDims, |
| const unsigned int | spatialDim, | ||
| const int | spectralCoordsList[], | ||
| const U | coeffs[], | ||
| const std::vector< unsigned int > & | spatialCoord, | ||
| unsigned int | nTerms | ||
| ) |
| U hpp::TruncatedIFFTNDSingleSquareRealScalar | ( | const unsigned int | nDims, |
| const unsigned int | spatialDim, | ||
| const U | expTable[], | ||
| const int | spectralCoordsList[], | ||
| const U | coeffs[], | ||
| std::vector< unsigned int > | spatialCoord, | ||
| unsigned int | nTerms | ||
| ) |
Scalar implementation of hpp.TruncatedIFFTNDSingleSquareReal.
No guarantees that the compiler won't use vector instructions.
| U hpp::TruncatedIFFTNDSingleSquareRealScalar | ( | const unsigned int | nDims, |
| const unsigned int | spatialDim, | ||
| const int | spectralCoordsList[], | ||
| const U | coeffs[], | ||
| std::vector< unsigned int > | spatialCoord, | ||
| unsigned int | nTerms | ||
| ) |
|
inline |
|
inline |
| std::vector<T> hpp::unflatC | ( | T | flatIdx, |
| std::vector< U > | dims | ||
| ) |
| Tensor4<U> hpp::volumeAverage | ( | const std::vector< Tensor4< U >> & | tVec, |
| const std::vector< U > & | vVec | ||
| ) |
Volume average fourth order tensors.
| tVec | a vector of the tensors |
| vVec | a vector of the volumes in which each tensor holds |
|
inline |
Note that this is valid only on CC 3.0 and above. Adapted from https://devblogs.nvidia.com/parallelforall/faster-parallel-reductions-kepler/
| val |
|
inline |
Note that this is valid only on CC 3.0 and above. Adapted from https://devblogs.nvidia.com/parallelforall/faster-parallel-reductions-kepler/
| val |
| void hpp::writeHDF5SimpleArray | ( | H5::DataSet & | dataset, |
| HDFReadWriteParams | parms, | ||
| T * | output | ||
| ) |
| void hpp::writeHDF5SimpleArray | ( | hid_t | dset_id, |
| hid_t | plist_id, | ||
| HDFReadWriteParamsC | parms, | ||
| T * | output | ||
| ) |
| void hpp::writeMultipleHDF5Arrays | ( | hid_t | dset_id, |
| hid_t | plist_id, | ||
| std::vector< hsize_t > | gridOffset, | ||
| std::vector< hsize_t > | arrayDims, | ||
| std::vector< hsize_t > | arrayCount, | ||
| T * | output | ||
| ) |
| void hpp::writePoleHistogramHistoryHDF5 | ( | H5::H5File & | outfile, |
| const std::string & | dsetBaseName, | ||
| std::vector< Tensor2< T >> & | history, | ||
| const std::vector< T > & | pole | ||
| ) |
| outfile | |
| dsetBaseName | |
| history | |
| pole |
| void hpp::writeSingleHDF5Array | ( | H5::DataSet & | dataset, |
| std::vector< hsize_t > | gridOffset, | ||
| std::vector< hsize_t > | arrayDims, | ||
| T * | output | ||
| ) |
| void hpp::writeSingleHDF5Array | ( | hid_t | dset_id, |
| hid_t | plist_id, | ||
| std::vector< hsize_t > | gridOffset, | ||
| std::vector< hsize_t > | arrayDims, | ||
| T * | output | ||
| ) |
| void hpp::writeSingleHDF5Array | ( | hid_t | dset_id, |
| hid_t | plist_id, | ||
| std::vector< hsize_t > | arrayDims, | ||
| T * | output | ||
| ) |
| void hpp::writeSingleHDF5Value | ( | hid_t | dset_id, |
| hid_t | plist_id, | ||
| std::vector< hsize_t > | gridOffset, | ||
| T * | output | ||
| ) |
| void hpp::writeVectorToHDF5Array | ( | H5::H5File & | file, |
| const std::string & | dsetName, | ||
| std::vector< T > & | vec | ||
| ) |
| void * hpp::dummyHDFClientData |
| H5E_auto2_t hpp::dummyHDFErrorHandler |
| hid_t hpp::hdf_complex_id = getComplexHDFType() |