JDFTx  1.7.0
NonlinearPCMeval::Dielectric Struct Reference

Helper class for dielectric portion of NonlinearPCM. More...

#include <PCM_internal.h>

## Public Member Functions

Dielectric (bool linear, double T, double Nmol, double pMol, double epsBulk, double epsInf)

__hostanddev__ void calcFunctions (double eps, double &frac, double &frac_epsSqHlf, double &logsinch) const
Calculate the various nonlinear functions of epsilon used in calculating the free energy and its derivatives.

__hostanddev__ void compute (double epsSqHlf, double &F, double &F_epsSqHlf, double &ChiEff, double &ChiEff_epsSqHlf) const
Compute the nonlinear functions in the free energy and effective susceptibility (p/eps) prior to scaling by shape function.

__hostanddev__ void freeEnergy_calc (size_t i, vector3< const double * > eps, const double *s, vector3< double * > p, double *A, vector3< double * > A_eps, double *A_s) const
Given shape function s and gradient of phi eps, compute polarization p, free energy density A and accumulate its derivatives.

void freeEnergy (size_t N, vector3< const double * > eps, const double *s, vector3< double * > p, double *A, vector3< double * > A_eps, double *A_s) const

void freeEnergy_gpu (size_t N, vector3< const double * > eps, const double *s, vector3< double * > p, double *A, vector3< double * > A_eps, double *A_s) const

__hostanddev__ void convertDerivative_calc (size_t i, vector3< const double * > eps, const double *s, vector3< const double * > A_p, vector3< double * > A_eps, double *A_s) const
Propagate derivative A_p and accumulate to A_eps and A_s.

void convertDerivative (size_t N, vector3< const double * > eps, const double *s, vector3< const double * > A_p, vector3< double * > A_eps, double *A_s) const

void convertDerivative_gpu (size_t N, vector3< const double * > eps, const double *s, vector3< const double * > A_p, vector3< double * > A_eps, double *A_s) const

__hostanddev__ double x_from_eps (double eps) const
Calculate x = pMol E / T given eps.

__hostanddev__ double eps_from_x (double x) const
Invert x_from_eps() using a bisection method. Note that x must be positive and finite.

__hostanddev__ void phiToState_calc (size_t i, vector3< const double * > Dphi, const double *s, const RadialFunctionG &gLookup, bool setState, vector3< double * > eps, double *epsilon) const
Given shape function s and gradient of phi Dphi, calculate state vector eps if setState=true or effective epsilon if setState=false.

void phiToState (size_t N, vector3< const double * > Dphi, const double *s, const RadialFunctionG &gLookup, bool setState, vector3< double * > eps, double *epsilon) const

void phiToState_gpu (size_t N, vector3< const double * > Dphi, const double *s, const RadialFunctionG &gLookup, bool setState, vector3< double * > eps, double *epsilon) const

## Public Attributes

bool linear
whether dielectric is linearized

double Np

double pByT

double NT
N*p, p/T and N*T where N is molecular density and p is molecular dipole.

double alpha

double X
dipole correlation factor and chi*T/p^2 where chi is the molecular susceptibility

## Detailed Description

Helper class for dielectric portion of NonlinearPCM.

The documentation for this struct was generated from the following file: