18#ifndef nonlinearSolverProblem_H_
19#define nonlinearSolverProblem_H_
57 value(std::vector<double> &functionValue) = 0;
76 const std::vector<double> &
gradient) = 0;
85 const bool computeForces =
true,
86 const bool useSingleAtomSolutionsInitialGuess =
false) = 0;
107 virtual std::vector<unsigned int>
128 virtual const MPI_Comm &
virtual void value(std::vector< double > &functionValue)=0
Compute function value (aka energy).
virtual bool isConverged() const =0
check for convergence.
virtual void solution(std::vector< double > &solution)=0
Obtain current solution.
nonlinearSolverProblem()
Constructor.
virtual std::vector< unsigned int > getUnknownCountFlag() const =0
For each unknown indicate whether that unknown should be accumulated. This functionality is needed in...
virtual void update(const std::vector< double > &solution, const bool computeForces=true, const bool useSingleAtomSolutionsInitialGuess=false)=0
Update solution.
virtual ~nonlinearSolverProblem()=0
Destructor.
virtual const MPI_Comm & getMPICommunicator()=0
get MPI communicator.
virtual unsigned int getNumberUnknowns() const =0
Obtain number of unknowns.
virtual void gradient(std::vector< double > &gradient)=0
Compute function gradient (aka forces).
virtual void precondition(std::vector< double > &s, const std::vector< double > &gradient)=0
Apply preconditioner to function gradient.
virtual void save()=0
create checkpoint for the current state of the problem i.e problem domain and solution.
Definition pseudoPotentialToDftfeConverter.cc:34