ergo
hermite_conversion_prep.h
Go to the documentation of this file.
1 /* Ergo, version 3.3, a program for linear scaling electronic structure
2  * calculations.
3  * Copyright (C) 2013 Elias Rudberg, Emanuel H. Rubensson, and Pawel Salek.
4  *
5  * This program is free software: you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation, either version 3 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17  *
18  * Primary academic reference:
19  * Kohn−Sham Density Functional Theory Electronic Structure Calculations
20  * with Linearly Scaling Computational Time and Memory Usage,
21  * Elias Rudberg, Emanuel H. Rubensson, and Pawel Salek,
22  * J. Chem. Theory Comput. 7, 340 (2011),
23  * <http://dx.doi.org/10.1021/ct100611z>
24  *
25  * For further information about Ergo, see <http://www.ergoscf.org>.
26  */
27 
28 #ifndef HERMITE_CONVERSION_PREP_HEADER
29 #define HERMITE_CONVERSION_PREP_HEADER
30 
31 #include <cstring>
32 #include "realtype.h"
33 #include "polydegree.h"
34 #include "monomial_info.h"
35 
37 {
38  int destIndex;
40  int a_power;
41  int dummy;
43 };
44 
46 
48 
50  private:
55  public:
56  void init(const monomial_info_struct & monomial_info);
60  int n1max,
61  int n2max,
62  ergo_real a,
63  ergo_real* A,
64  ergo_real* result) const;
66  int n1max,
67  int n2max,
68  ergo_real a,
69  ergo_real* A,
70  ergo_real* result) const;
71  // Stuff needed for Chunks&Tasks usage
73  void write_to_buffer ( char * dataBuffer, size_t const bufferSize ) const;
74  size_t get_size() const;
75  void assign_from_buffer ( char const * dataBuffer, size_t const bufferSize);
76 };
77 
78 
79 #endif
#define A
Definition: monomial_info.h:46
double ergo_real
Definition: realtype.h:53
int multiply_by_hermite_conversion_matrix_from_left(const monomial_info_struct &monomial_info, int n1max, int n2max, ergo_real a, ergo_real *A, ergo_real *result) const
Definition: hermite_conversion_prep.cc:164
int counters_left[HERMITE_CONVERSION_MAX_N+1][HERMITE_CONVERSION_MAX_N+1]
Definition: hermite_conversion_prep.h:54
hermite_conversion_info_struct()
Definition: hermite_conversion_prep.cc:116
int multiply_by_hermite_conversion_matrix_from_right(const monomial_info_struct &monomial_info, int n1max, int n2max, ergo_real a, ergo_real *A, ergo_real *result) const
Definition: hermite_conversion_prep.cc:135
const int HERMITE_CONVERSION_MAX_N
Definition: hermite_conversion_prep.h:47
hermite_conversion_contrib_struct_ptr list_right[HERMITE_CONVERSION_MAX_N+1][HERMITE_CONVERSION_MAX_N+1]
Definition: hermite_conversion_prep.h:51
#define BASIS_FUNC_POLY_MAX_DEGREE
Definition: polydegree.h:41
int a_power
Definition: hermite_conversion_prep.h:40
int sourceIndex
Definition: hermite_conversion_prep.h:39
hermite_conversion_contrib_struct_ptr list_left[HERMITE_CONVERSION_MAX_N+1][HERMITE_CONVERSION_MAX_N+1]
Definition: hermite_conversion_prep.h:52
ergo_real coeff
Definition: hermite_conversion_prep.h:42
Definition: hermite_conversion_prep.h:49
void write_to_buffer(char *dataBuffer, size_t const bufferSize) const
Function needed for Chunks&Tasks usage.
Definition: hermite_conversion_prep.cc:208
Definition: hermite_conversion_prep.h:36
int destIndex
Definition: hermite_conversion_prep.h:38
size_t get_size() const
Function needed for Chunks&Tasks usage.
Definition: hermite_conversion_prep.cc:230
void init(const monomial_info_struct &monomial_info)
Definition: hermite_conversion_prep.cc:44
int dummy
Definition: hermite_conversion_prep.h:41
void assign_from_buffer(char const *dataBuffer, size_t const bufferSize)
Function needed for Chunks&Tasks usage.
Definition: hermite_conversion_prep.cc:242
int counters_right[HERMITE_CONVERSION_MAX_N+1][HERMITE_CONVERSION_MAX_N+1]
Definition: hermite_conversion_prep.h:53
hermite_conversion_contrib_struct * hermite_conversion_contrib_struct_ptr
Definition: hermite_conversion_prep.h:45
~hermite_conversion_info_struct()
Definition: hermite_conversion_prep.cc:125