Skip to content

Commit be57137

Browse files
committed
modify the read_atom_postions
1 parent f1fc5ba commit be57137

File tree

8 files changed

+218
-219
lines changed

8 files changed

+218
-219
lines changed

source/module_cell/print_cell.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,16 @@ namespace unitcell
3333
const double& y = direct? atoms[it].taud[ia].y: atoms[it].tau[ia].y;
3434
const double& z = direct? atoms[it].taud[ia].z: atoms[it].tau[ia].z;
3535
table += FmtCore::format("%5s%-s%-5d%20.10f%20.10f%20.10f%8.4f%20.10f%20.10f%20.10f\n", // I dont know why there must be a redundant "tau[c|d]_" in the output. So ugly, it should be removed!
36-
redundant_header, atoms[it].label, ia+1, x, y, z, atoms[it].mag[ia],
37-
atoms[it].vel[ia].x, atoms[it].vel[ia].y, atoms[it].vel[ia].z);
36+
redundant_header,
37+
atoms[it].label,
38+
ia+1,
39+
x,
40+
y,
41+
z,
42+
atoms[it].mag[ia],
43+
atoms[it].vel[ia].x,
44+
atoms[it].vel[ia].y,
45+
atoms[it].vel[ia].z);
3846
}
3947
}
4048
table += "\n";

source/module_cell/read_atoms.cpp

Lines changed: 169 additions & 166 deletions
Large diffs are not rendered by default.

source/module_cell/read_stru.h

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,21 @@ namespace unitcell
1313
const double& lat0,
1414
ModuleBase::Matrix3& latvec);
1515

16+
// read in the atom information for each type of atom
1617
bool read_atom_species(std::ifstream& ifa,
1718
std::ofstream& ofs_running,
18-
UnitCell& ucell); // read in the atom information for each type of atom
19+
UnitCell& ucell);
1920

2021
bool read_lattice_constant(std::ifstream& ifa,
2122
std::ofstream& ofs_running,
2223
Lattice& lat);
24+
25+
// Read atomic positions
26+
// return 1: no problem.
27+
// return 0: some problems.
28+
bool read_atom_positions(UnitCell& ucell,
29+
std::ifstream &ifpos,
30+
std::ofstream &ofs_running,
31+
std::ofstream &ofs_warning);
2332
}
2433
#endif // READ_STRU_H

source/module_cell/test/support/mock_unitcell.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,6 @@ UnitCell::~UnitCell() {
1919
}
2020
void UnitCell::print_cell(std::ofstream& ofs) const {}
2121
void UnitCell::print_cell_xyz(const std::string& fn) const {}
22-
bool UnitCell::read_atom_positions(std::ifstream& ifpos,
23-
std::ofstream& ofs_running,
24-
std::ofstream& ofs_warning) {
25-
return true;
26-
}
27-
2822
bool UnitCell::judge_big_cell() const { return true; }
2923
void UnitCell::update_stress(ModuleBase::matrix& scs) {}
3024
void UnitCell::update_force(ModuleBase::matrix& fcs) {}

