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

MSST method. More...

#include <msst.h>

Inheritance diagram for MSST:
Collaboration diagram for MSST:

Public Member Functions

 MSST (const Parameter &param_in, UnitCell &unit_in)
 
 ~MSST ()
 
- 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
 
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

- 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

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.

Constructor & Destructor Documentation

◆ MSST()

MSST::MSST ( const Parameter param_in,
UnitCell unit_in 
)
Here is the call graph for this function:

◆ ~MSST()

MSST::~MSST ( )

Member Function Documentation

◆ first_half()

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

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

Parameters
ofsdetermine 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.

Here is the call graph for this function:

◆ print_md()

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

◆ propagate_vel()

void MSST::propagate_vel ( void  )
private

propagate atomic velocities

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

◆ propagate_voldot()

void MSST::propagate_voldot ( void  )
private

propagate the volume change rate

prevent the increase of volume

avoid singularity at B = 0 with Taylor expansion

Here is the caller graph for this function:

◆ rescale()

void MSST::rescale ( std::ofstream &  ofs,
const double &  volume 
)
private

rescale the lattice and velocities

Parameters
ofsdetermine the output files
volumethe current cell volume

rescale velocity

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

◆ restart()

void MSST::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 MSST::second_half ( void  )
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.

Here is the call graph for this function:

◆ setup()

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

◆ vel_sum()

double MSST::vel_sum ( )
private

get the sum of square of velocities

Returns
the sum of square of velocities
Here is the call graph for this function:
Here is the caller graph for this function:

◆ write_restart()

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

◆ dilation

ModuleBase::Vector3<double> MSST::dilation
private

dilation scale

◆ e0

double MSST::e0
private

initial energy

◆ lag_pos

double MSST::lag_pos
private

Lagrangian location of cell.

◆ msst_qmass

double MSST::msst_qmass
private

cell mass-like parameter (mass^2/length^4)

◆ msst_vel

double MSST::msst_vel
private

shock msst_vel (\AA/fs)

◆ msst_vis

double MSST::msst_vis
private

artificial msst_vis (mass/length/time)

◆ old_v

ModuleBase::Vector3<double>* MSST::old_v
private

old atomic velocities

◆ omega

ModuleBase::Vector3<double> MSST::omega
private

time derivative of volume

◆ p0

double MSST::p0
private

initial pressure

◆ totmass

double MSST::totmass
private

total mass of the cell

◆ v0

double MSST::v0
private

initial volume

◆ vsum

double MSST::vsum
private

sum over v^2


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