ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
md_base.h
Go to the documentation of this file.
1#ifndef MD_BASE_H
2#define MD_BASE_H
3
6
16{
17 public:
18 MD_base(const Parameter& param_in, UnitCell& unit_in);
19 virtual ~MD_base();
20
27 virtual void setup(ModuleESolver::ESolver* p_esolver, const std::string& global_readin_dir);
28
34 virtual void first_half(std::ofstream& ofs);
35
39 virtual void second_half();
40
46 virtual void print_md(std::ofstream& ofs, const bool& cal_stress);
47
52 virtual void write_restart(const std::string& global_out_dir);
53
54 protected:
59 virtual void restart(const std::string& global_readin_dir);
60
64 virtual void update_pos();
65
70 virtual void update_vel(const ModuleBase::Vector3<double>* force);
71
72 public:
73 bool stop;
74 double t_current;
75 int step_;
78 double* allmass;
85 double potential=0.0;
86 double kinetic;
87
88 protected:
89 const MD_para& mdp;
91 double energy_=0.0;
92
94 int my_rank;
95 double md_dt;
96 double md_tfirst;
97 double md_tlast;
98};
99
100#endif // MD_BASE_H
base class of md
Definition md_base.h:16
double energy_
total energy of the system
Definition md_base.h:91
double md_dt
Time increment (hbar/E_hartree)
Definition md_base.h:95
ModuleBase::Vector3< double > * vel
atom velocity
Definition md_base.h:80
ModuleBase::matrix stress
stress for this lattice
Definition md_base.h:84
double potential
potential energy
Definition md_base.h:85
bool cal_stress
whether calculate stress
Definition md_base.h:93
virtual void update_pos()
perform one step update of pos due to atomic velocity
Definition md_base.cpp:90
virtual void restart(const std::string &global_readin_dir)
restart MD when md_restart is true
Definition md_base.cpp:246
ModuleBase::Vector3< double > * force
force of each atom
Definition md_base.h:82
virtual void write_restart(const std::string &global_out_dir)
write the information into files used for MD restarting
Definition md_base.cpp:226
double md_tfirst
Temperature (in Hartree, 1 Hartree ~ 3E5 K)
Definition md_base.h:96
UnitCell & ucell
unitcell information
Definition md_base.h:90
const MD_para & mdp
input parameters used in md
Definition md_base.h:89
ModuleBase::matrix virial
virial for this lattice
Definition md_base.h:83
int frozen_freedom_
the fixed freedom of the system
Definition md_base.h:77
virtual void print_md(std::ofstream &ofs, const bool &cal_stress)
output MD information such as energy, temperature, and pressure
Definition md_base.cpp:144
virtual 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.
Definition md_base.cpp:56
int step_
the MD step finished in current calculation
Definition md_base.h:75
virtual void update_vel(const ModuleBase::Vector3< double > *force)
perform half-step update of vel due to atomic force
Definition md_base.cpp:121
ModuleBase::Vector3< int > * ionmbl
atom is frozen or not
Definition md_base.h:81
int my_rank
MPI rank of the processor.
Definition md_base.h:94
double kinetic
kinetic energy
Definition md_base.h:86
double t_current
current temperature
Definition md_base.h:74
int step_rst_
the MD step finished in previous calculations
Definition md_base.h:76
virtual void second_half()
the second half of equation of motion, update velocities
Definition md_base.cpp:82
double * allmass
atom mass
Definition md_base.h:78
double md_tlast
Target temperature.
Definition md_base.h:97
virtual void first_half(std::ofstream &ofs)
the first half of equation of motion, update velocities and positions
Definition md_base.cpp:73
virtual ~MD_base()
Definition md_base.cpp:46
ModuleBase::Vector3< double > * pos
atom displacements liuyu modify 2023-03-22
Definition md_base.h:79
bool stop
MD stop or not.
Definition md_base.h:73
3 elements vector
Definition vector3.h:22
Definition matrix.h:19
Definition esolver.h:11
Definition parameter.h:13
Definition unitcell.h:16
input parameters used in md
Definition md_parameter.h:12