20 #ifndef JDFTX_ELECTRONIC_FLUIDSOLVER_H 21 #define JDFTX_ELECTRONIC_FLUIDSOLVER_H 28 #include <electronic/IonicMinimizer.h> 38 std::vector<std::vector< vector3<> > > atpos;
47 inline bool useGummel()
const 48 {
switch(fsp.solveFrequency)
66 virtual double bulkPotential() {
return 0.0;}
76 virtual void dumpDebug(
const char* filenamePattern)
const {};
84 virtual void loadState(
const char* filename)=0;
87 virtual void saveState(
const char* filename)
const=0;
103 #endif // JDFTX_ELECTRONIC_FLUIDSOLVER_H Simulation grid descriptor.
Definition: GridInfo.h:45
Solve fluid every electronic step.
Definition: FluidSolverParams.h:41
std::shared_ptr< ScalarFieldTildeData > ScalarFieldTilde
A smart reference-counting pointer to ScalarFieldTildeData.
Definition: ScalarField.h:45
double ionWidthMuCorrection() const
correction to electron chemical potential due to finite ion width in fluid interaction ...
virtual void saveState(const char *filename) const =0
Save fluid state to a file.
Real and complex scalar fields in real and reciprocal space.
Use a Gummel iteration.
Definition: FluidSolverParams.h:42
Abstract base class for the fluid solvers.
Definition: FluidSolver.h:31
virtual void loadState(const char *filename)=0
Initialize fluid state from a file.
virtual void minimizeFluid()=0
Minimize fluid side (holding explicit electronic system fixed)
virtual bool prefersGummel() const =0
Specify whether fluid prefers a gummel loop (true) or is minimized each time (false) ...
Definition: Everything.h:41
FluidSolver * createFluidSolver(const Everything &e, const FluidSolverParams ¶ms)
Create and return a JDFTx solver (the solver can be freed using delete)
double k2factor
prefactor to screening term (0 => no ionic screening)
Definition: FluidSolver.h:37
FluidSolver(const Everything &e, const FluidSolverParams &fsp)
atomic positions per species in the relevant coordinate system (depending on embedding option) ...
double get_Adiel_and_grad(ScalarFieldTilde *Adiel_rhoExplicitTilde=0, ScalarFieldTilde *Adiel_nCavityTilde=0, IonicGradient *extraForces=0, bool electricOnly=false) const
virtual void set_internal(const ScalarFieldTilde &rhoExplicitTilde, const ScalarFieldTilde &nCavityTilde)=0
Fluid-dependent implementation of set()
virtual void dumpDensities(const char *filenamePattern) const
Definition: FluidSolver.h:71
virtual void dumpDebug(const char *filenamePattern) const
Definition: FluidSolver.h:76
Extra parameters for fluids:
Definition: FluidSolverParams.h:93
double epsInf
bulk dielectric constants of fluid
Definition: FluidSolver.h:36
virtual double get_Adiel_and_grad_internal(ScalarFieldTilde &Adiel_rhoExplicitTilde, ScalarFieldTilde &Adiel_nCavityTilde, IonicGradient *extraForces, bool electricOnly) const =0
Fluid-dependent implementation of get_Adiel_and_grad()
Object to hold all the forces.
Definition: IonicMinimizer.h:31