|
| nudgedElasticBandClass (const std::string parameter_file, const std::string restartFilesPath, const MPI_Comm &mpi_comm_parent, const bool restart, const int verbosity, const bool useDevice, const int d_numberOfImages, const bool imageFreeze, double Kmax, double Kmin, const double pathThreshold, const int maximumNEBIteration, const unsigned int _maxLineSearchIterCGPRP, const unsigned int _lbfgsNumPastSteps, const std::string &_bfgsStepMethod, const double optimizermaxIonUpdateStep, const std::string &optimizationSolver, const std::string &coordinatesFileNEB, const std::string &domainVectorsFileNEB, const std::string &ionRelaxFlagsFile) |
| First, sets the nebRestart path. Second, creates Step0 folder with coordinaes and domainVectors file. Third, creates the array of pointers of dftClass for each image. If in restart mode, calls function to read coordinates and initialise parameters Sets solvermode: CGPT, LBFGS, BFGS.
|
|
int | findMEP () |
| Calls optimizer(nonLinearClass) solve. Prints the Final NEB energies and forces. References: 1. https://pubs.aip.org/aip/jcp/article/113/22/9978/184858/Improved-tangent-estimate-in-the-nudged-elastic 2. https://pubs.aip.org/aip/jcp/article/128/13/134106/977389/Optimization-methods-for-finding-minimum-energy.
|
|
void | ReturnNormedVector (std::vector< double > &, int) |
| Returns the Normed vetor satistfying ||v||_2 = 1.
|
|
void | LNorm (double &, std::vector< double >, int, int) |
| Calculates the L-norm of a vector.
|
|
void | gradient (std::vector< double > &gradient) |
| Identifies the images to freeze, calculates gradient. First prints the Image No., free energy and force error of each image Prints activation energy of current step.
|
|
unsigned int | getNumberUnknowns () const |
| Returns the total DoFs of the optimizer problem.
|
|
void | update (const std::vector< double > &solution, const bool computeForces=true, const bool useSingleAtomSolutionsInitialGuess=false) |
| Updates the positions of atoms and the total step count. Calls dftPtr colve to compute eenergy and force for current step.
|
|
void | save () |
| Saves the output files for restart.
|
|
void | init () |
| initializes the data member d_relaxationFlags, nonlinearSolver,
|
|
void | value (std::vector< double > &functionValue) |
| Not working. Finds the saddle point energy.
|
|
void | precondition (std::vector< double > &s, const std::vector< double > &gradient) |
| not implemented
|
|
void | solution (std::vector< double > &solution) |
| not implemented
|
|
std::vector< unsigned int > | getUnknownCountFlag () const |
| not implemented
|
|
| nonlinearSolverProblem () |
| Constructor.
|
|
virtual | ~nonlinearSolverProblem ()=0 |
| Destructor.
|
|
|
const MPI_Comm & | getMPICommunicator () |
| get MPI communicator.
|
|
void | CalculatePathTangent (int, std::vector< double > &) |
| Calculate the tangent between each image.
|
|
void | CalculateForceparallel (int, std::vector< double > &, const std::vector< double > &) |
| Calculates the force on atom along the tangent between images.
|
|
void | CalculateForceperpendicular (int, std::vector< double > &, const std::vector< double > &, const std::vector< double > &) |
| Calculates force perpendicular to the tangent.
|
|
void | CalculateSpringForce (int, std::vector< double > &, std::vector< double >) |
| Calculates the force due to the spring.
|
|
void | CalculateForceonImage (const std::vector< double > &, const std::vector< double > &, std::vector< double > &) |
| Calculates F_NEB = G_per+ F_spring.
|
|
double | CalculatePathLength (bool flag) const |
| Calculate path length: max diaplacement of atoms.
|
|
void | WriteRestartFiles (int step) |
| Write Restart files.
|
|
void | CalculateSpringConstant (int, double &) |
| Find spring constant based on k_max and k_min.
|
|
void | ImageError (int image, double &Force) |
| Calculate F_per norm.
|
|
void | set () |
| set() initalises all the private datamembers of nudgedElasticBandClass object from the parameters declared by user.
|
|
bool | isConverged () const |
| check for convergence.
|
|
int | checkRestart (bool &periodic) |
| Check the restart files.
|
|
dftfe::nudgedElasticBandClass::nudgedElasticBandClass |
( |
const std::string | parameter_file, |
|
|
const std::string | restartFilesPath, |
|
|
const MPI_Comm & | mpi_comm_parent, |
|
|
const bool | restart, |
|
|
const int | verbosity, |
|
|
const bool | useDevice, |
|
|
const int | d_numberOfImages, |
|
|
const bool | imageFreeze, |
|
|
double | Kmax, |
|
|
double | Kmin, |
|
|
const double | pathThreshold, |
|
|
const int | maximumNEBIteration, |
|
|
const unsigned int | _maxLineSearchIterCGPRP, |
|
|
const unsigned int | _lbfgsNumPastSteps, |
|
|
const std::string & | _bfgsStepMethod, |
|
|
const double | optimizermaxIonUpdateStep, |
|
|
const std::string & | optimizationSolver, |
|
|
const std::string & | coordinatesFileNEB, |
|
|
const std::string & | domainVectorsFileNEB, |
|
|
const std::string & | ionRelaxFlagsFile ) |
First, sets the nebRestart path. Second, creates Step0 folder with coordinaes and domainVectors file. Third, creates the array of pointers of dftClass for each image. If in restart mode, calls function to read coordinates and initialise parameters Sets solvermode: CGPT, LBFGS, BFGS.