19#ifndef nudgedElasticBandClass_H_ 
   20#define nudgedElasticBandClass_H_ 
   49                           const std::string  restartFilesPath,
 
   50                           const MPI_Comm    &mpi_comm_parent,
 
   55                           const bool         imageFreeze,
 
   58                           const double       pathThreshold,
 
   62                           const std::string &_bfgsStepMethod,
 
   63                           const double       optimizermaxIonUpdateStep,
 
   64                           const std::string &optimizationSolver,
 
   65                           const std::string &coordinatesFileNEB,
 
   66                           const std::string &domainVectorsFileNEB,
 
   67                           const std::string &ionRelaxFlagsFile);
 
  112           const bool                 computeForces      = 
true,
 
  113           const bool useSingleAtomSolutionsInitialGuess = 
false);
 
  129    value(std::vector<double> &functionValue);
 
  138    std::vector<dftfe::uInt>
 
  179    std::map<dftfe::Int, std::vector<std::vector<double>>>
 
  200                           std::vector<double> &,
 
  201                           const std::vector<double> &);
 
  207                                std::vector<double> &,
 
  208                                const std::vector<double> &,
 
  209                                const std::vector<double> &);
 
  217                         std::vector<double> &,
 
  218                         std::vector<double>);
 
  225                          const std::vector<double> &,
 
  226                          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:174
 
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:144
 
std::string d_optimizationSolver
Definition nudgedElasticBandClass.h:175
 
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:162
 
dftBase * d_dftPtr
Definition nudgedElasticBandClass.h:143
 
double d_kmin
Definition nudgedElasticBandClass.h:72
 
void CalculateSpringForce(dftfe::Int, std::vector< double > &, std::vector< double >)
Calculates the force due to the spring.
 
dftfe::Int d_NEBImageno
Definition nudgedElasticBandClass.h:73
 
std::vector< dftfe::uInt > d_relaxationFlags
Definition nudgedElasticBandClass.h:181
 
std::string d_restartFilesPath
Definition nudgedElasticBandClass.h:154
 
dealii::ConditionalOStream pcout
Definition nudgedElasticBandClass.h:151
 
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:71
 
void set()
set() initalises all the private datamembers of nudgedElasticBandClass object from the parameters dec...
 
dftfe::uInt d_numberGlobalCharges
Definition nudgedElasticBandClass.h:164
 
const dftfe::uInt d_this_mpi_process
Definition nudgedElasticBandClass.h:148
 
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:159
 
std::string d_domainVectorsFileNEB
Definition nudgedElasticBandClass.h:185
 
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:180
 
double d_optimizermaxIonUpdateStep
Definition nudgedElasticBandClass.h:173
 
double d_maximumAtomForceToBeRelaxed
Definition nudgedElasticBandClass.h:165
 
dftfe::uInt d_numberOfImages
Definition nudgedElasticBandClass.h:166
 
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:170
 
void CalculateSpringConstant(dftfe::Int, double &)
Find spring constant based on k_max and k_min.
 
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
 
dftfe::Int d_solver
Definition nudgedElasticBandClass.h:160
 
dftfe::Int d_totalUpdateCalls
total number of calls to update()
Definition nudgedElasticBandClass.h:158
 
std::string bfgsStepMethod
Definition nudgedElasticBandClass.h:172
 
bool d_isRestart
Definition nudgedElasticBandClass.h:161
 
std::string d_ionRelaxFlagsFile
Definition nudgedElasticBandClass.h:176
 
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:153
 
bool d_imageFreeze
Definition nudgedElasticBandClass.h:155
 
std::string d_solverRestartPath
Definition nudgedElasticBandClass.h:154
 
dftfe::uInt d_maximumNEBIteration
Definition nudgedElasticBandClass.h:169
 
std::vector< double > d_Length
Definition nudgedElasticBandClass.h:184
 
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:142
 
dftfe::uInt d_restartFlag
Definition nudgedElasticBandClass.h:163
 
const MPI_Comm d_mpiCommParent
Definition nudgedElasticBandClass.h:146
 
std::string d_coordinatesFileNEB
Definition nudgedElasticBandClass.h:185
 
dftfe::uInt d_countrelaxationFlags
Definition nudgedElasticBandClass.h:167
 
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:171
 
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