1 #ifndef QNANO_NEW_NEIGHBOR_LIST_DEFINED_H 2 #define QNANO_NEW_NEIGHBOR_LIST_DEFINED_H 4 #include "structure/Neighbor.h" 5 #include "tightbinding/TB_Parameter_List.h" 6 #include "structure/Atoms_in_Boxes.h" 7 #include "structure/Atom_List.h" 8 #include "structure/Neighborhood_Criterion_Lattice.h" 9 #include "structure/Periodic_Vecs.h" 28 void calculate(
const Atom_List &atlist,
const Lattice &lat,
const std::vector<Vec3d> & periodic_vec=std::vector<Vec3d>(),
double tolerance=0.20){
30 calculate(atlist, criterion, periodic_vec, criterion.upper_bound_radius());
45 size_t get_max_neighbors_per_atom()
const;
47 void read(
const std::string &filename,
const Atom_List &atlist);
49 void print(
const std::string &filename)
const;
51 void print_withD(
const std::string &filename)
const;
55 void check_consistency()
const;
60 calculate(atlist, criterion, periodic_vec, boxwidth);
62 Neighbor_List(
const Atom_List &atlist,
const Lattice &lat,
const std::vector<Vec3d> &periodic_vec=std::vector<Vec3d>(),
double tolerance=0.2){
63 calculate(atlist, lat, periodic_vec, tolerance);
Definition: Parameter_Map.h:12
Class to store positions and to handle operations on 3d vectors.
Definition: Vec3d.h:9
void add(const Atom_List &atlist, const Neighborhood_Criterion &criterion, double boxwidth=-1.)
calculate neighbors from Atom_List according to the specified Neighborhood_Criterion, then add them to the existing neighbors
Definition: Neighbor_List.cc:21
Definition: Atom_List.h:9
Definition: List_Class.h:8
Definition: Neighbor_List.h:12
Definition: TB_Parameter_List.h:8
Definition: Neighborhood_Criterion_Lattice.h:7
void add_shifted(const Atom_List &atlist, const Neighborhood_Criterion &criterion, const Vec3d &shift, double boxwidth=-1.)
Same as 'add' but shift the atom positions before checking if the Neighborhood_Criterion is fulfilled...
Definition: Neighbor_List.cc:25
Definition: Neighborhood_Criterion.h:6
void calculate_unrelaxed(const Atom_List &atlist, const Lattice &lat, double tolerance=0.2)
Same as 'calculate', but set the bond vector 'D' of each 'Neighbor' to one matching a neighbor in an ...
Definition: Neighbor_List.cc:120
void setup(Parameter_Map ¶m_map, const Atom_List &atlist)
setup from command line parameters. Typically, an Atom_List has to be set up anyway, so use if it possible
Definition: Neighbor_List.cc:4
void calculate(const Atom_List &atlist, const Neighborhood_Criterion &criterion, const std::vector< Vec3d > &periodic_vec=std::vector< Vec3d >(), double boxwidth=-1.)
Clear existing data and 'add'.
Definition: Neighbor_List.cc:59
bool calcualte_unrelaxed_single(const Neighbor_List &other, size_t index, size_t n, const Lattice &lat, double tolerance=0.2, const Vec3d &shift=Vec3d())
If there is more than one material, there is more than one equilibrium lattice. Thus, we have to go through all atoms individually to get the correct equilibirum distance vectors. Returns false if neighbor is not found.
Definition: Neighbor_List.cc:105