votca 2024.1-dev
Loading...
Searching...
No Matches
sphere_lebedev_rule.h
Go to the documentation of this file.
1/*
2 * Copyright 2009-2020 The VOTCA Development Team
3 * (http://www.votca.org)
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License")
6 *
7 * You may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 *
18 */
19
20#pragma once
21#ifndef VOTCA_XTP_SPHERE_LEBEDEV_RULE_H
22#define VOTCA_XTP_SPHERE_LEBEDEV_RULE_H
23
24// Third party includes
25#include <boost/math/constants/constants.hpp>
26
27// VOTCA includes
29
30// Local VOTCA includes
31#include "grid_containers.h"
32#include "qmmolecule.h"
33
34namespace votca {
35namespace xtp {
36
38 public:
44
45 std::map<std::string, GridContainers::spherical_grid> CalculateSphericalGrids(
46 const QMMolecule &atoms, const std::string &type) const;
48 const std::string &element, const std::string &type) const;
50
51 Index Type2MaxOrder(const std::string &element,
52 const std::string &type) const;
53
55 if (Order2Index.count(order)) {
56 return Order2Index.at(order);
57 } else {
58 throw std::runtime_error("No Index for Order " + std::to_string(order));
59 }
60 }
62 if (Index2Order.count(index)) {
63 return Index2Order.at(index);
64 } else {
65 throw std::runtime_error("No Order for Index " + std::to_string(index));
66 }
67 }
68
69 private:
70 Index Type2MaxOrder(const std::map<std::string, Index> &map,
71 const std::string &element) const;
72
73 Index available_table(Index rule) const;
74 Index gen_oh(Index code, double a, double b, double v, double *x, double *y,
75 double *z, double *w) const;
76 Eigen::Matrix4Xd ld_by_order(Index order) const;
77 void ld0006(double *x, double *y, double *z, double *w) const;
78 void ld0014(double *x, double *y, double *z, double *w) const;
79 void ld0026(double *x, double *y, double *z, double *w) const;
80 void ld0038(double *x, double *y, double *z, double *w) const;
81 void ld0050(double *x, double *y, double *z, double *w) const;
82 void ld0074(double *x, double *y, double *z, double *w) const;
83 void ld0086(double *x, double *y, double *z, double *w) const;
84 void ld0110(double *x, double *y, double *z, double *w) const;
85 void ld0146(double *x, double *y, double *z, double *w) const;
86 void ld0170(double *x, double *y, double *z, double *w) const;
87 void ld0194(double *x, double *y, double *z, double *w) const;
88 void ld0230(double *x, double *y, double *z, double *w) const;
89 void ld0266(double *x, double *y, double *z, double *w) const;
90 void ld0302(double *x, double *y, double *z, double *w) const;
91 void ld0350(double *x, double *y, double *z, double *w) const;
92 void ld0434(double *x, double *y, double *z, double *w) const;
93 void ld0590(double *x, double *y, double *z, double *w) const;
94 void ld0770(double *x, double *y, double *z, double *w) const;
95 void ld0974(double *x, double *y, double *z, double *w) const;
96 void ld1202(double *x, double *y, double *z, double *w) const;
97 void ld1454(double *x, double *y, double *z, double *w) const;
98 void ld1730(double *x, double *y, double *z, double *w) const;
99 void ld2030(double *x, double *y, double *z, double *w) const;
100 void ld2354(double *x, double *y, double *z, double *w) const;
101 void ld2702(double *x, double *y, double *z, double *w) const;
102 void ld3074(double *x, double *y, double *z, double *w) const;
103 void ld3470(double *x, double *y, double *z, double *w) const;
104 void ld3890(double *x, double *y, double *z, double *w) const;
105 void ld4334(double *x, double *y, double *z, double *w) const;
106 void ld4802(double *x, double *y, double *z, double *w) const;
107 void ld5294(double *x, double *y, double *z, double *w) const;
108 void ld5810(double *x, double *y, double *z, double *w) const;
109 Index precision_table(Index rule) const;
110 Index order_table(Index rule) const;
111 Eigen::Vector2d Cartesian2SphericalAngle(
112 const Eigen::Vector3d &r) const; // phi=Vector[0] theta=Vector[1]
113
114 std::map<std::string, Index> MediumOrder;
115 std::map<std::string, Index> CoarseOrder;
116 std::map<std::string, Index> XcoarseOrder;
117 std::map<std::string, Index> FineOrder;
118 std::map<std::string, Index> XfineOrder;
119 std::map<Index, Index> Order2Index;
120 std::map<Index, Index> Index2Order;
121
122 void FillOrder2Index();
123
124 void FillIndex2Order();
125
126 void FillOrders();
127
128 void FillMediumOrder();
129
130 void FillFineOrder();
131
132 void FillXfineOrder();
133
134 void FillCoarseOrder();
135
136 void FillXcoarseOrder();
137};
138
139} // namespace xtp
140} // namespace votca
141#endif // VOTCA_XTP_SPHERE_LEBEDEV_RULE_H
void ld1454(double *x, double *y, double *z, double *w) const
void ld1202(double *x, double *y, double *z, double *w) const
void ld3470(double *x, double *y, double *z, double *w) const
Eigen::Matrix4Xd ld_by_order(Index order) const
void ld0038(double *x, double *y, double *z, double *w) const
void ld0302(double *x, double *y, double *z, double *w) const
void ld0006(double *x, double *y, double *z, double *w) const
std::map< Index, Index > Order2Index
std::map< std::string, Index > XcoarseOrder
Index available_table(Index rule) const
void ld0350(double *x, double *y, double *z, double *w) const
void ld2030(double *x, double *y, double *z, double *w) const
void ld0974(double *x, double *y, double *z, double *w) const
void ld4334(double *x, double *y, double *z, double *w) const
void ld1730(double *x, double *y, double *z, double *w) const
void ld0590(double *x, double *y, double *z, double *w) const
Eigen::Vector2d Cartesian2SphericalAngle(const Eigen::Vector3d &r) const
void ld0194(double *x, double *y, double *z, double *w) const
void ld0086(double *x, double *y, double *z, double *w) const
Index getIndexFromOrder(Index order) const
void ld0170(double *x, double *y, double *z, double *w) const
std::map< std::string, Index > CoarseOrder
void ld0770(double *x, double *y, double *z, double *w) const
void ld0110(double *x, double *y, double *z, double *w) const
std::map< Index, Index > Index2Order
std::map< std::string, Index > MediumOrder
Index getOrderFromIndex(Index index) const
void ld0050(double *x, double *y, double *z, double *w) const
void ld2702(double *x, double *y, double *z, double *w) const
void ld0434(double *x, double *y, double *z, double *w) const
void ld5810(double *x, double *y, double *z, double *w) const
void ld4802(double *x, double *y, double *z, double *w) const
void ld3074(double *x, double *y, double *z, double *w) const
void ld0146(double *x, double *y, double *z, double *w) const
void ld0230(double *x, double *y, double *z, double *w) const
Index order_table(Index rule) const
void ld3890(double *x, double *y, double *z, double *w) const
std::map< std::string, GridContainers::spherical_grid > CalculateSphericalGrids(const QMMolecule &atoms, const std::string &type) const
Index Type2MaxOrder(const std::string &element, const std::string &type) const
Index gen_oh(Index code, double a, double b, double v, double *x, double *y, double *z, double *w) const
void ld0014(double *x, double *y, double *z, double *w) const
void ld0266(double *x, double *y, double *z, double *w) const
std::map< std::string, Index > XfineOrder
Index precision_table(Index rule) const
void ld5294(double *x, double *y, double *z, double *w) const
GridContainers::spherical_grid CalculateUnitSphereGrid(const std::string &element, const std::string &type) const
std::map< std::string, Index > FineOrder
void ld2354(double *x, double *y, double *z, double *w) const
void ld0074(double *x, double *y, double *z, double *w) const
void ld0026(double *x, double *y, double *z, double *w) const
base class for all analysis tools
Definition basebead.h:33
Eigen::Index Index
Definition types.h:26