Skip to content

Commit d2fbf91

Browse files
authored
Merge pull request #934 from YuLiu98/develop
fix(MD): init matrix in write_electric_pot function
2 parents b534c3d + ceaf893 commit d2fbf91

File tree

3 files changed

+45
-36
lines changed

3 files changed

+45
-36
lines changed

source/module_md/MD_func.cpp

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -327,9 +327,9 @@ void MD_func::outStress(const ModuleBase::matrix &virial, const ModuleBase::matr
327327
}
328328

329329
void MD_func::MDdump(const int &step,
330-
const UnitCell_pseudo &unit_in,
331-
const ModuleBase::matrix &virial,
332-
const ModuleBase::Vector3<double> *force)
330+
const UnitCell_pseudo &unit_in,
331+
const ModuleBase::matrix &virial,
332+
const ModuleBase::Vector3<double> *force)
333333
{
334334
if(GlobalV::MY_RANK) return;
335335

@@ -345,48 +345,48 @@ void MD_func::MDdump(const int &step,
345345
ofs.open(file.str(), ios::app);
346346
}
347347

348-
const double unit_virial = ModuleBase::HARTREE_SI / pow(ModuleBase::BOHR_RADIUS_SI,3) * 1.0e-8;
349-
const double unit_force = ModuleBase::Hartree_to_eV * ModuleBase::ANGSTROM_AU;
348+
const double unit_virial = ModuleBase::HARTREE_SI / pow(ModuleBase::BOHR_RADIUS_SI,3) * 1.0e-8;
349+
const double unit_force = ModuleBase::Hartree_to_eV * ModuleBase::ANGSTROM_AU;
350350

351-
ofs << "MDSTEP: " << step << std::endl;
352-
ofs << std::setprecision(12) << std::setiosflags(ios::fixed);
351+
ofs << "MDSTEP: " << step << std::endl;
352+
ofs << std::setprecision(12) << std::setiosflags(ios::fixed);
353353

354-
ofs << "LATTICE_CONSTANT: " << unit_in.lat0 << std::endl;
354+
ofs << "LATTICE_CONSTANT: " << unit_in.lat0 << std::endl;
355355

356-
ofs << "LATTICE_VECTORS" << std::endl;
357-
ofs << std::setw(18) << unit_in.latvec.e11 << std::setw(18) << unit_in.latvec.e12 << std::setw(18) << unit_in.latvec.e13 << std::endl;
358-
ofs << std::setw(18) << unit_in.latvec.e21 << std::setw(18) << unit_in.latvec.e22 << std::setw(18) << unit_in.latvec.e23 << std::endl;
359-
ofs << std::setw(18) << unit_in.latvec.e31 << std::setw(18) << unit_in.latvec.e32 << std::setw(18) << unit_in.latvec.e33 << std::endl;
356+
ofs << "LATTICE_VECTORS" << std::endl;
357+
ofs << " " << unit_in.latvec.e11 << " " << unit_in.latvec.e12 << " " << unit_in.latvec.e13 << std::endl;
358+
ofs << " " << unit_in.latvec.e21 << " " << unit_in.latvec.e22 << " " << unit_in.latvec.e23 << std::endl;
359+
ofs << " " << unit_in.latvec.e31 << " " << unit_in.latvec.e32 << " " << unit_in.latvec.e33 << std::endl;
360360

361-
ofs << "VIRIAL (KBAR)" << std::endl;
362-
for(int i=0; i<3; ++i)
363-
{
364-
ofs << std::setw(18) << virial(i, 0) * unit_virial
365-
<< std::setw(18) << virial(i, 1) * unit_virial
366-
<< std::setw(18) << virial(i, 2) * unit_virial << std::endl;
367-
}
361+
ofs << "VIRIAL (KBAR)" << std::endl;
362+
for(int i=0; i<3; ++i)
363+
{
364+
ofs << " " << virial(i, 0) * unit_virial
365+
<< " " << virial(i, 1) * unit_virial
366+
<< " " << virial(i, 2) * unit_virial << std::endl;
367+
}
368368

369-
ofs << "INDEX LABEL POSITIONS FORCE (eV/Angstrom)" << std::endl;
370-
int index = 0;
371-
for(int it=0; it<unit_in.ntype; ++it)
369+
ofs << "INDEX LABEL POSITIONS FORCE (eV/Angstrom)" << std::endl;
370+
int index = 0;
371+
for(int it=0; it<unit_in.ntype; ++it)
372372
{
373373
for(int ia=0; ia<unit_in.atoms[it].na; ++ia)
374-
{
375-
ofs << std::setw(4) << index
376-
<< std::setw(4) << unit_in.atom_label[it]
377-
<< std::setw(18) << unit_in.atoms[it].tau[ia].x
378-
<< std::setw(18) << unit_in.atoms[it].tau[ia].y
379-
<< std::setw(18) << unit_in.atoms[it].tau[ia].z
380-
<< std::setw(18) << force[index].x * unit_force
381-
<< std::setw(18) << force[index].y * unit_force
382-
<< std::setw(18) << force[index].z * unit_force << std::endl;
374+
{
375+
ofs << std::setw(6) << index
376+
<< std::setw(4) << unit_in.atom_label[it]
377+
<< " " << unit_in.atoms[it].tau[ia].x
378+
<< " " << unit_in.atoms[it].tau[ia].y
379+
<< " " << unit_in.atoms[it].tau[ia].z
380+
<< " " << force[index].x * unit_force
381+
<< " " << force[index].y * unit_force
382+
<< " " << force[index].z * unit_force << std::endl;
383383
index++;
384-
}
384+
}
385385
}
386386

387-
ofs << std::endl;
388-
ofs << std::endl;
389-
ofs.close();
387+
ofs << std::endl;
388+
ofs << std::endl;
389+
ofs.close();
390390
}
391391

392392
void MD_func::getMassMbl(const UnitCell_pseudo &unit_in,

source/src_io/write_pot.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,12 @@ void Potential::write_elecstat_pot(const std::string &fn, const std::string &fn_
268268
//==========================================
269269
for (int ir = 0;ir < GlobalC::pw.nrxx;ir++)
270270
{
271-
v_elecstat[ir] = Porter[ir].real() + this->vltot[ir] + v_efield(0, ir);
271+
v_elecstat[ir] = Porter[ir].real() + this->vltot[ir];
272+
273+
if (GlobalV::EFIELD && GlobalV::DIPOLE)
274+
{
275+
v_elecstat[ir] += v_efield(0, ir);
276+
}
272277
}
273278

274279
//-------------------------------------------

source/src_pw/forces.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,10 @@ void Forces::init(ModuleBase::matrix& force)
7676
{
7777
force_e.create(GlobalC::ucell.nat, 3);
7878
Efield::compute_force(GlobalC::ucell, force_e);
79+
if(GlobalV::TEST_FORCE)
80+
{
81+
Forces::print("EFIELD FORCE (Ry/Bohr)", force_e);
82+
}
7983
}
8084

8185
//impose total force = 0

0 commit comments

Comments
 (0)