|
| NonlinearPCM (const Everything &e, const FluidSolverParams ¶ms) |
| See createFluidSolver()
|
|
bool | prefersGummel () const |
| Specify whether fluid prefers a gummel loop (true) or is minimized each time (false)
|
|
void | loadState (const char *filename) |
| Load state from file.
|
|
void | saveState (const char *filename) const |
| Save state to file.
|
|
void | dumpDensities (const char *filenamePattern) const |
|
void | minimizeFluid () |
| Converge using nonlinear conjugate gradients.
|
|
double | operator() (const ScalarFieldMuEps &state, ScalarFieldMuEps &Adiel_state, ScalarFieldTilde *Adiel_rhoExplicitTilde=0, ScalarFieldTilde *Adiel_nCavityTilde=0, bool electricOnly=false) const |
| Compute gradient and free energy (with optional outputs)
|
|
void | step (const ScalarFieldMuEps &dir, double alpha) |
| Move the state in parameter space along direction dir with scale alpha.
|
|
double | compute (ScalarFieldMuEps *grad, ScalarFieldMuEps *Kgrad) |
| Returns the objective function at the current state and store the gradient in grad and preconditioned gradient in Kgrad, if non-null.
|
|
| PCM (const Everything &e, const FluidSolverParams &fsp) |
|
void | dumpDensities (const char *filenamePattern) const |
| dump cavity shape functions
|
|
void | dumpDebug (const char *filenamePattern) const |
| generate fluidDebug text file with common info to all PCMs
|
|
| FluidSolver (const Everything &e, const FluidSolverParams &fsp) |
| atomic positions per species in the relevant coordinate system (depending on embedding option) 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, bool electricOnly=false) const |
|
virtual double | bulkPotential () |
|
virtual bool | report (int iter) |
|
virtual void | constrain (ScalarFieldMuEps &) |
| Constrain search directions to the space of free directions for minimize.
|
|
virtual double | sync (double x) const |
| Override to synchronize scalars over MPI processes (if the same minimization is happening in sync over many processes)
|
|
virtual double | safeStepSize (const ScalarFieldMuEps &dir) const |
| Override to return maximum safe step size along a given direction. Steps can be arbitrarily large by default.
|
|
double | minimize (const MinimizeParams ¶ms) |
| Minimize this objective function with algorithm controlled by params and return the minimized value.
|
|
void | fdTest (const MinimizeParams ¶ms) |
|
| Pulay (const PulayParams &pp) |
|
double | minimize (double Eprev=+DBL_MAX, std::vector< string > extraNames=std::vector< string >(), std::vector< double > extraThresh=std::vector< double >()) |
| Minimize energy using a self-consistent iteration. More...
|
|
void | loadState (const char *filename) |
| Load the state from a single binary file.
|
|
void | saveState (const char *filename) const |
| Save the state to a single binary file.
|
|
void | clearState () |
| remove past variables and residuals
|
|
virtual double | sync (double x) const |
| Override to synchronize scalars over MPI processes (if the same minimization is happening in sync over many processes)
|
|
|
void | set_internal (const ScalarFieldTilde &rhoExplicitTilde, const ScalarFieldTilde &nCavityTilde) |
| Fluid-dependent implementation of set()
|
|
double | get_Adiel_and_grad_internal (ScalarFieldTilde &Adiel_rhoExplicitTilde, ScalarFieldTilde &Adiel_nCavityTilde, IonicGradient *extraForces, bool electricOnly) const |
| Fluid-dependent implementation of get_Adiel_and_grad()
|
|
double | cycle (double dEprev, std::vector< double > &extraValues) |
| Single cycle of the self-consistency loop. In each subsequent cycle, Pulay will try to zero the difference between getVariable() before and after the cycle. The implementation should only do the work of computing the updated variable; debug printing and I/O, if any, should occur in report() instead. More...
|
|
void | axpy (double alpha, const ScalarFieldTilde &X, ScalarFieldTilde &Y) const |
| Scaled accumulate on variable.
|
|
double | dot (const ScalarFieldTilde &X, const ScalarFieldTilde &Y) const |
| Euclidean dot product. Metric applied separately for efficiency.
|
|
size_t | variableSize () const |
| Number of bytes per variable.
|
|
void | readVariable (ScalarFieldTilde &X, FILE *fp) const |
| Read variable from stream.
|
|
void | writeVariable (const ScalarFieldTilde &X, FILE *fp) const |
|
ScalarFieldTilde | getVariable () const |
| Write variable to stream. More...
|
|
void | setVariable (const ScalarFieldTilde &) |
| Set the state of system to specified variable.
|
|
ScalarFieldTilde | precondition (const ScalarFieldTilde &) const |
| Apply preconditioner to variable/residual.
|
|
ScalarFieldTilde | applyMetric (const ScalarFieldTilde &) const |
| Apply metric to variable/residual.
|
|
virtual void | printDebug (FILE *fp) const |
| over-ride to get extra PCM-specific output in fluidDebug text file
|
|
void | updateCavity () |
| update shape function(s) from nCavity, and energies dependent upon shape alone
|
|
void | propagateCavityGradients (const ScalarField &A_shape, ScalarField &A_nCavity, ScalarFieldTilde &A_rhoExplicitTilde, bool electricOnly) const |
| propagate A_shape (+ cached Acavity_shape) and accumulate to those w.r.t nCavity and rhoExplicitTilde
|
|
void | setExtraForces (IonicGradient *forces, const ScalarFieldTilde &A_nCavityTilde) const |
| set extra fluid forces (vdw and full-core forces, when applicable)
|
|
ScalarFieldTilde | getFullCore () const |
| get full core correction for PCM variants that need them
|
|
virtual void | report (int iter) |
| Override to perform optional reporting.
|
|