OpenRDM
An open-source library for reduced-density matrix-based analysis and computation
mcpdft.h
Go to the documentation of this file.
1 #ifndef MCPDFT_H
2 #define MCPDFT_H
3 
4 #include <armadillo>
5 
6 namespace mcpdft{
7 
8 class MCPDFT {
9  public:
11  MCPDFT();
12  MCPDFT(std::string test_case);
14  ~MCPDFT();
15 
17  void common_init(std::string test_case);
18 
20  void build_opdm();
21 
23  void build_tpdm();
24 
26  void build_rho();
27 
30 
33 
35  void build_pi(const arma::mat &D2ab);
36 
38  void build_ontop_pair_density(const arma::mat &D2ab);
39 
41  void build_ontop_pair_density_gradients(const arma::mat &D2ab);
42 
44  void build_R();
45 
47  void translate();
48 
50  void translate_density();
51 
54 
56  void fully_translate();
57 
60 
63 
64  //=============== accessors ===============//
65  bool is_gga() const;
66  size_t get_npts() const;
67  int get_nbfs() const;
68  arma::vec get_w() const;
69  arma::vec get_x() const;
70  arma::vec get_y() const;
71  arma::vec get_z() const;
72  arma::mat get_phi() const;
73  arma::mat get_phi_x() const;
74  arma::mat get_phi_y() const;
75  arma::mat get_phi_z() const;
76  double get_eref() const;
77  double get_eclass() const;
78  arma::mat get_cmat() const;
79  arma::mat get_D1a() const;
80  arma::mat get_D1b() const;
81  arma::mat get_D2ab() const;
82  arma::vec get_rhoa() const;
83  arma::vec get_rhoa_x() const;
84  arma::vec get_rhoa_y() const;
85  arma::vec get_rhoa_z() const;
86  arma::vec get_rhob() const;
87  arma::vec get_rhob_x() const;
88  arma::vec get_rhob_y() const;
89  arma::vec get_rhob_z() const;
90  arma::vec get_rho() const;
91  arma::vec get_tr_rhoa() const;
92  arma::vec get_tr_rhoa_x() const;
93  arma::vec get_tr_rhoa_y() const;
94  arma::vec get_tr_rhoa_z() const;
95  arma::vec get_tr_rhob() const;
96  arma::vec get_tr_rhob_x() const;
97  arma::vec get_tr_rhob_y() const;
98  arma::vec get_tr_rhob_z() const;
99  arma::vec get_tr_rho() const;
100  arma::vec get_pi() const;
101  arma::vec get_R() const;
102  arma::vec get_sigma_aa() const;
103  arma::vec get_sigma_ab() const;
104  arma::vec get_sigma_bb() const;
105  arma::vec get_tr_sigma_aa() const;
106  arma::vec get_tr_sigma_ab() const;
107  arma::vec get_tr_sigma_bb() const;
108 
109  void set_npts(const size_t npts);
110  void set_nbfs(const int nbfs);
111  void set_w(const arma::vec &w);
112  void set_x(const arma::vec &x);
113  void set_y(const arma::vec &y);
114  void set_z(const arma::vec &z);
115  void set_phi(const arma::mat &phi);
116  void set_phi_x(const arma::mat &phi_x);
117  void set_phi_y(const arma::mat &phi_y);
118  void set_phi_z(const arma::mat &phi_z);
119  void set_eref(const double eref);
120  void set_eclass(const double eclass);
121  void set_cmat(const arma::mat &cmat);
122  void set_D1a(const arma::mat &D1a);
123  void set_D1b(const arma::mat &D1b);
124  void set_D2ab(const arma::mat &D2ab);
125  void set_rhoa(const arma::vec &rhoa);
126  void set_rhoa_x(const arma::vec &rhoa_x);
127  void set_rhoa_y(const arma::vec &rhoa_y);
128  void set_rhoa_z(const arma::vec &rhoa_z);
129  void set_rhob(const arma::vec &rhob);
130  void set_rhob_x(const arma::vec &rhob_x);
131  void set_rhob_y(const arma::vec &rhob_y);
132  void set_rhob_z(const arma::vec &rhob_z);
133  void set_rho(const arma::vec &rho);
134  void set_tr_rhoa(const arma::vec &tr_rhoa);
135  void set_tr_rhoa_x(const arma::vec &tr_rhoa_x);
136  void set_tr_rhoa_y(const arma::vec &tr_rhoa_y);
137  void set_tr_rhoa_z(const arma::vec &tr_rhoa_z);
138  void set_tr_rhob(const arma::vec &tr_rhob);
139  void set_tr_rhob_x(const arma::vec &tr_rhob_x);
140  void set_tr_rhob_y(const arma::vec &tr_rhob_y);
141  void set_tr_rhob_z(const arma::vec &tr_rhob_z);
142  void set_tr_rho(const arma::vec &tr_rho);
143  void set_pi(const arma::vec &pi);
144  void set_pi_x(const arma::vec &pi_x);
145  void set_pi_y(const arma::vec &pi_y);
146  void set_pi_z(const arma::vec &pi_z);
147  void set_R(const arma::vec &R);
148  void set_sigma_aa(const arma::vec &sigma_aa);
149  void set_sigma_ab(const arma::vec &sigma_ab);
150  void set_sigma_bb(const arma::vec &sigma_bb);
151  void set_tr_sigma_aa(const arma::vec &tr_sigma_aa);
152  void set_tr_sigma_ab(const arma::vec &tr_sigma_ab);
153  void set_tr_sigma_bb(const arma::vec &tr_sigma_bb);
154  //==========================================// end of accessors
155  void print_banner() const;
156 
157  protected:
158  //=========== utility functions ============//
159  void read_grids_from_file(std::string test_case);
160  void read_orbitals_from_file(std::string test_case);
161  void read_gradients_from_file(std::string test_case);
162  void read_energies_from_file(std::string test_case);
163  void read_opdm_from_file(std::string test_case);
164  void read_cmat_from_file(std::string test_case);
165  //==========================================// end utility functions
166 
167  private:
169  bool is_gga_;
170 
172  arma::mat D1a_;
173 
175  arma::mat D1b_;
176 
178  arma::mat D2ab_;
179 
181  size_t npts_;
182 
184  size_t nbfs_;
185 
187  arma::vec w_;
188 
190  arma::vec x_;
191 
193  arma::vec y_;
194 
196  arma::vec z_;
197 
199  arma::mat grids_;
200 
202  arma::mat phi_;
203 
205  arma::mat phi_x_;
206 
208  arma::mat phi_y_;
209 
211  arma::mat phi_z_;
212 
214  double eref_;
215 
217  double eclass_;
218 
220  arma::mat cmat_;
221 
223  arma::vec rho_a_;
224 
226  arma::vec rho_a_x_;
227 
229  arma::vec rho_a_y_;
230 
232  arma::vec rho_a_z_;
233 
235  arma::vec rho_b_;
236 
238  arma::vec rho_b_x_;
239 
241  arma::vec rho_b_y_;
242 
244  arma::vec rho_b_z_;
245 
247  arma::vec rho_;
248 
250  arma::vec tr_rho_a_;
251 
253  arma::vec tr_rho_a_x_;
254 
256  arma::vec tr_rho_a_y_;
257 
259  arma::vec tr_rho_a_z_;
260 
262  arma::vec tr_rho_b_;
263 
265  arma::vec tr_rho_b_x_;
266 
268  arma::vec tr_rho_b_y_;
269 
271  arma::vec tr_rho_b_z_;
272 
274  arma::vec tr_rho_;
275 
277  arma::vec pi_;
278 
280  arma::vec pi_x_;
281 
283  arma::vec pi_y_;
284 
286  arma::vec pi_z_;
287 
289  arma::vec R_;
290 
292  arma::vec sigma_aa_;
293 
295  arma::vec sigma_ab_;
296 
298  arma::vec sigma_bb_;
299 
301  arma::vec tr_sigma_aa_;
302 
304  arma::vec tr_sigma_ab_;
305 
307  arma::vec tr_sigma_bb_;
308 };
309 
310 }
311 #endif // MCPDFT_H
arma::mat get_phi_z() const
Definition: mcpdft.cc:664
arma::vec get_rho() const
Definition: mcpdft.cc:679
arma::vec sigma_bb_
The sigma beta-beta vector sigma_bb(r)
Definition: mcpdft.h:298
arma::vec rho_a_
alpha density vector rho_a(r)
Definition: mcpdft.h:223
void set_y(const arma::vec &y)
Definition: mcpdft.cc:696
arma::vec w_
vector of weights for quadrature grid points
Definition: mcpdft.h:187
void build_ontop_pair_density(const arma::mat &D2ab)
Build on-top pair-density pi(r,r) on the grids.
Definition: mcpdft.cc:185
void set_tr_rhoa_z(const arma::vec &tr_rhoa_z)
Definition: mcpdft.cc:720
void read_cmat_from_file(std::string test_case)
Definition: utility.cc:158
void set_npts(const size_t npts)
Definition: mcpdft.cc:692
void set_tr_rhob_z(const arma::vec &tr_rhob_z)
Definition: mcpdft.cc:724
void set_tr_sigma_aa(const arma::vec &tr_sigma_aa)
Definition: mcpdft.cc:734
arma::vec R_
The R(r) factor.
Definition: mcpdft.h:289
arma::vec get_x() const
Definition: mcpdft.cc:658
void set_eclass(const double eclass)
Definition: mcpdft.cc:703
size_t nbfs_
number of basis functions
Definition: mcpdft.h:184
rho
Definition: h2_pyscf_pybind.py:87
arma::vec tr_rho_b_x_
The x-derivative of the (fully-)translated beta density vector tr_rho_b(r)
Definition: mcpdft.h:265
arma::vec rho_b_x_
The x-derivative of the beta density vector rho_b(r)
Definition: mcpdft.h:238
arma::vec tr_rho_a_z_
The z-derivative of the (fully-)translated alpha density vector tr_rho_a(r)
Definition: mcpdft.h:259
arma::mat get_phi_x() const
Definition: mcpdft.cc:662
arma::vec tr_rho_a_y_
The y-derivative of the (fully-)translated alpha density vector tr_rho_a(r)
Definition: mcpdft.h:256
arma::vec rho_a_x_
x-derivative of the alpha density vector rho_a(r)
Definition: mcpdft.h:226
void set_tr_rho(const arma::vec &tr_rho)
Definition: mcpdft.cc:725
void set_tr_rhob(const arma::vec &tr_rhob)
Definition: mcpdft.cc:721
arma::vec get_tr_sigma_aa() const
Definition: mcpdft.cc:688
void set_sigma_bb(const arma::vec &sigma_bb)
Definition: mcpdft.cc:733
void set_pi(const arma::vec &pi)
Definition: mcpdft.cc:726
void set_phi_y(const arma::mat &phi_y)
Definition: mcpdft.cc:700
arma::mat get_phi_y() const
Definition: mcpdft.cc:663
void build_tpdm()
Build the alpha-beta block of 2-particle density matrix (TPDM)
Definition: mcpdft.cc:640
arma::mat phi_y_
matrix of orbital y-derivative values calculated on the grid points phi(npts, nbfs) ...
Definition: mcpdft.h:208
arma::vec get_rhob_z() const
Definition: mcpdft.cc:678
void set_rhoa_z(const arma::vec &rhoa_z)
Definition: mcpdft.cc:711
void set_rho(const arma::vec &rho)
Definition: mcpdft.cc:716
arma::vec rho_b_y_
The y-derivative of the beta density vector rho_b(r)
Definition: mcpdft.h:241
void read_energies_from_file(std::string test_case)
Definition: utility.cc:97
void fully_translate_density_gradients()
Fully translate the density gradients.
Definition: mcpdft.cc:489
void build_density_functions()
Build spin and total density functions rhoa(r), rhob(r) and rho(r)
Definition: mcpdft.cc:42
arma::vec tr_sigma_bb_
The (fully-)translated sigma beta-beta vector tr_sigma_bb(r)
Definition: mcpdft.h:307
void set_pi_x(const arma::vec &pi_x)
Definition: mcpdft.cc:727
void common_init(std::string test_case)
initialize the class member variables
Definition: mcpdft.cc:19
arma::vec get_rhoa_z() const
Definition: mcpdft.cc:674
void set_D1a(const arma::mat &D1a)
Definition: mcpdft.cc:705
arma::vec get_sigma_aa() const
Definition: mcpdft.cc:685
void set_cmat(const arma::mat &cmat)
Definition: mcpdft.cc:704
void set_w(const arma::vec &w)
Definition: mcpdft.cc:694
arma::mat cmat_
AO->MO transformation matrix C (read from file)
Definition: mcpdft.h:220
arma::vec get_tr_rhoa() const
Definition: mcpdft.cc:680
arma::mat get_D1a() const
Definition: mcpdft.cc:668
arma::vec get_tr_rhob_y() const
arma::mat phi_z_
matrix of orbital z-derivative values calculated on the grid points phi(npts, nbfs) ...
Definition: mcpdft.h:211
arma::vec get_y() const
Definition: mcpdft.cc:659
void set_rhob_y(const arma::vec &rhob_y)
Definition: mcpdft.cc:714
arma::vec get_tr_rhoa_x() const
arma::vec tr_rho_b_z_
The z-derivative of the (fully-)translated beta density vector tr_rho_b(r)
Definition: mcpdft.h:271
void set_tr_rhoa(const arma::vec &tr_rhoa)
Definition: mcpdft.cc:717
arma::vec x_
vector of x-coordinates for quadrature grid points
Definition: mcpdft.h:190
arma::vec get_z() const
Definition: mcpdft.cc:660
void set_phi_z(const arma::mat &phi_z)
Definition: mcpdft.cc:701
void set_tr_rhob_y(const arma::vec &tr_rhob_y)
Definition: mcpdft.cc:723
arma::vec get_rhoa_y() const
Definition: mcpdft.cc:673
arma::vec rho_a_z_
z-derivative of the alpha density vector rho_a(r)
Definition: mcpdft.h:232
Definition: mcpdft.h:8
arma::mat phi_
matrix of orbital values calculated on the grid points phi(npts, nbfs)
Definition: mcpdft.h:202
arma::vec get_R() const
Definition: mcpdft.cc:684
void fully_translate()
Fully translate the one-electron densities.
Definition: mcpdft.cc:418
void set_tr_rhob_x(const arma::vec &tr_rhob_x)
Definition: mcpdft.cc:722
Definition: functional.cc:5
void set_x(const arma::vec &x)
Definition: mcpdft.cc:695
arma::vec rho_b_
beta density vector rho_b(r)
Definition: mcpdft.h:235
arma::mat D1b_
1-electron reduced-density matrix of beta spin
Definition: mcpdft.h:175
size_t npts_
number of grid points
Definition: mcpdft.h:181
bool is_gga_
A boolean variable to show if a chose functional is GGA or not.
Definition: mcpdft.h:169
void set_sigma_ab(const arma::vec &sigma_ab)
Definition: mcpdft.cc:732
void set_rhob_x(const arma::vec &rhob_x)
Definition: mcpdft.cc:713
void set_rhoa_x(const arma::vec &rhoa_x)
Definition: mcpdft.cc:709
void set_D1b(const arma::mat &D1b)
Definition: mcpdft.cc:706
arma::mat get_phi() const
Definition: mcpdft.cc:661
arma::vec get_rhob_x() const
Definition: mcpdft.cc:676
arma::mat get_D1b() const
Definition: mcpdft.cc:669
arma::vec get_tr_rhob_z() const
arma::vec z_
vector of z-coordinates for quadrature grid points
Definition: mcpdft.h:196
void set_sigma_aa(const arma::vec &sigma_aa)
Definition: mcpdft.cc:731
arma::vec get_w() const
Definition: mcpdft.cc:657
arma::vec sigma_ab_
The sigma alpha-beta vector sigma_ab(r)
Definition: mcpdft.h:295
arma::vec get_rhoa() const
Definition: mcpdft.cc:671
void set_pi_z(const arma::vec &pi_z)
Definition: mcpdft.cc:729
void read_opdm_from_file(std::string test_case)
Definition: utility.cc:132
arma::vec tr_rho_b_
The (fully-)translated beta density vector tr_rho_b(r)
Definition: mcpdft.h:262
arma::vec tr_sigma_aa_
The (fully-)translated sigma alpha-alpha vector tr_sigma_aa(r)
Definition: mcpdft.h:301
void set_phi(const arma::mat &phi)
Definition: mcpdft.cc:698
void build_opdm()
Build the 1-particle density matrices (OPDMs)
Definition: mcpdft.cc:608
arma::vec rho_a_y_
y-derivative of the alpha density vector rho_a(r)
Definition: mcpdft.h:229
arma::vec tr_rho_a_x_
The x-derivative of the (fully-)translated alpha density vector tr_rho_a(r)
Definition: mcpdft.h:253
void translate_density_gradients()
Translate the density gradients.
Definition: mcpdft.cc:346
arma::vec get_tr_rho() const
Definition: mcpdft.cc:682
arma::mat get_D2ab() const
Definition: mcpdft.cc:670
double eref_
the reference electronic energy (read from file)
Definition: mcpdft.h:214
arma::vec sigma_aa_
The sigma alpha-alpha vector sigma_aa(r)
Definition: mcpdft.h:292
arma::vec get_sigma_ab() const
Definition: mcpdft.cc:686
arma::vec get_tr_rhob_x() const
double eclass_
the classical electronic energy (read from file)
Definition: mcpdft.h:217
size_t get_npts() const
Definition: mcpdft.cc:655
void build_pi(const arma::mat &D2ab)
Build on-top pair-density pi(r,r) and its gradinets pi_x(r,r) ... on the grids.
Definition: mcpdft.cc:178
~MCPDFT()
destructor
Definition: mcpdft.cc:17
arma::vec pi_x_
The x-derivative of the on-top pair-density vector pi_(r)
Definition: mcpdft.h:280
void set_rhoa(const arma::vec &rhoa)
Definition: mcpdft.cc:708
int get_nbfs() const
Definition: mcpdft.cc:656
void build_R()
Build R(r) factor.
Definition: mcpdft.cc:272
void build_density_gradients()
Build density gradients rhoa_x(r), rhoa_y(r) ... on the grid points.
Definition: mcpdft.cc:107
void set_tr_sigma_ab(const arma::vec &tr_sigma_ab)
Definition: mcpdft.cc:735
arma::vec get_tr_rhoa_y() const
void set_pi_y(const arma::vec &pi_y)
Definition: mcpdft.cc:728
arma::vec get_tr_rhob() const
Definition: mcpdft.cc:681
bool is_gga() const
Definition: mcpdft.cc:654
arma::mat grids_
matrix of grids([w],[x],[y],[z]) columns [x], [y], ...
Definition: mcpdft.h:199
arma::vec get_tr_sigma_bb() const
Definition: mcpdft.cc:690
void set_tr_rhoa_y(const arma::vec &tr_rhoa_y)
Definition: mcpdft.cc:719
arma::vec get_tr_sigma_ab() const
Definition: mcpdft.cc:689
double get_eref() const
Definition: mcpdft.cc:665
void set_phi_x(const arma::mat &phi_x)
Definition: mcpdft.cc:699
void read_gradients_from_file(std::string test_case)
Definition: utility.cc:64
void build_rho()
Build density functions and their gradients on the grid points.
Definition: mcpdft.cc:35
void translate_density()
Translate the one-electron density functions.
Definition: mcpdft.cc:294
arma::mat phi_x_
matrix of orbital x-derivative values calculated on the grid points phi(npts, nbfs) ...
Definition: mcpdft.h:205
void set_nbfs(const int nbfs)
Definition: mcpdft.cc:693
void fully_translate_density()
Fully translate the one-electron density functions.
Definition: mcpdft.cc:425
arma::vec tr_sigma_ab_
The (fully-)translated sigma alpha-beta vector tr_sigma_ab(r)
Definition: mcpdft.h:304
void set_rhob_z(const arma::vec &rhob_z)
Definition: mcpdft.cc:715
arma::vec y_
vector of y-coordinates for quadrature grid points
Definition: mcpdft.h:193
void print_banner() const
Definition: mcpdft.cc:738
void set_tr_rhoa_x(const arma::vec &tr_rhoa_x)
Definition: mcpdft.cc:718
arma::vec get_rhob() const
Definition: mcpdft.cc:675
void read_orbitals_from_file(std::string test_case)
Definition: utility.cc:36
void build_ontop_pair_density_gradients(const arma::mat &D2ab)
Build on-top pair-density gradinets pi_x(r,r), pi_y(r,r) ... on the grids.
Definition: mcpdft.cc:214
arma::vec get_sigma_bb() const
Definition: mcpdft.cc:687
arma::mat get_cmat() const
Definition: mcpdft.cc:667
arma::vec get_pi() const
Definition: mcpdft.cc:683
arma::vec rho_
total density vector rho_(r)
Definition: mcpdft.h:247
void set_tr_sigma_bb(const arma::vec &tr_sigma_bb)
Definition: mcpdft.cc:736
void set_R(const arma::vec &R)
Definition: mcpdft.cc:730
void set_D2ab(const arma::mat &D2ab)
Definition: mcpdft.cc:707
arma::vec pi_z_
The z-derivative of the on-top pair-density vector pi_(r)
Definition: mcpdft.h:286
arma::vec pi_
The on-top pair-density vector pi_(r)
Definition: mcpdft.h:277
arma::vec tr_rho_a_
The (fully-)translated alpha density vector tr_rho_a(r)
Definition: mcpdft.h:250
MCPDFT()
constructor
Definition: mcpdft.cc:16
arma::vec pi_y_
The y-derivative of the on-top pair-density vector pi_(r)
Definition: mcpdft.h:283
arma::vec get_rhoa_x() const
Definition: mcpdft.cc:672
double get_eclass() const
Definition: mcpdft.cc:666
void set_z(const arma::vec &z)
Definition: mcpdft.cc:697
void set_rhob(const arma::vec &rhob)
Definition: mcpdft.cc:712
arma::vec tr_rho_b_y_
The y-derivative of the (fully-)translated beta density vector tr_rho_b(r)
Definition: mcpdft.h:268
void set_eref(const double eref)
Definition: mcpdft.cc:702
arma::mat D2ab_
2-electron reduced-density matrix of alpha-beta spin
Definition: mcpdft.h:178
arma::vec get_tr_rhoa_z() const
arma::vec get_rhob_y() const
Definition: mcpdft.cc:677
arma::mat D1a_
1-electron reduced-density matrix of alpha spin
Definition: mcpdft.h:172
void set_rhoa_y(const arma::vec &rhoa_y)
Definition: mcpdft.cc:710
arma::vec rho_b_z_
The z-derivative of the beta density vector rho_b(r)
Definition: mcpdft.h:244
void read_grids_from_file(std::string test_case)
Definition: utility.cc:5
arma::vec tr_rho_
The (fully-)translated total density vector tr_rho_(r)
Definition: mcpdft.h:274
void translate()
Translate the one-electron densities and their gradients.
Definition: mcpdft.cc:287