hermite_conversion_prep.h

Go to the documentation of this file.
00001 /* Ergo, version 3.2, a program for linear scaling electronic structure
00002  * calculations.
00003  * Copyright (C) 2012 Elias Rudberg, Emanuel H. Rubensson, and Pawel Salek.
00004  * 
00005  * This program is free software: you can redistribute it and/or modify
00006  * it under the terms of the GNU General Public License as published by
00007  * the Free Software Foundation, either version 3 of the License, or
00008  * (at your option) any later version.
00009  * 
00010  * This program is distributed in the hope that it will be useful,
00011  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013  * GNU General Public License for more details.
00014  * 
00015  * You should have received a copy of the GNU General Public License
00016  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
00017  * 
00018  * Primary academic reference:
00019  * Kohn−Sham Density Functional Theory Electronic Structure Calculations 
00020  * with Linearly Scaling Computational Time and Memory Usage,
00021  * Elias Rudberg, Emanuel H. Rubensson, and Pawel Salek,
00022  * J. Chem. Theory Comput. 7, 340 (2011),
00023  * <http://dx.doi.org/10.1021/ct100611z>
00024  * 
00025  * For further information about Ergo, see <http://www.ergoscf.org>.
00026  */
00027 
00028 #ifndef HERMITE_CONVERSION_PREP_HEADER
00029 #define HERMITE_CONVERSION_PREP_HEADER
00030 
00031 #include "realtype.h"
00032 #include "polydegree.h"
00033 #include "monomial_info.h"
00034 
00035 struct hermite_conversion_contrib_struct
00036 {
00037   int destIndex;
00038   int sourceIndex;
00039   int a_power;
00040   int dummy;
00041   ergo_real coeff;
00042 };
00043 
00044 typedef hermite_conversion_contrib_struct * hermite_conversion_contrib_struct_ptr;
00045 
00046 const int HERMITE_CONVERSION_MAX_N = BASIS_FUNC_POLY_MAX_DEGREE*2;
00047 
00048 struct hermite_conversion_info_struct
00049 {
00050   hermite_conversion_contrib_struct_ptr list_right[HERMITE_CONVERSION_MAX_N+1][HERMITE_CONVERSION_MAX_N+1];
00051   hermite_conversion_contrib_struct_ptr list_left [HERMITE_CONVERSION_MAX_N+1][HERMITE_CONVERSION_MAX_N+1];
00052   int counters_right[HERMITE_CONVERSION_MAX_N+1][HERMITE_CONVERSION_MAX_N+1];
00053   int counters_left [HERMITE_CONVERSION_MAX_N+1][HERMITE_CONVERSION_MAX_N+1];
00054 
00055   monomial_info_struct monomial_info;
00056 
00057   hermite_conversion_info_struct();
00058   ~hermite_conversion_info_struct();
00059 
00060   int multiply_by_hermite_conversion_matrix_from_right(int n1max,        
00061                                                        int n2max,        
00062                                                        ergo_real a,      
00063                                                        ergo_real* A,     
00064                                                        ergo_real* result) const;
00065 
00066   int multiply_by_hermite_conversion_matrix_from_left(int n1max,        
00067                                                       int n2max,        
00068                                                       ergo_real a,      
00069                                                       ergo_real* A,     
00070                                                       ergo_real* result) const;
00071 };
00072 
00073 
00074 #endif

Generated on Wed Nov 21 09:32:10 2012 for ergo by  doxygen 1.4.7