JDFTx  1.7.0
Classical and joint DFT

Files

file  Fex_LJ.h
 Lennard-Jones fluids.
 
file  Fex_ScalarEOS.h
 
file  Fex_ScalarEOS_internal.h
 
file  MixedFMT.h
 Sphere mixture functional via (optionally soft) Fundamental Measure Theory.
 
file  MixedFMT_internal.h
 
file  S2quad.h
 

Classes

class  ConvCoupling
 Convolution coupling between electrons and fluids. More...
 
class  ErfFMTweight
 Utility for creating (optionally soft) FMT weight functions. More...
 
class  Fex
 Abstract base class for excess functionals. More...
 
class  Fex_H2O_BondedVoids
 Water 'BondedVoids' excess functional from [34]. More...
 
class  Fex_H2O_FittedCorrelations
 Water excess functional from [17]. More...
 
class  Fex_LJ
 Lennard Jones fluid treated as a mean field perturbation about a soft FMT core. More...
 
class  Fmix_LJ
 Lennard-Jones interaction functional. More...
 
class  Fmix_GaussianKernel
 Gaussian Kernel interaction functional. More...
 
struct  ScalarEOS
 Abstract base class for the equation of state evaluator for ScalarEOS functionals. More...
 
class  Fex_ScalarEOS
 Scalar EOS functional from [31] and its extension from [36]. More...
 
struct  JeffereyAustinEOS
 Jefferey-Austin equation of state for water. More...
 
struct  TaoMasonEOS
 Tao-Mason equation of state for moderately polar liquids. More...
 
struct  ScalarEOS_eval
 Base class for equation of state evaluators. More...
 
struct  JeffereyAustinEOS_eval
 Jefferey-Austin Equation of state for water. More...
 
struct  TaoMasonEOS_eval
 Tao-Mason equation of state [F. Tao and E. A. Mason, J. Chem. Phys. 100, 9075 (1994)]. More...
 
class  FluidMixture
 Mixture of fluids that provides the total free energy functional for minimization Constructing Fex and IdealGas objects require a FluidMixture reference, to which they add themselves. The FluidMixture object is ready to use after initialize() is called. More...
 
class  Fmix
 Abstract base class for mixing functionals: interactions between fluids (beyond hard sphere and scaled coulomb) More...
 
class  IdealGas
 Abstract base class for an IdealGas evaluator. More...
 
class  IdealGasMonoatomic
 IdealGas for monoatomic molecules (i.e. no orientation integral) More...
 
class  IdealGasMuEps
 IdealGas for polyatomic molecules with the monopole-dipole 'MuEps' independent variables. More...
 
class  IdealGasPomega
 
class  IdealGasPsiAlpha
 IdealGas for polyatomic molecules with the effective potential 'psi_alpha' independent variables. More...
 
struct  S2quad
 Abstract base class for a S2 quadrature definition (used to generate the SO3 qudarature) More...
 
class  EulerProduct
 Outer-product quadrature on ZYZ euler angles. More...
 
class  Tetrahedron
 Tetrahedron rotation group. More...
 
class  Octahedron
 Octahedron rotation group. More...
 
class  Icosahedron
 Icosahedron rotation group. More...
 
class  S2_7design_24
 Spherical 7-design with 24 nodes. More...
 
class  S2_8design_36
 Spherical 8-design with 36 nodes. More...
 
class  S2_9design_48
 Spherical 9-design with 48 nodes. More...
 
class  S2_10design_60
 Spherical 10-design with 60 nodes. More...
 
class  S2_11design_70
 Spherical 11-design with 70 nodes. More...
 
class  S2_12design_84
 Spherical 12-design with 84 nodes. More...
 
class  S2_13design_94
 Spherical 13-design with 94 nodes. More...
 
class  S2_14design_108
 Spherical 14-design with 108 nodes. More...
 
class  S2_15design_120
 Spherical 15-design with 120 nodes. More...
 
class  S2_16design_144
 Spherical 16-design with 144 nodes. More...
 
class  S2_17design_156
 Spherical 17-design with 156 nodes. More...
 
class  S2_18design_180
 Spherical 18-design with 180 nodes. More...
 
class  S2_19design_204
 Spherical 19-design with 204 nodes. More...
 
class  S2_20design_216
 Spherical 20-design with 216 nodes. More...
 
class  S2_21design_240
 Spherical 21-design with 240 nodes. More...
 
class  SO3quad
 Quadrature for SO(3) More...
 
class  VDWCoupling
 Van der Waals coupling between atoms from electronic DFT and fluid density fields. More...
 

Enumerations

enum  S2quadType {
  QuadEuler , QuadTetrahedron , QuadOctahedron , QuadIcosahedron ,
  Quad7design_24 , Quad8design_36 , Quad9design_48 , Quad10design_60 ,
  Quad11design_70 , Quad12design_84 , Quad13design_94 , Quad14design_108 ,
  Quad15design_120 , Quad16design_144 , Quad17design_156 , Quad18design_180 ,
  Quad19design_204 , Quad20design_216 , Quad21design_240
}
 List of available quadratures.
 

Functions

void setLJatt (RadialFunctionG &kernel, const GridInfo &gInfo, double eps, double sigma)
 Initialize kernel to the attarctive part of a Lennard-Jones potential.
 
double PhiFMT (const ScalarField &n0, const ScalarField &n1, const ScalarField &n2, const ScalarFieldTilde &n3tilde, const ScalarFieldTilde &n1vTilde, const ScalarFieldTilde &n2mTilde, ScalarField &grad_n0, ScalarField &grad_n1, ScalarField &grad_n2, ScalarFieldTilde &grad_n3tilde, ScalarFieldTilde &grad_n1vTilde, ScalarFieldTilde &grad_n2mTilde)
 
