19#ifndef nudgedElasticBandClass_H_
20#define nudgedElasticBandClass_H_
50 const std::string restartFilesPath,
51 const MPI_Comm & mpi_comm_parent,
56 const bool imageFreeze,
59 const double pathThreshold,
60 const int maximumNEBIteration,
61 const unsigned int _maxLineSearchIterCGPRP,
62 const unsigned int _lbfgsNumPastSteps,
63 const std::string &_bfgsStepMethod,
64 const double optimizermaxIonUpdateStep,
65 const std::string &optimizationSolver,
66 const std::string &coordinatesFileNEB,
67 const std::string &domainVectorsFileNEB,
68 const std::string &ionRelaxFlagsFile);
94 LNorm(
double &, std::vector<double>,
int,
int);
113 const bool computeForces =
true,
114 const bool useSingleAtomSolutionsInitialGuess =
false);
130 value(std::vector<double> &functionValue);
139 std::vector<unsigned int>
200 std::vector<double> &,
201 const std::vector<double> &);
207 std::vector<double> &,
208 const std::vector<double> &,
209 const std::vector<double> &);
223 const std::vector<double> &,
224 std::vector<double> &);
abstract base class for dft
Definition dftBase.h:34
nonlinearSolverProblem()
Constructor.
void solution(std::vector< double > &solution)
not implemented
std::unique_ptr< nonLinearSolver > d_nonLinearSolverPtr
Definition nudgedElasticBandClass.h:145
std::string d_optimizationSolver
Definition nudgedElasticBandClass.h:176
std::map< int, std::vector< std::vector< double > > > d_atomLocationsInitial
Definition nudgedElasticBandClass.h:180
bool d_solverRestart
Definition nudgedElasticBandClass.h:163
dftBase * d_dftPtr
Definition nudgedElasticBandClass.h:144
int d_NEBImageno
Definition nudgedElasticBandClass.h:74
double d_kmin
Definition nudgedElasticBandClass.h:73
void WriteRestartFiles(int step)
Write Restart files.
void LNorm(double &, std::vector< double >, int, int)
Calculates the L-norm of a vector.
std::string d_restartFilesPath
Definition nudgedElasticBandClass.h:155
dealii::ConditionalOStream pcout
Definition nudgedElasticBandClass.h:152
unsigned int d_countrelaxationFlags
Definition nudgedElasticBandClass.h:168
void precondition(std::vector< double > &s, const std::vector< double > &gradient)
not implemented
const unsigned int d_this_mpi_process
Definition nudgedElasticBandClass.h:149
unsigned int maxLineSearchIterCGPRP
Definition nudgedElasticBandClass.h:172
int findMEP()
Calls optimizer(nonLinearClass) solve. Prints the Final NEB energies and forces. References: 1....
unsigned int getNumberUnknowns() const
Returns the total DoFs of the optimizer problem.
void value(std::vector< double > &functionValue)
Not working. Finds the saddle point energy.
int d_startStep
Definition nudgedElasticBandClass.h:160
unsigned int d_maximumNEBIteration
Definition nudgedElasticBandClass.h:170
double d_kmax
Definition nudgedElasticBandClass.h:72
unsigned int d_numberOfImages
Definition nudgedElasticBandClass.h:167
void set()
set() initalises all the private datamembers of nudgedElasticBandClass object from the parameters dec...
unsigned int lbfgsNumPastSteps
Definition nudgedElasticBandClass.h:175
void CalculateForceperpendicular(int, std::vector< double > &, const std::vector< double > &, const std::vector< double > &)
Calculates force perpendicular to the tangent.
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 fo...
std::vector< unsigned int > getUnknownCountFlag() const
not implemented
std::string d_domainVectorsFileNEB
Definition nudgedElasticBandClass.h:185
void CalculateSpringForce(int, std::vector< double > &, std::vector< double >)
Calculates the force due to the spring.
void gradient(std::vector< double > &gradient)
Identifies the images to freeze, calculates gradient. First prints the Image No., free energy and for...
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....
void CalculateForceparallel(int, std::vector< double > &, const std::vector< double > &)
Calculates the force on atom along the tangent between images.
int checkRestart(bool &periodic)
Check the restart files.
double d_optimizermaxIonUpdateStep
Definition nudgedElasticBandClass.h:174
void CalculateSpringConstant(int, double &)
Find spring constant based on k_max and k_min.
double d_maximumAtomForceToBeRelaxed
Definition nudgedElasticBandClass.h:166
unsigned int d_numberGlobalCharges
Definition nudgedElasticBandClass.h:165
bool isConverged() const
check for convergence.
unsigned int d_restartFlag
Definition nudgedElasticBandClass.h:164
void CalculatePathTangent(int, std::vector< double > &)
Calculate the tangent between each image.
void CalculateForceonImage(const std::vector< double > &, const std::vector< double > &, std::vector< double > &)
Calculates F_NEB = G_per+ F_spring.
int d_totalUpdateCalls
total number of calls to update()
Definition nudgedElasticBandClass.h:159
double d_optimizertolerance
Definition nudgedElasticBandClass.h:171
std::vector< double > d_ImageError
Definition nudgedElasticBandClass.h:183
void init()
initializes the data member d_relaxationFlags, nonlinearSolver,
const MPI_Comm & getMPICommunicator()
get MPI communicator.
std::vector< double > d_externalForceOnAtom
Definition nudgedElasticBandClass.h:182
std::vector< unsigned int > d_relaxationFlags
Definition nudgedElasticBandClass.h:181
std::string bfgsStepMethod
Definition nudgedElasticBandClass.h:173
bool d_isRestart
Definition nudgedElasticBandClass.h:162
std::string d_ionRelaxFlagsFile
Definition nudgedElasticBandClass.h:177
bool d_imageFreeze
Definition nudgedElasticBandClass.h:156
std::string d_solverRestartPath
Definition nudgedElasticBandClass.h:155
std::vector< double > d_Length
Definition nudgedElasticBandClass.h:184
void ImageError(int image, double &Force)
Calculate F_per norm.
double CalculatePathLength(bool flag) const
Calculate path length: max diaplacement of atoms.
int d_solver
Definition nudgedElasticBandClass.h:161
std::vector< std::unique_ptr< dftfeWrapper > > d_dftfeWrapper
Definition nudgedElasticBandClass.h:143
const MPI_Comm d_mpiCommParent
Definition nudgedElasticBandClass.h:147
int d_verbosity
Definition nudgedElasticBandClass.h:154
std::string d_coordinatesFileNEB
Definition nudgedElasticBandClass.h:185
void ReturnNormedVector(std::vector< double > &, int)
Returns the Normed vetor satistfying ||v||_2 = 1.
void save()
Saves the output files for restart.
Contains commonly used I/O file utils functions.
Definition pseudoPotentialToDftfeConverter.cc:34