ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
|
#include <msst.h>
Public Member Functions | |
MSST (const Parameter ¶m_in, UnitCell &unit_in) | |
~MSST () | |
![]() | |
MD_base (const Parameter ¶m_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 | |
double | vel_sum () |
get the sum of square of velocities | |
void | rescale (std::ofstream &ofs, const double &volume) |
rescale the lattice and velocities | |
void | propagate_vel (void) |
propagate atomic velocities | |
void | propagate_voldot (void) |
propagate the volume change rate | |
Private Attributes | |
ModuleBase::Vector3< double > * | old_v |
old atomic velocities | |
ModuleBase::Vector3< double > | dilation |
dilation scale | |
ModuleBase::Vector3< double > | omega |
time derivative of volume | |
double | p0 |
initial pressure | |
double | v0 |
initial volume | |
double | e0 |
initial energy | |
double | totmass |
total mass of the cell | |
double | lag_pos |
Lagrangian location of cell. | |
double | vsum |
sum over v^2 | |
double | msst_vel |
shock msst_vel (\AA/fs) | |
double | msst_qmass |
cell mass-like parameter (mass^2/length^4) | |
double | msst_vis |
artificial msst_vis (mass/length/time) | |
Additional Inherited Members | |
![]() | |
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 | |
![]() | |
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 | |
![]() | |
const MD_para & | mdp |
input parameters used in md | |
UnitCell & | ucell |
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. | |
MSST method.
Multi-Scale Shock Technique (MSST) integration [Phys. Rev. Lett. 90, 235503 (2003)] update positions and velocities each timestep to mimic a compressive shock wave passing over the system. The MSST varies the cell volume and temperature to restrain the system to the shock Hugoniot and the Rayleigh line. These restraints correspond to the macroscopic conservation laws dictated by a shock front.
MSST::~MSST | ( | ) |
|
privatevirtual |
the first half of equation of motion, update velocities and positions
ofs | determine the output files |
propagate the time derivative of volume 1/2 step
save the velocities
propagate velocity sum 1/2 step by temporarily propagating the velocities
reset the velocities
propagate velocities 1/2 step using the new velocity sum
propagate volume 1/2 step
rescale positions and change box size
propagate atom positions 1 time step
propagate volume 1/2 step
rescale positions and change box size
Reimplemented from MD_base.
|
privatevirtual |
output MD information such as energy, temperature, and pressure
ofs | determine the output files |
cal_stress | whether calculate and output stress |
Reimplemented from MD_base.
|
private |
propagate atomic velocities
|
private |
propagate the volume change rate
prevent the increase of volume
avoid singularity at B = 0 with Taylor expansion
|
private |
rescale the lattice and velocities
ofs | determine the output files |
volume | the current cell volume |
rescale velocity
|
privatevirtual |
restart MD when md_restart is true
global_readin_dir | directory of files for reading |
Reimplemented from MD_base.
|
privatevirtual |
the second half of equation of motion, update velocities
propagate velocities 1/2 step
propagate the time derivative of volume 1/2 step
calculate Lagrangian position
Reimplemented from MD_base.
|
privatevirtual |
init before running md, calculate energy, force, and stress of the initial configuration.
p_esolver | the energy solver used in md |
global_readin_dir | directory of files for reading |
Reimplemented from MD_base.
|
private |
get the sum of square of velocities
|
privatevirtual |
write the information into files used for MD restarting
global_out_dir | directory of output files |
Reimplemented from MD_base.
|
private |
dilation scale
|
private |
initial energy
|
private |
Lagrangian location of cell.
|
private |
cell mass-like parameter (mass^2/length^4)
|
private |
shock msst_vel (\AA/fs)
|
private |
artificial msst_vis (mass/length/time)
|
private |
old atomic velocities
|
private |
time derivative of volume
|
private |
initial pressure
|
private |
total mass of the cell
|
private |
initial volume
|
private |
sum over v^2