double phiFMTuniform (double n0, double n1, double n2, double n3, double &grad_n0, double &grad_n1, double &grad_n2, double &grad_n3)
 
double PhiBond (double Rhm, double scale, const ScalarField &n0mol, const ScalarField &n2, const ScalarFieldTilde &n3tilde, ScalarField &grad_n0mol, ScalarField &grad_n2, ScalarFieldTilde &grad_n3tilde)
 
double phiBondUniform (double Rhm, double scale, double n0mol, double n2, double n3, double &grad_n0mol, double &grad_n2, double &grad_n3)
 
__hostanddev__ void tensorKernel_calc (int i, const vector3< int > iG, bool nyq, const matrix3<> G, const complex *nTilde, tensor3< complex * > mTilde)
 Calculate tensor derivative.
 
__hostanddev__ void tensorKernel_grad_calc (int i, const vector3< int > iG, bool nyq, const matrix3<> G, tensor3< const complex * > grad_mTilde, complex *grad_nTilde)
 Propagate gradients with respect to tensor derivative.
 
__hostanddev__ double mul_vTmv (const tensor3<> &m, const vector3<> &v)
 Compute vT*m*v for a vector v and a symmetric traceless tensor m.
 
__hostanddev__ void mul_vTmv_grad (const double grad_mul, const tensor3<> &m, const vector3<> &v, tensor3<> &grad_m, vector3<> &grad_v)
 Accumulate gradient of above function.
 
__hostanddev__ double trace_cubed (const tensor3<> &m)
 Compute tr(m^3) for a symmetric traceless tensor m (See ~/Water1D/FMT_tensorWeights.m for expressions)
 
__hostanddev__ void trace_cubed_grad (const double grad_trace, const tensor3<> &m, tensor3<> &grad_m)
 Accumulate gradient of above function.
 
__hostanddev__ double WB_f2 (double x, double &f2_x)
 White-Bear mark II FMT scale function f2 (and derivative) [replace with f2(x)=f3(x)=1 for standard Tarazona FMT]:
 
__hostanddev__ double WB_f3 (double x, double &f3_x)
 White-Bear mark II FMT scale function f3 (and derivative) [replace with f2(x)=f3(x)=1 for standard Tarazona FMT]:
 
__hostanddev__ double phiFMT_calc (int i, const double *n0arr, const double *n1arr, const double *n2arr, const double *n3arr, vector3< const double * > n1vArr, vector3< const double * > n2vArr, tensor3< const double * > n2mArr, double *grad_n0arr, double *grad_n1arr, double *grad_n2arr, double *grad_n3arr, vector3< double * > grad_n1vArr, vector3< double * > grad_n2vArr, tensor3< double * > grad_n2mArr)
 Calculate FMT functional.
 
__hostanddev__ double phiBond_calc (int i, double Rhm, double scale, const double *n0arr, const double *n2arr, const double *n3arr, vector3< const double * > n2vArr, double *grad_n0arr, double *grad_n2arr, double *grad_n3arr, vector3< double * > grad_n2vArr)
 Calculate bonding term.
 

Detailed Description

Function Documentation

◆ PhiBond()

double PhiBond ( double  Rhm,
double  scale,
const ScalarField n0mol,
const ScalarField n2,
const ScalarFieldTilde n3tilde,
ScalarField grad_n0mol,
ScalarField grad_n2,
ScalarFieldTilde grad_n3tilde 
)

Bonding correction for tangentially bonded hard spheres Rhm = Ra Rb /(Ra+Rb) is the harmonic sum of the sphere radii scale is a scale factor for the correction (ratio of bond multiplicity to number of hard sphere sites in molecule) n0mol is the suitably weighted partial measure-0 weighted density of this molecule n2 and n3 are the usual FMT weighted densities. Returns the free energy/T of bonding and accumulates gradients in grad_n* Note that n3 is in fourier space for faster computation of n2v = -gradient n3

◆ phiBondUniform()

double phiBondUniform ( double  Rhm,
double  scale,
double  n0mol,
double  n2,
double  n3,
double &  grad_n0mol,
double &  grad_n2,
double &  grad_n3 
)

Returns the free energy density/T and accumulates derivatives corresponding to PhiBond() for the uniform fluid

◆ PhiFMT()

double PhiFMT ( const ScalarField n0,
const ScalarField n1,
const ScalarField n2,
const ScalarFieldTilde n3tilde,
const ScalarFieldTilde n1vTilde,
const ScalarFieldTilde n2mTilde,
ScalarField grad_n0,
ScalarField grad_n1,
ScalarField grad_n2,
ScalarFieldTilde grad_n3tilde,
ScalarFieldTilde grad_n1vTilde,
ScalarFieldTilde grad_n2mTilde 
)

Returns the ‘White-Bear mark II’ mixed sphere free energy/T given the weighted densities n* and accumulates the gradients in grad_n*. Note that n1v and n2m are scalar weighted densities, from which the vector and tensor weighted densities are obtained internally by a gradient and traceless tensor second derivative respectively. n2v is obtained as the negative gradient of n3. This is why n3, n1v and n2m are passed in reciprocal space: they need fourier space processing for gradients etc.

◆ phiFMTuniform()

double phiFMTuniform ( double  n0,
double  n1,
double  n2,
double  n3,
double &  grad_n0,
double &  grad_n1,
double &  grad_n2,
double &  grad_n3 
)

Returns the free energy density/T and accumulates derivatives corresponding to PhiFMT() for the uniform fluid