JDFTx  1.5.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Coulomb_internal.h File Reference

Shared inline functions / internal declarations for Coulomb framework. More...

#include <core/matrix3.h>
#include <core/Spline.h>
#include <gsl/gsl_integration.h>

Classes

struct  CoulombPeriodic_calc
 Periodic coulomb interaction (4 pi/G^2) More...
 
struct  CoulombSlab_calc
 Slab-truncated coulomb interaction. More...
 
struct  CoulombSpherical_calc
 Sphere-truncated coulomb interaction. More...
 
struct  Cbar
 Compute Cbar_k^sigma - the gaussian convolved cylindrical coulomb kernel - by numerical quadrature. More...
 
struct  Cbar_k_sigma
 Look-up table for Cbar_k^sigma(rho) for specific values of k and sigma. More...
 
struct  ExchangePeriodic_calc
 Periodic exchange. More...
 
struct  ExchangePeriodicScreened_calc
 Erfc-screened Periodic exchange. More...
 
struct  ExchangeSpherical_calc
 Spherical-truncated exchange. More...
 
struct  ExchangeSphericalScreened_calc
 Erfc-screened Spherical-truncated exchange. More...
 
struct  ExchangeSlab_calc
 Slab-truncated exchange. More...
 

Macros

#define wsTruncationPaper   "R. Sundararaman and T.A. Arias, Phys. Rev. B 87, 165122 (2013)"
 
#define ionMarginMessage   "Expand unit cell, or if absolutely sure, reduce coulomb-truncation-ion-margin.\n"
 

Functions

void coulombAnalytic_gpu (vector3< int > S, const matrix3<> &GGT, const CoulombPeriodic_calc &calc, complex *data)
 
void coulombAnalytic_gpu (vector3< int > S, const matrix3<> &GGT, const CoulombSlab_calc &calc, complex *data)
 
void coulombAnalytic_gpu (vector3< int > S, const matrix3<> &GGT, const CoulombSpherical_calc &calc, complex *data)
 
void coulombAnalytic (vector3< int > S, const matrix3<> &GGT, const CoulombPeriodic_calc &calc, complex *data)
 
void coulombAnalytic (vector3< int > S, const matrix3<> &GGT, const CoulombSlab_calc &calc, complex *data)
 
void coulombAnalytic (vector3< int > S, const matrix3<> &GGT, const CoulombSpherical_calc &calc, complex *data)
 
__hostanddev__ double erf_by_x (double x)
 Compute erf(x)/x (with x~0 handled properly)
 
__hostanddev__ double erfcTilde (double Gsq, double omegaSq)
 Radial fourier transform of erfc(omega r)/r (not valid at G=0)
 
void exchangeAnalytic (vector3< int > S, const matrix3<> &GGT, const ExchangePeriodic_calc &calc, complex *data, const vector3<> &kDiff, double Vzero, double thresholdSq)
 
void exchangeAnalytic (vector3< int > S, const matrix3<> &GGT, const ExchangePeriodicScreened_calc &calc, complex *data, const vector3<> &kDiff, double Vzero, double thresholdSq)
 
void exchangeAnalytic (vector3< int > S, const matrix3<> &GGT, const ExchangeSpherical_calc &calc, complex *data, const vector3<> &kDiff, double Vzero, double thresholdSq)
 
void exchangeAnalytic (vector3< int > S, const matrix3<> &GGT, const ExchangeSphericalScreened_calc &calc, complex *data, const vector3<> &kDiff, double Vzero, double thresholdSq)
 
void exchangeAnalytic (vector3< int > S, const matrix3<> &GGT, const ExchangeSlab_calc &calc, complex *data, const vector3<> &kDiff, double Vzero, double thresholdSq)
 
void exchangeAnalytic_gpu (vector3< int > S, const matrix3<> &GGT, const ExchangePeriodic_calc &calc, complex *data, const vector3<> &kDiff, double Vzero, double thresholdSq)
 
void exchangeAnalytic_gpu (vector3< int > S, const matrix3<> &GGT, const ExchangePeriodicScreened_calc &calc, complex *data, const vector3<> &kDiff, double Vzero, double thresholdSq)
 
void exchangeAnalytic_gpu (vector3< int > S, const matrix3<> &GGT, const ExchangeSpherical_calc &calc, complex *data, const vector3<> &kDiff, double Vzero, double thresholdSq)
 
void exchangeAnalytic_gpu (vector3< int > S, const matrix3<> &GGT, const ExchangeSphericalScreened_calc &calc, complex *data, const vector3<> &kDiff, double Vzero, double thresholdSq)
 
void exchangeAnalytic_gpu (vector3< int > S, const matrix3<> &GGT, const ExchangeSlab_calc &calc, complex *data, const vector3<> &kDiff, double Vzero, double thresholdSq)
 
__hostanddev__ void multRealKernel_calc (size_t i, const vector3< int > &iG, const vector3< int > &S, const double *kernel, complex *data)
 Multiply a complexScalarFieldTilde's data by a RealKernel (real-symmetry reduced)
 
void multRealKernel (vector3< int > S, const double *kernel, complex *data)
 
void multRealKernel_gpu (vector3< int > S, const double *kernel, complex *data)
 
__hostanddev__ void multTransformedKernel_calc (size_t i, const vector3< int > &iG, const vector3< int > &S, const double *kernel, complex *data, const vector3< int > &offset)
 Multiply a complexScalarFieldTilde's data by a kernel sampled with offset and rotation by rot.
 
void multTransformedKernel (vector3< int > S, const double *kernel, complex *data, const vector3< int > &offset)
 
void multTransformedKernel_gpu (vector3< int > S, const double *kernel, complex *data, const vector3< int > &offset)
 

Detailed Description

Shared inline functions / internal declarations for Coulomb framework.