DFT-FE 1.1.0-pre
Density Functional Theory With Finite-Elements
|
problem class for cell stress relaxation solver. More...
#include <geoOptCell.h>
Public Member Functions | |
geoOptCell (dftBase *dftPtr, const MPI_Comm &mpi_comm_parent, const bool restart=false) | |
Constructor. | |
void | init (const std::string &restartPath) |
initializes the data member d_relaxationFlags. | |
int | run () |
calls the cell stress relaxation solver. | |
void | writeMesh (std::string meshFileName) |
writes the current fem mesh. | |
unsigned int | getNumberUnknowns () const |
Obtain number of unknowns (depends on the stress relaxation constraint type). | |
void | gradient (std::vector< double > &gradient) |
Compute function gradient (stress). | |
void | update (const std::vector< double > &solution, const bool computeStress=true, const bool useSingleAtomSolutionsInitialGuess=false) |
Update the strain tensor epsilon. | |
void | save () |
create checkpoint file for current domain bounding vectors and atomic coordinates. | |
bool | isConverged () const |
check for convergence. | |
const MPI_Comm & | getMPICommunicator () |
get MPI communicator. | |
void | value (std::vector< double > &functionValue) |
Not implemented. | |
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. | |
Private Attributes | |
std::vector< unsigned int > | d_relaxationFlags |
std::string | d_restartPath |
std::string | d_solverRestartPath |
bool | d_isRestart |
bool | d_solverRestart |
bool | d_isScfRestart |
int | d_solver |
int | d_totalUpdateCalls |
total number of calls to update() | |
double | d_domainVolumeInitial |
dealii::Tensor< 2, 3, double > | d_strainEpsilon |
current strain tensor applied on the domain | |
dftBase * | d_dftPtr |
pointer to dft class | |
std::unique_ptr< nonLinearSolver > | d_nonLinearSolverPtr |
const MPI_Comm | mpi_communicator |
parallel communication objects | |
const unsigned int | n_mpi_processes |
const unsigned int | this_mpi_process |
dealii::ConditionalOStream | pcout |
conditional stream object | |
problem class for cell stress relaxation solver.
dftfe::geoOptCell::geoOptCell | ( | dftBase * | dftPtr, |
const MPI_Comm & | mpi_comm_parent, | ||
const bool | restart = false ) |
Constructor.
_dftPtr | pointer to dftClass |
mpi_comm_parent | parent mpi_communicator |
|
virtual |
get MPI communicator.
Implements dftfe::nonlinearSolverProblem.
|
virtual |
Obtain number of unknowns (depends on the stress relaxation constraint type).
Implements dftfe::nonlinearSolverProblem.
|
virtual |
Not implemented.
Implements dftfe::nonlinearSolverProblem.
|
virtual |
Compute function gradient (stress).
gradient | STL vector for gradient values. |
Implements dftfe::nonlinearSolverProblem.
void dftfe::geoOptCell::init | ( | const std::string & | restartPath | ) |
initializes the data member d_relaxationFlags.
|
virtual |
check for convergence.
Implements dftfe::nonlinearSolverProblem.
|
virtual |
Not implemented.
Implements dftfe::nonlinearSolverProblem.
int dftfe::geoOptCell::run | ( | ) |
calls the cell stress relaxation solver.
The Polak–Ribière nonlinear CG solver with secant based line search is used for the stress relaxation.
|
virtual |
create checkpoint file for current domain bounding vectors and atomic coordinates.
Implements dftfe::nonlinearSolverProblem.
|
virtual |
Not implemented.
Implements dftfe::nonlinearSolverProblem.
|
virtual |
Update the strain tensor epsilon.
The new strain tensor is epsilonNew= epsilon+ delta(epsilon). Since epsilon strain is already applied to the domain. The new strain to be applied to the domain is epsilonNew*inv(epsilon)
solution | delta(epsilon). |
Implements dftfe::nonlinearSolverProblem.
|
virtual |
Not implemented.
Implements dftfe::nonlinearSolverProblem.
void dftfe::geoOptCell::writeMesh | ( | std::string | meshFileName | ) |
writes the current fem mesh.
|
private |
pointer to dft class
|
private |
|
private |
|
private |
|
private |
|
private |
Relaxation flags which determine whether a particular stress component is to be relaxed or not.
|
private |
|
private |
|
private |
|
private |
|
private |
current strain tensor applied on the domain
|
private |
total number of calls to update()
|
private |
parallel communication objects
|
private |
|
private |
conditional stream object
|
private |