ergo
Main Page
Namespaces
Classes
Files
File List
File Members
grid_atomic.h
Go to the documentation of this file.
1
/* Ergo, version 3.2, a program for linear scaling electronic structure
2
* calculations.
3
* Copyright (C) 2012 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
32
#if !defined(_GRID_ATOMIC_H_)
33
#define _GRID_ATOMIC_H_ 1
34
35
#include "
realtype.h
"
36
#include "
matrix_typedefs.h
"
37
#include "
basisinfo.h
"
38
#include "
grid_interface.h
"
39
40
typedef
ergo_real
real
;
41
typedef
ergo_long_real
long_real
;
42
43
extern
const
real
BraggRadii
[];
44
extern
const
unsigned
BraggSize
;
45
46
48
struct
RadialScheme
{
49
const
char
*
name
;
50
int
gridSize
;
51
explicit
RadialScheme
(
const
char
*n) :
name
(n),
gridSize
(0) {}
52
inline
int
size
()
const
{
return
gridSize
; }
53
virtual
void
init
(
int
myNumber,
int
charge
,
real
threshold) = 0;
54
virtual
void
generate
(
real
*r,
real
*w) = 0;
55
virtual
~RadialScheme
() {}
56
};
57
58
struct
RadialSchemeGC2
:
public
RadialScheme
{
59
void
*
quadData
;
60
RadialSchemeGC2
():
RadialScheme
(
"Gauss-Chebychev scheme of second kind"
)
61
{}
62
virtual
void
init
(
int
myNumber,
int
charge
,
real
threshold);
63
virtual
void
generate
(
real
*r,
real
*w);
64
};
65
66
struct
RadialSchemeTurbo
:
public
RadialScheme
{
67
real
zeta
;
68
RadialSchemeTurbo
():
RadialScheme
(
"Chebychev T2 scheme/M4 mapping (Turbo)"
)
69
{}
70
virtual
void
init
(
int
myNumber,
int
charge
,
real
threshold);
71
virtual
void
generate
(
real
*r,
real
*w);
72
};
73
74
struct
RadialSchemeLMG
:
public
RadialScheme
{
75
explicit
RadialSchemeLMG
(
const
GridGenMolInfo
& ggmi_);
76
77
virtual
void
init
(
int
myNumber,
int
charge
,
real
threshold);
78
virtual
void
generate
(
real
*r,
real
*w);
79
virtual
~RadialSchemeLMG
();
80
private
:
81
const
GridGenMolInfo
&
ggmi
;
82
int
*
nucorb
;
83
real
(*
aa
)[2];
84
int
maxL
;
85
/* grid params */
86
real
rl
,
grdc
,
h
,
eph
;
87
};
88
89
90
91
#endif
/* _GRID_ATOMIC_H_ */
source
dft
grid_atomic.h
Generated on Sun Mar 17 2013 14:03:35 for ergo by
1.8.3.1