1 /*
2   This file is part of MADNESS.
3 
4   Copyright (C) 2007,2010 Oak Ridge National Laboratory
5 
6   This program is free software; you can redistribute it and/or modify
7   it under the terms of the GNU General Public License as published by
8   the Free Software Foundation; either version 2 of the License, or
9   (at your option) any later version.
10 
11   This program is distributed in the hope that it will be useful,
12   but WITHOUT ANY WARRANTY; without even the implied warranty of
13   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14   GNU General Public License for more details.
15 
16   You should have received a copy of the GNU General Public License
17   along with this program; if not, write to the Free Software
18   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 
20   For more information please contact:
21 
22   Robert J. Harrison
23   Oak Ridge National Laboratory
24   One Bethel Valley Road
25   P.O. Box 2008, MS-6367
26 
27   email: harrisonrj@ornl.gov
28   tel:   865-241-3937
29   fax:   865-572-0680
30 
31   $Id$
32 */
33 #ifndef MADNESS_MRA_FUNCTYPEDEFS_H__INCLUDED
34 #define MADNESS_MRA_FUNCTYPEDEFS_H__INCLUDED
35 
36 /// \file mra/functypedefs.h
37 /// \brief Provides typedefs to hide use of templates and to increase interoperability
38 
39 namespace madness {
40     typedef Tensor<double> real_tensor;
41     typedef Tensor<double_complex> complex_tensor;
42 
43     typedef Tensor<double> tensor_real;
44     typedef Tensor<double_complex> tensor_complex;
45 
46     typedef Vector<double,1> coord_1d;
47     typedef Vector<double,2> coord_2d;
48     typedef Vector<double,3> coord_3d;
49     typedef Vector<double,4> coord_4d;
50     typedef Vector<double,5> coord_5d;
51     typedef Vector<double,6> coord_6d;
52 
53     typedef std::vector<double> vector_real;
54     typedef std::vector< std::complex<double> > vector_complex;
55 
56     typedef std::vector< Vector<double,1> > vector_coord_1d;
57     typedef std::vector< Vector<double,2> > vector_coord_2d;
58     typedef std::vector< Vector<double,3> > vector_coord_3d;
59     typedef std::vector< Vector<double,4> > vector_coord_4d;
60     typedef std::vector< Vector<double,5> > vector_coord_5d;
61     typedef std::vector< Vector<double,6> > vector_coord_6d;
62 
63     typedef Function<double,1> real_function_1d;
64     typedef Function<double,2> real_function_2d;
65     typedef Function<double,3> real_function_3d;
66     typedef Function<double,4> real_function_4d;
67     typedef Function<double,5> real_function_5d;
68     typedef Function<double,6> real_function_6d;
69 
70     typedef Function<double_complex,1> complex_function_1d;
71     typedef Function<double_complex,2> complex_function_2d;
72     typedef Function<double_complex,3> complex_function_3d;
73     typedef Function<double_complex,4> complex_function_4d;
74     typedef Function<double_complex,5> complex_function_5d;
75     typedef Function<double_complex,6> complex_function_6d;
76 
77     typedef std::vector<real_function_1d> vector_real_function_1d;
78     typedef std::vector<real_function_2d> vector_real_function_2d;
79     typedef std::vector<real_function_3d> vector_real_function_3d;
80     typedef std::vector<real_function_4d> vector_real_function_4d;
81     typedef std::vector<real_function_5d> vector_real_function_5d;
82     typedef std::vector<real_function_6d> vector_real_function_6d;
83 
84     typedef std::vector<complex_function_1d> vector_complex_function_1d;
85     typedef std::vector<complex_function_2d> vector_complex_function_2d;
86     typedef std::vector<complex_function_3d> vector_complex_function_3d;
87     typedef std::vector<complex_function_4d> vector_complex_function_4d;
88     typedef std::vector<complex_function_5d> vector_complex_function_5d;
89     typedef std::vector<complex_function_6d> vector_complex_function_6d;
90 
91     typedef FunctionFactory<double,1> real_factory_1d;
92     typedef FunctionFactory<double,2> real_factory_2d;
93     typedef FunctionFactory<double,3> real_factory_3d;
94     typedef FunctionFactory<double,4> real_factory_4d;
95     typedef FunctionFactory<double,5> real_factory_5d;
96     typedef FunctionFactory<double,6> real_factory_6d;
97 
98     typedef FunctionFactory<double_complex,1> complex_factory_1d;
99     typedef FunctionFactory<double_complex,2> complex_factory_2d;
100     typedef FunctionFactory<double_complex,3> complex_factory_3d;
101     typedef FunctionFactory<double_complex,4> complex_factory_4d;
102     typedef FunctionFactory<double_complex,5> complex_factory_5d;
103     typedef FunctionFactory<double_complex,6> complex_factory_6d;
104 
105     typedef std::shared_ptr< FunctionFunctorInterface<double,1> > real_functor_1d;
106     typedef std::shared_ptr< FunctionFunctorInterface<double,2> > real_functor_2d;
107     typedef std::shared_ptr< FunctionFunctorInterface<double,3> > real_functor_3d;
108     typedef std::shared_ptr< FunctionFunctorInterface<double,4> > real_functor_4d;
109     typedef std::shared_ptr< FunctionFunctorInterface<double,5> > real_functor_5d;
110     typedef std::shared_ptr< FunctionFunctorInterface<double,6> > real_functor_6d;
111 
112     typedef std::shared_ptr< FunctionFunctorInterface<double_complex,1> > complex_functor_1d;
113     typedef std::shared_ptr< FunctionFunctorInterface<double_complex,2> > complex_functor_2d;
114     typedef std::shared_ptr< FunctionFunctorInterface<double_complex,3> > complex_functor_3d;
115     typedef std::shared_ptr< FunctionFunctorInterface<double_complex,4> > complex_functor_4d;
116     typedef std::shared_ptr< FunctionFunctorInterface<double_complex,5> > complex_functor_5d;
117     typedef std::shared_ptr< FunctionFunctorInterface<double_complex,6> > complex_functor_6d;
118 
119     typedef SeparatedConvolution<double,1> real_convolution_1d;
120     typedef SeparatedConvolution<double,2> real_convolution_2d;
121     typedef SeparatedConvolution<double,3> real_convolution_3d;
122     typedef SeparatedConvolution<double,4> real_convolution_4d;
123     typedef SeparatedConvolution<double,5> real_convolution_5d;
124     typedef SeparatedConvolution<double,6> real_convolution_6d;
125 
126     typedef SeparatedConvolution<double_complex,1> complex_convolution_1d;
127     typedef SeparatedConvolution<double_complex,2> complex_convolution_2d;
128     typedef SeparatedConvolution<double_complex,3> complex_convolution_3d;
129     typedef SeparatedConvolution<double_complex,4> complex_convolution_4d;
130     typedef SeparatedConvolution<double_complex,5> complex_convolution_5d;
131     typedef SeparatedConvolution<double_complex,6> complex_convolution_6d;
132 
133     typedef std::shared_ptr<real_convolution_1d> real_convolution_1d_ptr;
134     typedef std::shared_ptr<real_convolution_2d> real_convolution_2d_ptr;
135     typedef std::shared_ptr<real_convolution_3d> real_convolution_3d_ptr;
136     typedef std::shared_ptr<real_convolution_4d> real_convolution_4d_ptr;
137     typedef std::shared_ptr<real_convolution_5d> real_convolution_5d_ptr;
138     typedef std::shared_ptr<real_convolution_6d> real_convolution_6d_ptr;
139 
140     typedef std::shared_ptr<complex_convolution_1d> complex_convolution_1d_ptr;
141     typedef std::shared_ptr<complex_convolution_2d> complex_convolution_2d_ptr;
142     typedef std::shared_ptr<complex_convolution_3d> complex_convolution_3d_ptr;
143     typedef std::shared_ptr<complex_convolution_4d> complex_convolution_4d_ptr;
144     typedef std::shared_ptr<complex_convolution_5d> complex_convolution_5d_ptr;
145     typedef std::shared_ptr<complex_convolution_6d> complex_convolution_6d_ptr;
146 
147     typedef std::shared_ptr< WorldDCPmapInterface< Key<1> > > pmap_1d;
148     typedef std::shared_ptr< WorldDCPmapInterface< Key<2> > > pmap_2d;
149     typedef std::shared_ptr< WorldDCPmapInterface< Key<3> > > pmap_3d;
150     typedef std::shared_ptr< WorldDCPmapInterface< Key<4> > > pmap_4d;
151     typedef std::shared_ptr< WorldDCPmapInterface< Key<5> > > pmap_5d;
152     typedef std::shared_ptr< WorldDCPmapInterface< Key<6> > > pmap_6d;
153 
154     typedef FunctionImpl<double,1> real_funcimpl_1d;
155     typedef FunctionImpl<double,2> real_funcimpl_2d;
156     typedef FunctionImpl<double,3> real_funcimpl_3d;
157     typedef FunctionImpl<double,4> real_funcimpl_4d;
158     typedef FunctionImpl<double,5> real_funcimpl_5d;
159     typedef FunctionImpl<double,6> real_funcimpl_6d;
160 
161     typedef FunctionImpl<double_complex,1> complex_funcimpl_1d;
162     typedef FunctionImpl<double_complex,2> complex_funcimpl_2d;
163     typedef FunctionImpl<double_complex,3> complex_funcimpl_3d;
164     typedef FunctionImpl<double_complex,4> complex_funcimpl_4d;
165     typedef FunctionImpl<double_complex,5> complex_funcimpl_5d;
166     typedef FunctionImpl<double_complex,6> complex_funcimpl_6d;
167 
168     typedef Derivative<double,1> real_derivative_1d;
169     typedef Derivative<double,2> real_derivative_2d;
170     typedef Derivative<double,3> real_derivative_3d;
171     typedef Derivative<double,4> real_derivative_4d;
172     typedef Derivative<double,5> real_derivative_5d;
173     typedef Derivative<double,6> real_derivative_6d;
174 
175     typedef Derivative<double_complex,1> complex_derivative_1d;
176     typedef Derivative<double_complex,2> complex_derivative_2d;
177     typedef Derivative<double_complex,3> complex_derivative_3d;
178     typedef Derivative<double_complex,4> complex_derivative_4d;
179     typedef Derivative<double_complex,5> complex_derivative_5d;
180     typedef Derivative<double_complex,6> complex_derivative_6d;
181 
182     typedef FunctionDefaults<1> function_defaults_1d;
183     typedef FunctionDefaults<2> function_defaults_2d;
184     typedef FunctionDefaults<3> function_defaults_3d;
185     typedef FunctionDefaults<4> function_defaults_4d;
186     typedef FunctionDefaults<5> function_defaults_5d;
187     typedef FunctionDefaults<6> function_defaults_6d;
188 }
189 
190 #endif  // MADNESS_MRA_MRA_H__INCLUDED
191