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