source/module_cell/test/unitcell_test.cpp

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1323,7 +1323,7 @@ TEST_F(UcellTestReadStru, ReadAtomPositionsS1)
13231323
// mandatory preliminaries
13241324
delete[] ucell->magnet.start_magnetization;
13251325
ucell->magnet.start_magnetization = new double[ucell->ntype];
1326-
ucell->read_atom_positions(ifa, ofs_running, ofs_warning);
1326+
unitcell::read_atom_positions(*ucell,ifa, ofs_running, ofs_warning);
13271327
ofs_running.close();
13281328
ofs_warning.close();
13291329
ifa.close();
@@ -1355,7 +1355,7 @@ TEST_F(UcellTestReadStru, ReadAtomPositionsS2)
13551355
// mandatory preliminaries
13561356
delete[] ucell->magnet.start_magnetization;
13571357
ucell->magnet.start_magnetization = new double[ucell->ntype];
1358-
ucell->read_atom_positions(ifa, ofs_running, ofs_warning);
1358+
unitcell::read_atom_positions(*ucell,ifa, ofs_running, ofs_warning);
13591359
ofs_running.close();
13601360
ofs_warning.close();
13611361
ifa.close();
@@ -1388,7 +1388,7 @@ TEST_F(UcellTestReadStru, ReadAtomPositionsS4Noncolin)
13881388
// mandatory preliminaries
13891389
delete[] ucell->magnet.start_magnetization;
13901390
ucell->magnet.start_magnetization = new double[ucell->ntype];
1391-
ucell->read_atom_positions(ifa, ofs_running, ofs_warning);
1391+
unitcell::read_atom_positions(*ucell,ifa, ofs_running, ofs_warning);
13921392
ofs_running.close();
13931393
ofs_warning.close();
13941394
ifa.close();
@@ -1421,7 +1421,7 @@ TEST_F(UcellTestReadStru, ReadAtomPositionsS4Colin)
14211421
// mandatory preliminaries
14221422
delete[] ucell->magnet.start_magnetization;
14231423
ucell->magnet.start_magnetization = new double[ucell->ntype];
1424-
ucell->read_atom_positions(ifa, ofs_running, ofs_warning);
1424+
unitcell::read_atom_positions(*ucell,ifa, ofs_running, ofs_warning);
14251425
ofs_running.close();
14261426
ofs_warning.close();
14271427
ifa.close();
@@ -1453,7 +1453,7 @@ TEST_F(UcellTestReadStru, ReadAtomPositionsC)
14531453
// mandatory preliminaries
14541454
delete[] ucell->magnet.start_magnetization;
14551455
ucell->magnet.start_magnetization = new double[ucell->ntype];
1456-
ucell->read_atom_positions(ifa, ofs_running, ofs_warning);
1456+
unitcell::read_atom_positions(*ucell,ifa, ofs_running, ofs_warning);
14571457
ofs_running.close();
14581458
ofs_warning.close();
14591459
ifa.close();
@@ -1485,7 +1485,7 @@ TEST_F(UcellTestReadStru, ReadAtomPositionsCA)
14851485
// mandatory preliminaries
14861486
delete[] ucell->magnet.start_magnetization;
14871487
ucell->magnet.start_magnetization = new double[ucell->ntype];
1488-
ucell->read_atom_positions(ifa, ofs_running, ofs_warning);
1488+
unitcell::read_atom_positions(*ucell,ifa, ofs_running, ofs_warning);
14891489
ofs_running.close();
14901490
ofs_warning.close();
14911491
ifa.close();
@@ -1517,7 +1517,7 @@ TEST_F(UcellTestReadStru, ReadAtomPositionsCACXY)
15171517
// mandatory preliminaries
15181518
delete[] ucell->magnet.start_magnetization;
15191519
ucell->magnet.start_magnetization = new double[ucell->ntype];
1520-
ucell->read_atom_positions(ifa, ofs_running, ofs_warning);
1520+
unitcell::read_atom_positions(*ucell,ifa, ofs_running, ofs_warning);
15211521
ofs_running.close();
15221522
ofs_warning.close();
15231523
ifa.close();
@@ -1549,7 +1549,7 @@ TEST_F(UcellTestReadStru, ReadAtomPositionsCACXZ)
15491549
// mandatory preliminaries
15501550
delete[] ucell->magnet.start_magnetization;
15511551
ucell->magnet.start_magnetization = new double[ucell->ntype];
1552-
ucell->read_atom_positions(ifa, ofs_running, ofs_warning);
1552+
unitcell::read_atom_positions(*ucell,ifa, ofs_running, ofs_warning);
15531553
ofs_running.close();
15541554
ofs_warning.close();
15551555
ifa.close();
@@ -1581,7 +1581,7 @@ TEST_F(UcellTestReadStru, ReadAtomPositionsCACYZ)
15811581
// mandatory preliminaries
15821582
delete[] ucell->magnet.start_magnetization;
15831583
ucell->magnet.start_magnetization = new double[ucell->ntype];
1584-
ucell->read_atom_positions(ifa, ofs_running, ofs_warning);
1584+
unitcell::read_atom_positions(*ucell,ifa, ofs_running, ofs_warning);
15851585
ofs_running.close();
15861586
ofs_warning.close();
15871587
ifa.close();
@@ -1613,7 +1613,7 @@ TEST_F(UcellTestReadStru, ReadAtomPositionsCACXYZ)
16131613
// mandatory preliminaries
16141614
delete[] ucell->magnet.start_magnetization;
16151615
ucell->magnet.start_magnetization = new double[ucell->ntype];
1616-
ucell->read_atom_positions(ifa, ofs_running, ofs_warning);
1616+
unitcell::read_atom_positions(*ucell,ifa, ofs_running, ofs_warning);
16171617
ofs_running.close();
16181618
ofs_warning.close();
16191619
ifa.close();
@@ -1646,7 +1646,7 @@ TEST_F(UcellTestReadStru, ReadAtomPositionsCAU)
16461646
// mandatory preliminaries
16471647
delete[] ucell->magnet.start_magnetization;
16481648
ucell->magnet.start_magnetization = new double[ucell->ntype];
1649-
ucell->read_atom_positions(ifa, ofs_running, ofs_warning);
1649+
unitcell::read_atom_positions(*ucell,ifa, ofs_running, ofs_warning);
16501650
ofs_running.close();
16511651
ofs_warning.close();
16521652
ifa.close();
@@ -1678,7 +1678,7 @@ TEST_F(UcellTestReadStru, ReadAtomPositionsAutosetMag)
16781678
// mandatory preliminaries
16791679
delete[] ucell->magnet.start_magnetization;
16801680
ucell->magnet.start_magnetization = new double[ucell->ntype];
1681-
ucell->read_atom_positions(ifa, ofs_running, ofs_warning);
1681+
unitcell::read_atom_positions(*ucell,ifa, ofs_running, ofs_warning);
16821682
for (int it = 0; it < ucell->ntype; it++)
16831683
{
16841684
for (int ia = 0; ia < ucell->atoms[it].na; ia++)
@@ -1691,7 +1691,7 @@ TEST_F(UcellTestReadStru, ReadAtomPositionsAutosetMag)
16911691
PARAM.input.nspin = 4;
16921692
delete[] ucell->magnet.start_magnetization;
16931693
ucell->magnet.start_magnetization = new double[ucell->ntype];
1694-
ucell->read_atom_positions(ifa, ofs_running, ofs_warning);
1694+
unitcell::read_atom_positions(*ucell,ifa, ofs_running, ofs_warning);
16951695
for (int it = 0; it < ucell->ntype; it++)
16961696
{
16971697
for (int ia = 0; ia < ucell->atoms[it].na; ia++)
@@ -1732,7 +1732,7 @@ TEST_F(UcellTestReadStru, ReadAtomPositionsWarning1)
17321732
// mandatory preliminaries
17331733
delete[] ucell->magnet.start_magnetization;
17341734
ucell->magnet.start_magnetization = new double[ucell->ntype];
1735-
EXPECT_NO_THROW(ucell->read_atom_positions(ifa, ofs_running, ofs_warning));
1735+
EXPECT_NO_THROW(unitcell::read_atom_positions(*ucell,ifa, ofs_running, ofs_warning));
17361736
ofs_running.close();
17371737
ofs_warning.close();
17381738
ifa.close();
@@ -1776,7 +1776,7 @@ TEST_F(UcellTestReadStru, ReadAtomPositionsWarning2)
17761776
// mandatory preliminaries
17771777
delete[] ucell->magnet.start_magnetization;
17781778
ucell->magnet.start_magnetization = new double[ucell->ntype];
1779-
EXPECT_NO_THROW(ucell->read_atom_positions(ifa, ofs_running, ofs_warning));
1779+
EXPECT_NO_THROW(unitcell::read_atom_positions(*ucell,ifa, ofs_running, ofs_warning));
17801780
ofs_running.close();
17811781
ofs_warning.close();
17821782
ifa.close();
@@ -1813,7 +1813,7 @@ TEST_F(UcellTestReadStru, ReadAtomPositionsWarning3)
18131813
// mandatory preliminaries
18141814
delete[] ucell->magnet.start_magnetization;
18151815
ucell->magnet.start_magnetization = new double[ucell->ntype];
1816-
EXPECT_NO_THROW(ucell->read_atom_positions(ifa, ofs_running, GlobalV::ofs_warning));
1816+
EXPECT_NO_THROW(unitcell::read_atom_positions(*ucell,ifa, ofs_running, GlobalV::ofs_warning));
18171817
ofs_running.close();
18181818
GlobalV::ofs_warning.close();
18191819
ifa.close();
@@ -1852,7 +1852,7 @@ TEST_F(UcellTestReadStru, ReadAtomPositionsWarning4)
18521852
delete[] ucell->magnet.start_magnetization;
18531853
ucell->magnet.start_magnetization = new double[ucell->ntype];
18541854
testing::internal::CaptureStdout();
1855-
EXPECT_EXIT(ucell->read_atom_positions(ifa, ofs_running, ofs_warning), ::testing::ExitedWithCode(1), "");
1855+
EXPECT_EXIT(unitcell::read_atom_positions(*ucell,ifa, ofs_running, ofs_warning), ::testing::ExitedWithCode(1), "");
18561856
output = testing::internal::GetCapturedStdout();
18571857
EXPECT_THAT(output, testing::HasSubstr("read_atom_positions, mismatch in atom number for atom type: Mg"));
18581858
ofs_running.close();
@@ -1886,7 +1886,7 @@ TEST_F(UcellTestReadStru, ReadAtomPositionsWarning5)
18861886
// mandatory preliminaries
18871887
delete[] ucell->magnet.start_magnetization;
18881888
ucell->magnet.start_magnetization = new double[ucell->ntype];
1889-
EXPECT_NO_THROW(ucell->read_atom_positions(ifa, ofs_running, GlobalV::ofs_warning));
1889+
EXPECT_NO_THROW(unitcell::read_atom_positions(*ucell,ifa, ofs_running, GlobalV::ofs_warning));
18901890
ofs_running.close();
18911891
GlobalV::ofs_warning.close();
18921892
ifa.close();

source/module_cell/test_pw/unitcell_test_pw.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ if(GlobalV::MY_RANK==0)
105105
delete[] ucell->magnet.start_magnetization;
106106
ucell->magnet.start_magnetization = new double[ucell->ntype];
107107
//call read_atom_positions
108-
EXPECT_NO_THROW(ucell->read_atom_positions(ifa,ofs_running,ofs_warning));
108+
EXPECT_NO_THROW(unitcell::read_atom_positions(*ucell,ifa, ofs_running, ofs_warning));
109109
ofs_running.close();
110110
ofs_warning.close();
111111
ifa.close();

source/module_cell/unitcell.cpp

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,28 @@
11
#include <cstdlib>
2-
#ifdef __MPI
3-
#include "mpi.h"
4-
#endif
2+
#include <cstring> // Peize Lin fix bug about strcmp 2016-08-02
53

64
#include "module_base/constants.h"
75
#include "module_base/global_function.h"
86
#include "module_base/global_variable.h"
97
#include "unitcell.h"
108
#include "bcast_cell.h"
119
#include "module_parameter/parameter.h"
12-
#include "read_stru.h"
13-
#ifdef __LCAO
14-
#include "../module_basis/module_ao/ORB_read.h" // to use 'ORB' -- mohan 2021-01-30
15-
#endif
10+
#include "module_cell/read_stru.h"
1611
#include "module_base/atom_in.h"
1712
#include "module_base/element_elec_config.h"
1813
#include "module_base/global_file.h"
1914
#include "module_base/parallel_common.h"
20-
21-
#include <cstring> // Peize Lin fix bug about strcmp 2016-08-02
2215
#include "module_parameter/parameter.h"
16+
17+
#ifdef __MPI
18+
#include "mpi.h"
19+
#endif
2320
#ifdef USE_PAW
2421
#include "module_cell/module_paw/paw_cell.h"
2522
#endif
26-
23+
#ifdef __LCAO
24+
#include "../module_basis/module_ao/ORB_read.h" // to use 'ORB' -- mohan 2021-01-30
25+
#endif
2726

2827
#include "update_cell.h"
2928
UnitCell::UnitCell() {
@@ -298,7 +297,7 @@ void UnitCell::setup_cell(const std::string& fn, std::ofstream& log) {
298297
//==========================
299298
// call read_atom_positions
300299
//==========================
301-
ok2 = this->read_atom_positions(ifa, log, GlobalV::ofs_warning);
300+
ok2 = unitcell::read_atom_positions(*this,ifa, log, GlobalV::ofs_warning);
302301
}
303302
}
304303
#ifdef __MPI

source/module_cell/unitcell.h

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -221,20 +221,6 @@ class UnitCell {
221221
// 2021-09-07
222222
#endif
223223

224-
// /// @brief read number of numerical orbitals for each angular momentum
225-
// /// @param it index of atom type
226-
// /// @param orb_file orbital filename
227-
// /// @param ofs_running ofstream
228-
// /// @param atom Atom instance stored in UnitCell
229-
// void read_orb_file(int it,
230-
// std::string& orb_file,
231-
// std::ofstream& ofs_running,
232-
// Atom* atom);
233-
bool read_atom_positions(
234-
std::ifstream& ifpos,
235-
std::ofstream& ofs_running,
236-
std::ofstream& ofs_warning); // read in atomic positions
237-
238224
int find_type(const std::string& label);
239225

240226
// for constrained vc-relaxation where type of lattice

0 commit comments

Comments
 (0)