JDFTx  1.4.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
FluidSolver Struct Referenceabstract

Abstract base class for the fluid solvers. More...

#include <FluidSolver.h>

Inheritance diagram for FluidSolver:
PCM LinearPCM NonlinearPCM SaLSA

Public Member Functions

 FluidSolver (const Everything &e, const FluidSolverParams &fsp)
 Any non-electrostatic contributions to A_rhoExplicitTilde (removed from dumped d_fluid / d_tot) More...
 
double ionWidthMuCorrection () const
 correction to electron chemical potential due to finite ion width in fluid interaction
 
bool useGummel () const
 
void set (const ScalarFieldTilde &rhoExplicitTilde, const ScalarFieldTilde &nCavityTilde)
 
double get_Adiel_and_grad (ScalarFieldTilde *Adiel_rhoExplicitTilde=0, ScalarFieldTilde *Adiel_nCavityTilde=0, IonicGradient *extraForces=0) const
 
virtual double bulkPotential ()
 
virtual void dumpDensities (const char *filenamePattern) const
 
virtual void dumpDebug (const char *filenamePattern) const
 
virtual bool prefersGummel () const =0
 Specify whether fluid prefers a gummel loop (true) or is minimized each time (false)
 
virtual void loadState (const char *filename)=0
 Initialize fluid state from a file.
 
virtual void saveState (const char *filename) const =0
 Save fluid state to a file.
 
virtual void minimizeFluid ()=0
 Minimize fluid side (holding explicit electronic system fixed)
 

Public Attributes

const Everythinge
 
const GridInfogInfo
 
const FluidSolverParamsfsp
 
double epsBulk
 
double epsInf
 bulk dielectric constants of fluid
 
double k2factor
 prefactor to screening term (0 => no ionic screening)
 
std::vector< std::vector
< vector3<> > > 
atpos
 
ScalarFieldTilde A_rhoNonES
 atomic positions per species in the relevant coordinate system (depending on embedding option)
 

Protected Member Functions

virtual void set_internal (const ScalarFieldTilde &rhoExplicitTilde, const ScalarFieldTilde &nCavityTilde)=0
 Fluid-dependent implementation of set()
 
virtual double get_Adiel_and_grad_internal (ScalarFieldTilde &Adiel_rhoExplicitTilde, ScalarFieldTilde &Adiel_nCavityTilde, IonicGradient *extraForces) const =0
 Fluid-dependent implementation of get_Adiel_and_grad()
 

Detailed Description

Abstract base class for the fluid solvers.

Constructor & Destructor Documentation

FluidSolver::FluidSolver ( const Everything e,
const FluidSolverParams fsp 
)

Any non-electrostatic contributions to A_rhoExplicitTilde (removed from dumped d_fluid / d_tot)

Abstract base class constructor - do not use directly - see FluidSolver::createSolver

Member Function Documentation

virtual void FluidSolver::dumpDebug ( const char *  filenamePattern) const
inlinevirtual

Dump fluid debugging quantities (eg. fluid potential and effective electron density for 3.0) the provided pattern will have a single s which may be substituted Fluid solver implementations may override to dump fluid debug stuff, no dumping by default

Reimplemented in PCM.

virtual void FluidSolver::dumpDensities ( const char *  filenamePattern) const
inlinevirtual

Dump relevant fluid densities (eg. NO and NH) to file(s) the provided pattern will have a single s which may be substituted Fluid solver implementations may override to dump fluid densities, no dumping by default

Reimplemented in NonlinearPCM, SaLSA, LinearPCM, and PCM.

double FluidSolver::get_Adiel_and_grad ( ScalarFieldTilde Adiel_rhoExplicitTilde = 0,
ScalarFieldTilde Adiel_nCavityTilde = 0,
IonicGradient extraForces = 0 
) const

Compute gradients with respect to electronic side variables (if non-null), and return fluid+coupling free energy Any extra forces on explicit ions due to the fluid should be stored in extraForces (if non-null) This base-class wrapper handles grid embedding (if necessary) and calls set_internal of the derived class

void FluidSolver::set ( const ScalarFieldTilde rhoExplicitTilde,
const ScalarFieldTilde nCavityTilde 
)

Set total explicit charge density and effective electron density to use in cavity formation (i.e. including charge balls) and set list of explicit atoms to use in van der Waals corrections This base-class wrapper handles grid embedding (if necessary) and calls set_internal of the derived class


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