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
Langevin Class Reference

Langevin method. More...

#include <langevin.h>

Inheritance diagram for Langevin:
Collaboration diagram for Langevin:

Public Member Functions

 Langevin (const Parameter &param_in, UnitCell &unit_in)
 
 ~Langevin ()
 
- 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 write_restart (const std::string &global_out_dir)
 write the information into files used for MD restarting
 
void restart (const std::string &global_readin_dir)
 restart MD when md_restart is true
 
void post_force ()
 calculate fictitious forces
 

Private Attributes

ModuleBase::Vector3< double > * total_force
 total force = true force + Langevin fictitious_force
 
double md_damp
 damping factor
 

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

Langevin method.

Assume the atoms are embedded in a sea of much smaller fictional particles. The solvent influences the dynamics of the solute(typically nanoparticles) via random collisions, and by imposing a frictional drag force on the motion of the nanoparticle in the solvent. The damping factor and the random force combine to give the correct NVT ensemble.

Constructor & Destructor Documentation

◆ Langevin()

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

convert to a.u. unit

◆ ~Langevin()

Langevin::~Langevin ( )

Member Function Documentation

◆ first_half()

void Langevin::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:

◆ post_force()

void Langevin::post_force ( )
private

calculate fictitious forces

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

◆ print_md()

void Langevin::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 Langevin::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 Langevin::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 Langevin::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 Langevin::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

◆ md_damp

double Langevin::md_damp
private

damping factor

◆ total_force

ModuleBase::Vector3<double>* Langevin::total_force
private

total force = true force + Langevin fictitious_force


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