MADNESS 0.10.1
fcwf.h
Go to the documentation of this file.
1#ifndef MADNESS_APPS_MOLDFT_FCWF_H_INCLUDED
2#define MADNESS_APPS_MOLDFT_FCWF_H_INCLUDED
3
4#include <madness/mra/mra.h>
6#include <vector>
7#include <math.h>
8#include <complex>
9
10using namespace madness;
11
12class Fcwf{
13 std::vector<complex_function_3d> m_psi;
16
17public:
18
19 Fcwf();
20
21 Fcwf(const complex_function_3d& wf1,
22 const complex_function_3d& wf2,
23 const complex_function_3d& wf3,
24 const complex_function_3d& wf4,
25 const double myc);
26
27 Fcwf(World& world, const double myc);
28
29 complex_function_3d& operator[](const int i);
30
31 const complex_function_3d& operator[](const int i) const ;
32
33 explicit Fcwf(const std::vector<complex_function_3d>& phi, const double myc);
34
35 bool getinitialize();
36
37 bool getinitialize() const ;
38
39 double get_myc();
40
41 double get_myc() const ;
42
43 unsigned int size();
44
45 unsigned int size() const ;
46
47 Fcwf(const Fcwf& phi, const double myc);
48
49 Fcwf operator=(const Fcwf& phi);
50
51 Fcwf operator-(const Fcwf& phi) const ;
52
53 Fcwf operator+(const Fcwf& phi);
54
55 Fcwf operator*(std::complex<double> a) const ;
56
57 void scale(std::complex<double> a);
58
59 Fcwf operator+=(const Fcwf& phi);
60
61 Fcwf operator-=(const Fcwf& phi);
62
63 double norm2();
64
65 void normalize();
66
68
70
71 Fcwf mul_sparse(const madness::real_function_3d& phi, double tol) const;
72
73 Fcwf mul_sparse(const madness::complex_function_3d& phi, double tol) const;
74
75 void truncate();
76
77 std::complex<double> inner(World& world, const Fcwf& phi) const;
78
79 void apply(World& world, real_convolution_3d& op);
80
81 void apply(World& world, complex_derivative_3d& D);
82
83 void reconstruct();
84
85 void compress();
86
88
89};
90
91std::complex<double> inner(const Fcwf& psi, const Fcwf& phi);
92
93Fcwf apply(World& world, real_convolution_3d& op, const Fcwf& psi);
94
96
98
100
102
104
106
107std::complex<double> inner(std::vector<Fcwf>& a, std::vector<Fcwf>& b);
108
109std::vector<Fcwf> operator*(const std::vector<Fcwf>& psis, std::complex<double> a);
110
111std::vector<Fcwf> operator*(std::complex<double> a, const std::vector<Fcwf>& psis);
112
113void operator+=(std::vector<Fcwf>& phi, const std::vector<Fcwf>& psi);
114
115std::vector<Fcwf> operator-(const std::vector<Fcwf>& phi, const std::vector<Fcwf>& psi);
116
117Tensor<std::complex<double>> matrix_inner(World& world, std::vector<Fcwf>& a, std::vector<Fcwf>& b);
118
119std::vector<Fcwf> transform(World& world, std::vector<Fcwf>& a, Tensor<std::complex<double>> U);
120
121Fcwf mul_sparse(const Fcwf& psi, const madness::real_function_3d& phi, double tol);
122Fcwf mul_sparse(const madness::real_function_3d& phi, const Fcwf& psi, double tol);
123Fcwf mul_sparse(const Fcwf& psi, const madness::complex_function_3d& phi, double tol);
124Fcwf mul_sparse(const madness::complex_function_3d& phi, const Fcwf& psi, double tol);
125
126using FWF = Fcwf;
127
128//allocator class needed for KAIN
131 unsigned int m_size;
133 public:
134 //Constructor
135 Fcwf_vector_allocator(World& world, unsigned int m_size, const double& myc);
136
137 //Overloading () operator
138 std::vector<Fcwf> operator()();
139
140 //Copy Constructor
142
143 void set_size(int size);
144};
145
146#endif
147
148//kthxbye
Definition fcwf.h:129
unsigned int m_size
Definition fcwf.h:131
void set_size(int size)
Definition fcwf.cc:464
double speed_of_light
Definition fcwf.h:132
Fcwf_vector_allocator operator=(const Fcwf_vector_allocator &other)
Definition fcwf.cc:459
std::vector< Fcwf > operator()()
Definition fcwf.cc:450
World & world
Definition fcwf.h:130
Definition fcwf.h:12
void scale(std::complex< double > a)
Definition fcwf.cc:161
Fcwf operator+=(const Fcwf &phi)
Definition fcwf.cc:169
double speed_of_light
Definition fcwf.h:14
Fcwf operator+(const Fcwf &phi)
Definition fcwf.cc:134
complex_function_3d & operator[](const int i)
Definition fcwf.cc:41
Fcwf KramersPair()
Definition fcwf.cc:301
Fcwf()
Definition fcwf.cc:11
bool m_initialized
Definition fcwf.h:15
void apply(World &world, real_convolution_3d &op)
Definition fcwf.cc:291
void normalize()
Definition fcwf.cc:222
void truncate()
Definition fcwf.cc:267
void reconstruct()
Definition fcwf.cc:555
Fcwf operator-=(const Fcwf &phi)
Definition fcwf.cc:187
std::vector< complex_function_3d > m_psi
Definition fcwf.h:13
double get_myc()
Definition fcwf.cc:74
Fcwf operator*(std::complex< double > a) const
Definition fcwf.cc:151
Fcwf mul_sparse(const madness::real_function_3d &phi, double tol) const
Definition fcwf.cc:259
Fcwf operator-(const Fcwf &phi) const
Definition fcwf.cc:116
unsigned int size()
Definition fcwf.cc:85
std::complex< double > inner(World &world, const Fcwf &phi) const
Definition fcwf.cc:275
bool getinitialize()
Definition fcwf.cc:65
Fcwf operator=(const Fcwf &phi)
Definition fcwf.cc:108
double norm2()
Definition fcwf.cc:206
void compress()
Definition fcwf.cc:561
Implements derivatives operators with variety of boundary conditions on simulation domain.
Definition derivative.h:329
A multiresolution adaptive numerical function.
Definition mra.h:144
A tensor is a multidimensional array.
Definition tensor.h:318
A parallel world class.
Definition world.h:134
real_function_3d squaremod(Fcwf &psi)
Definition fcwf.cc:331
void operator+=(std::vector< Fcwf > &phi, const std::vector< Fcwf > &psi)
Definition fcwf.cc:412
Tensor< std::complex< double > > matrix_inner(World &world, std::vector< Fcwf > &a, std::vector< Fcwf > &b)
Definition fcwf.cc:469
real_function_3d squaremod_large(Fcwf &psi)
Definition fcwf.cc:347
Fcwf apply(World &world, real_convolution_3d &op, const Fcwf &psi)
Definition fcwf.cc:317
Fcwf mul_sparse(const Fcwf &psi, const madness::real_function_3d &phi, double tol)
Definition fcwf.cc:566
std::vector< Fcwf > operator-(const std::vector< Fcwf > &phi, const std::vector< Fcwf > &psi)
Definition fcwf.cc:425
std::vector< Fcwf > operator*(const std::vector< Fcwf > &psis, std::complex< double > a)
Definition fcwf.cc:391
real_function_3d squaremod_small(Fcwf &psi)
Definition fcwf.cc:339
std::complex< double > inner(const Fcwf &psi, const Fcwf &phi)
Definition fcwf.cc:311
Fcwf copy(Fcwf psi)
Definition fcwf.cc:374
complex_function_3d inner_func(World &world, Fcwf &psi, Fcwf &phi)
Definition fcwf.cc:354
std::vector< Fcwf > transform(World &world, std::vector< Fcwf > &a, Tensor< std::complex< double > > U)
Definition fcwf.cc:515
double psi(const Vector< double, 3 > &r)
Definition hatom_energy.cc:78
Tensor< double > op(const Tensor< double > &x)
Definition kain.cc:508
Main include file for MADNESS and defines Function interface.
Namespace for all elements and tools of MADNESS.
Definition DFConvergence.h:9
static const double b
Definition nonlinschro.cc:119
static const double a
Definition nonlinschro.cc:118
Implements most functionality of separated operators.
Definition test_ar.cc:204