JDFTx  1.7.0
IdealGasPomega Class Reference

#include <IdealGasPomega.h>

Inheritance diagram for IdealGasPomega:
IdealGas IdealGasMuEps IdealGasPsiAlpha

Public Member Functions

 IdealGasPomega (const FluidMixture *, const FluidComponent *, const SO3quad &quad, const TranslationOperator &trans, unsigned nIndepOverride=0)
void initState (const ScalarField *Vex, ScalarField *indep, double scale, double Elo, double Ehi) const
void getDensities (const ScalarField *indep, ScalarField *N, vector3<> &P0) const
 Given the independent variables indep, compute the site densities N and G=0 component of polarization density P.
double compute (const ScalarField *indep, const ScalarField *N, ScalarField *Phi_N, const double Nscale, double &Phi_Nscale) const
void convertGradients (const ScalarField *indep, const ScalarField *N, const ScalarField *Phi_N, const vector3<> &Phi_P0, ScalarField *Phi_indep, const double Nscale) const
- Public Member Functions inherited from IdealGas
 IdealGas (int nIndep, const FluidMixture *, const FluidComponent *)
 Initialize and register to be used with excess functional fex in its fluidMixture.
double get_Nbulk ()
void overrideBulk (double Nbulk, double mu)
 Override the values for bulk density and chemical potential set by fluidMixture::initialize()

Protected Member Functions

virtual string representationName () const
virtual void initState_o (int o, const matrix3<> &rot, double scale, const ScalarField &Eo, ScalarField *state) const
virtual void getDensities_o (int o, const matrix3<> &rot, const ScalarField *state, ScalarField &logPomega_o) const
virtual void convertGradients_o (int o, const matrix3<> &rot, const ScalarField &Phi_logPomega_o, ScalarField *Phi_state) const

Protected Attributes

const SO3quadquad
 quadrature for orientation integral
const TranslationOperatortrans
 translation operator for orientation integral
vector3 pMol
 molecule dipole moment in reference frame
int oStart
int oStop
 portion of orientation loop handled by current process
- Protected Attributes inherited from IdealGas
double Nbulk
 equilibirum density of this molecule in the bulk mixture
double mu
 chemical potential for this molecule
double corrPrefac
 prefactor for dipolar rotational correlations

Additional Inherited Members

- Public Attributes inherited from IdealGas
const int nIndep
 Number of scalar fields used as independent variables.
const Moleculemolecule
 Associated molecule geometry.
const GridInfogInfo
 grid specifications
const double T
ScalarFieldArray V
 external site potentials

Detailed Description

IdealGas for polyatomic molecules with the orientation densities 'P_omega' as independent variables This is also the base class for IdealGas's which used compressed representations of Pomega

Constructor & Destructor Documentation

◆ IdealGasPomega()

IdealGasPomega::IdealGasPomega ( const FluidMixture ,
const FluidComponent ,
const SO3quad quad,
const TranslationOperator trans,
unsigned  nIndepOverride = 0 

Initialize and associate with excess functional fex (and its fluid mixture) Also specify the orientation quadrature and translation operator used for the orientation integrals

Member Function Documentation

◆ compute()

double IdealGasPomega::compute ( const ScalarField indep,
const ScalarField N,
ScalarField Phi_N,
const double  Nscale,
double &  Phi_Nscale 
) const

Return the ideal gas free energy PhiNI = T Int N - T S + (V-mu).N (where S is implementation dependent) and accumulate the gradients w.r.t the site densities Nscale is the factor by which the site densities/moments were scaled after getDensities() in order to implement fixed N / charge neutrality. Accumulate explicit gradients of PhiNI w.r.t Nscale in Phi_Nscale; the implicit dependence through N is handled by FluidMixture.

Implements IdealGas.

◆ convertGradients()

void IdealGasPomega::convertGradients ( const ScalarField indep,
const ScalarField N,
const ScalarField Phi_N,
const vector3<> &  Phi_P0,
ScalarField Phi_indep,
const double  Nscale 
) const

Compute Phi_indep, the total gradients w.r.t indep, given th egradients of the entire functional w.r.t site densities, Phi_N, and polarization density G=0 Phi_P0. Nscale will be the same as in compute()

Implements IdealGas.

◆ initState()

void IdealGasPomega::initState ( const ScalarField Vex,
ScalarField indep,
double  scale,
double  Elo,
double  Ehi 
) const

Create an initial guess for the indep, in presence of V and the extra potential Vex The initial guess is typically taken to be scale times what would generate the equilibrium ideal gas density upto caps Elo and Ehi on the molecule energy configurations considered. This would also be a good place to logPrintf useful statistics about the potential for debugging

Implements IdealGas.

Reimplemented in IdealGasPsiAlpha.

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