12 #include "../utils/map_to_index.h" 31 check_required_keys({
"atom1-id",
"atom2-id",
"atom3-id"});
35 el_atoms->check_required_keys({
"id",
"xu",
"yu",
"zu"});
40 el_atoms->make_2darray_from_data(rs_atom, {
"xu",
"yu",
"zu"});
42 const double rad2deg = 180.0 / M_PI;
46 RowVector3d r1 = rs_atom.row(id2index_atom[d[
"atom1-id"]]);
47 RowVector3d r2 = rs_atom.row(id2index_atom[d[
"atom2-id"]]);
48 RowVector3d r3 = rs_atom.row(id2index_atom[d[
"atom3-id"]]);
53 d[
"angle"] = rad2deg * acos(
54 vec1.dot(vec2) / (vec1.norm() * vec2.norm()));
Eigen::RowVector3d RowVector3d
RowVector3d is an alias for a 3-elements row vector of Eigen float numbers.
ShPtr< Element > ElPtr
An alias for a shared pointer of Element class.
Eigen::Array< double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor > ArrayXXd
ArrayXXd is an alias for a two-dimensional array of float numbers.
std::function< bool(const Json &)> JsonToBoolFunc
An alias for a function accepts a Json object and returns a bool.
nlohmann::json Json
Json is an alias for nlohmann::json.
ShPtr< Generator > ext_generator
virtual void compute_impl(Json &data, JsonToVoidFunc check_required_keys, JsonToBoolFunc check_optional_keys) override
This method overrides Updater::compute_impl.
Namespace for utility functions.
This file has a definition of AddBondAngle class, which is a subclass of Adder class.
std::function< void(const Json &)> JsonToVoidFunc
An alias for a function accepts a Json object.
AddBondAngle(const ElPtr &elem)
Constructor of AddBondAngle class.
Map< Json, int > map_to_index(const Json &data, const Str &key)
Create a Map object from values of selected property in an array Json object to corresponding index i...