Abstract base class for the fluid solvers. More...
#include <FluidSolver.h>
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 Everything & | e |
const GridInfo & | gInfo |
const FluidSolverParams & | fsp |
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() | |
Abstract base class for the fluid solvers.
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
|
inlinevirtual |
|
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