ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
Public Member Functions | Private Member Functions | Private Attributes | List of all members
FIRE Class Reference

FIRE method. More...

#include <fire.h>

Inheritance diagram for FIRE:
Collaboration diagram for FIRE:

Public Member Functions

 FIRE (const Parameter &param_in, UnitCell &unit_in)
 
 ~FIRE ()
 
- Public Member Functions inherited from MD_base
 MD_base (const Parameter &param_in, UnitCell &unit_in)
 
virtual ~MD_base ()
 

Private Member Functions

void setup (ModuleESolver::ESolver *p_esolver, const std::string &global_readin_dir)
 init before running md, calculate energy, force, and stress of the initial configuration.
 
void first_half (std::ofstream &ofs)
 the first half of equation of motion, update velocities and positions
 
void second_half ()
 the second half of equation of motion, update velocities
 
void print_md (std::ofstream &ofs, const bool &cal_stress)
 output MD information such as energy, temperature, and pressure
 
void restart (const std::string &global_readin_dir)
 restart MD when md_restart is true
 
void write_restart (const std::string &global_out_dir)
 write the information into files used for MD restarting
 
void check_force (void)
 check the atomic forces converged or not
 
void check_fire (void)
 update related parameters
 

Private Attributes

double max
 max force
 
double alpha_start
 alpha_start begin
 
double alpha
 alpha begin
 
double finc
 finc begin
 
double fdec
 fdec begin
 
double f_alpha
 f_alpha
 
int n_min
 n_min
 
double dt_max
 dt_max
 
int negative_count
 Negative count.
 
double force_thr
 force convergence threshold in FIRE method
 

Additional Inherited Members

- Public Attributes inherited from MD_base
bool stop
 MD stop or not.
 
double t_current
 current temperature
 
int step_
 the MD step finished in current calculation
 
int step_rst_
 the MD step finished in previous calculations
 
int frozen_freedom_
 the fixed freedom of the system
 
double * allmass
 atom mass
 
ModuleBase::Vector3< double > * pos
 atom displacements liuyu modify 2023-03-22
 
ModuleBase::Vector3< double > * vel
 atom velocity
 
ModuleBase::Vector3< int > * ionmbl
 atom is frozen or not
 
ModuleBase::Vector3< double > * force
 force of each atom
 
ModuleBase::matrix virial
 virial for this lattice
 
ModuleBase::matrix stress
 stress for this lattice
 
double potential =0.0
 potential energy
 
double kinetic
 kinetic energy
 
- Protected Member Functions inherited from MD_base
virtual void update_pos ()
 perform one step update of pos due to atomic velocity
 
virtual void update_vel (const ModuleBase::Vector3< double > *force)
 perform half-step update of vel due to atomic force
 
- Protected Attributes inherited from MD_base
const MD_paramdp
 input parameters used in md
 
UnitCellucell
 unitcell information
 
double energy_ =0.0
 total energy of the system
 
bool cal_stress
 whether calculate stress
 
int my_rank
 MPI rank of the processor.
 
double md_dt
 Time increment (hbar/E_hartree)
 
double md_tfirst
 Temperature (in Hartree, 1 Hartree ~ 3E5 K)
 
double md_tlast
 Target temperature.
 

Detailed Description

FIRE method.

A MD-based relaxation algorithm, named fast inertial relaxation engine. [Phys. Rev. Lett. 97, 170201 (2006)] It is based on conventional molecular dynamics with additional velocity modifications and adaptive time steps. The MD trajectory will descend to an energy-minimum.

Constructor & Destructor Documentation

◆ FIRE()

FIRE::FIRE ( const Parameter param_in,
UnitCell unit_in 
)

◆ ~FIRE()

FIRE::~FIRE ( )

Member Function Documentation

◆ check_fire()

void FIRE::check_fire ( void  )
private

update related parameters

initial dt_max

Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_force()

void FIRE::check_force ( void  )
private

check the atomic forces converged or not

Here is the caller graph for this function:

◆ first_half()

void FIRE::first_half ( std::ofstream &  ofs)
privatevirtual

the first half of equation of motion, update velocities and positions

Parameters
ofsdetermine the output files

Reimplemented from MD_base.

Here is the call graph for this function:

◆ print_md()

void FIRE::print_md ( std::ofstream &  ofs,
const bool &  cal_stress 
)
privatevirtual

output MD information such as energy, temperature, and pressure

Parameters
ofsdetermine the output files
cal_stresswhether calculate and output stress

Reimplemented from MD_base.

Here is the call graph for this function:

◆ restart()

void FIRE::restart ( const std::string &  global_readin_dir)
privatevirtual

restart MD when md_restart is true

Parameters
global_readin_dirdirectory of files for reading

Reimplemented from MD_base.

Here is the call graph for this function:

◆ second_half()

void FIRE::second_half ( void  )
privatevirtual

the second half of equation of motion, update velocities

Reimplemented from MD_base.

Here is the call graph for this function:

◆ setup()

void FIRE::setup ( ModuleESolver::ESolver p_esolver,
const std::string &  global_readin_dir 
)
privatevirtual

init before running md, calculate energy, force, and stress of the initial configuration.

Parameters
p_esolverthe energy solver used in md
global_readin_dirdirectory of files for reading

Reimplemented from MD_base.

Here is the call graph for this function:

◆ write_restart()

void FIRE::write_restart ( const std::string &  global_out_dir)
privatevirtual

write the information into files used for MD restarting

Parameters
global_out_dirdirectory of output files

Reimplemented from MD_base.

Here is the call graph for this function:

Member Data Documentation

◆ alpha

double FIRE::alpha
private

alpha begin

◆ alpha_start

double FIRE::alpha_start
private

alpha_start begin

◆ dt_max

double FIRE::dt_max
private

dt_max

◆ f_alpha

double FIRE::f_alpha
private

f_alpha

◆ fdec

double FIRE::fdec
private

fdec begin

◆ finc

double FIRE::finc
private

finc begin

◆ force_thr

double FIRE::force_thr
private

force convergence threshold in FIRE method

◆ max

double FIRE::max
private

max force

◆ n_min

int FIRE::n_min
private

n_min

◆ negative_count

int FIRE::negative_count
private

Negative count.


The documentation for this class was generated from the following files: