-
Notifications
You must be signed in to change notification settings - Fork 0
/
System.h
74 lines (52 loc) · 2.28 KB
/
System.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/*
* File: System.h
* Author: jorgehog
*
* Created on 30. mars 2012, 16:49
*/
#ifndef SYSTEM_H
#define SYSTEM_H
class System {
protected:
int n_p;
int dim;
double a_sym;
double a_asym;
Potential *pot;
Orbitals *orbital;
public:
System(int n_p, int dim, Potential* pot, Orbitals* orbital);
double get_potential_energy(const Walker* walker) const;
virtual void update_walker(Walker* walker_pre, const Walker* walker_post, int particle) const = 0;
virtual void calc_for_newpos(const Walker* walker_old, Walker* walker_new, int particle) const = 0;
virtual double get_spatial_ratio(const Walker* walker_pre, const Walker* walker_post, int particle) const = 0;
virtual double get_spatial_wf(const Walker* walker) = 0;
virtual void get_spatial_grad(Walker* walker, int particle) const = 0;
virtual double get_spatial_lapl_sum(const Walker* walker) const = 0;
virtual void initialize(Walker* walker) = 0;
virtual void copy_walker(const Walker* parent, Walker* child) const = 0;
virtual void reset_walker_ISCF(const Walker* walker_pre, Walker* walker_post, int particle) const = 0;
};
class Fermions : public System {
protected:
int n2;
arma::mat s_up;
arma::mat s_down;
void initialize_slaters(const Walker* walker);
void invert_slaters();
void make_merged_inv(Walker* walker);
void update_inverse(const Walker* walker_old, Walker* walker_new, int particle) const;
double get_det();
public:
Fermions(int n_p, int dim, Potential* pot, Orbitals* orbital);
virtual void initialize(Walker* walker);
virtual void get_spatial_grad(Walker* walker, int particle) const;
virtual void calc_for_newpos(const Walker* walker_old, Walker* walker_new, int i) const;
void update_walker(Walker* walker_pre, const Walker* walker_post, int particle) const;
virtual double get_spatial_ratio(const Walker* walker_post, const Walker* walker_pre, int particle) const;
virtual double get_spatial_lapl_sum(const Walker* walker) const;
virtual double get_spatial_wf(const Walker* walker);
virtual void copy_walker(const Walker* parent, Walker* child) const;
virtual void reset_walker_ISCF(const Walker* walker_pre, Walker* walker_post, int particle) const;
};
#endif /* SYSTEM_H */