[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/samomoyed/abacus-develop/develop/source/source_md/fire.cpp [Back]  [Original]

#include "fire.h"

#include "md_func.h"
#ifdef __MPI
#include "mpi.h"
#endif
#include "source_base/timer.h"

FIRE::FIRE(const Parameter& param_in, UnitCell& unit_in) : MD_base(param_in, unit_in)
{
    force_thr = param_in.inp.force_thr;
    dt_max = -1.0;
    alpha_start = 0.10;
    alpha = alpha_start;

    finc = 1.1;
    fdec = 0.5;
    f_alpha = 0.99;
    n_min = 4;
    negative_count = 0;
    max = 0.0;
    force_thr = 1e-3;
}

FIRE::~FIRE()
{
}

void FIRE::setup(ModuleESolver::ESolver* p_esolver, const std::string& global_readin_dir)
{
    ModuleBase::TITLE("FIRE", "setup");
    ModuleBase::timer::tick("FIRE", "setup");

    MD_base::setup(p_esolver, global_readin_dir);

    check_force();

    ModuleBase::timer::tick("FIRE", "setup");

    return;
}

void FIRE::first_half(std::ofstream& ofs)
{
    ModuleBase::TITLE("FIRE", "first_half");
    ModuleBase::timer::tick("FIRE", "first_half");

    MD_base::update_vel(force);

    check_fire();

    MD_base::update_pos();

    ModuleBase::timer::tick("FIRE", "first_half");

    return;
}


void FIRE::second_half(void)
{
    ModuleBase::TITLE("FIRE", "second_half");
    ModuleBase::timer::tick("FIRE", "second_half");

    MD_base::update_vel(force);

    check_force();

    ModuleBase::timer::tick("FIRE", "second_half");

    return;
}


void FIRE::print_md(std::ofstream& ofs, const bool& cal_stress)
{
    MD_base::print_md(ofs, cal_stress);

    const double max_force = max * ModuleBase::Hartree_to_eV * ModuleBase::ANGSTROM_AU;

	ofs 

Web Proxy Viewer  |  New URL  |  Original Page