Scine::Sparrow  5.0.0
Library for fast and agile quantum chemical calculations with semiempirical methods.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Pages
OrbitalRotation.h
Go to the documentation of this file.
1 
8 #ifndef SPARROW_ORBITALROTATION_H
9 #define SPARROW_ORBITALROTATION_H
10 
11 #include "GeneralTypes.h"
13 #include <Eigen/Core>
14 
15 namespace Scine {
16 namespace Sparrow {
17 
18 namespace nddo {
19 
20 template<Utils::DerivativeOrder O>
22  public:
23  OrbitalRotation(int l1, int l2);
24  double setVector(const Eigen::Vector3d& Rab);
25  void evaluate() {
26  fillRotVector();
27  }
28  const Utils::AutomaticDifferentiation::Value3DType<O>& getRotationCoefficient(GeneralTypes::rotationOrbitalPair p) const {
29  return rotVector[static_cast<int>(p)];
30  }
31 
32  private:
33  double setUpOrderDependentValues(const Eigen::Vector3d& Rab);
34  void fillRotVector();
35 
36  Utils::AutomaticDifferentiation::Value3DType<O> rotVector[35];
37 
38  const bool needsP, needsD;
39  const double sqrt3;
40  const Utils::AutomaticDifferentiation::Value3DType<O> nullDeriv, oneDeriv;
41  Utils::AutomaticDifferentiation::Value3DType<O> X, Y, Z, R;
42  Utils::AutomaticDifferentiation::Value3DType<O> planeProj, cosa, cosb, sina, sinb, sin2b, sin2a, cos2b, cos2a, saca,
43  sbcb, dc2am1;
44 };
45 
46 } // namespace nddo
47 
48 } // namespace Sparrow
49 } // namespace Scine
50 #endif // ORBITALROTATION_H
Definition: OrbitalRotation.h:21