Psi4
df_helper.h
Go to the documentation of this file.
1 /*
2  * @BEGIN LICENSE
3  *
4  * Psi4: an open-source quantum chemistry software package
5  *
6  * Copyright (c) 2007-2017 The Psi4 Developers.
7  *
8  * The copyrights for code used from other parties are included in
9  * the corresponding files.
10  *
11  * This file is part of Psi4.
12  *
13  * Psi4 is free software; you can redistribute it and/or modify
14  * it under the terms of the GNU Lesser General Public License as published by
15  * the Free Software Foundation, version 3.
16  *
17  * Psi4 is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20  * GNU Lesser General Public License for more details.
21  *
22  * You should have received a copy of the GNU Lesser General Public License along
23  * with Psi4; if not, write to the Free Software Foundation, Inc.,
24  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
25  *
26  * @END LICENSE
27  */
28 
29 #ifndef three_index_df_helper
30 #define three_index_df_helper
31 
32 #include "psi4/psi4-dec.h"
33 #include <psi4/libmints/typedefs.h>
34 
35 #include <map>
36 #include <list>
37 #include <vector>
38 #include <tuple>
39 #include <string>
40 
41 namespace psi {
42 
43 class BasisSet;
44 class Options;
45 class Matrix;
46 class ERISieve;
47 class TwoBodyAOInt;
48 
49 class DF_Helper {
50  public:
51  DF_Helper(std::shared_ptr<BasisSet> primary, std::shared_ptr<BasisSet> aux);
52  ~DF_Helper();
53 
61  void set_method(std::string method) { method_ = method; }
62  std::string get_method() { return method_; }
63 
69  void set_nthreads(size_t nthreads) { nthreads_ = nthreads; }
70  size_t get_nthreads() { return nthreads_; }
71 
77  void set_memory(size_t doubles) { memory_ = doubles; }
78  size_t get_memory() { return memory_; }
79 
81  size_t get_AO_size() { return big_skips_[nao_]; }
82 
91  void set_AO_core(bool core) { AO_core_ = core; }
92  bool get_AO_core() { return AO_core_; }
93 
100  void set_MO_core(bool core) { MO_core_ = core; }
101  bool get_MO_core() { return MO_core_; }
102 
104  void set_schwarz_cutoff(double cutoff) { cutoff_ = cutoff; }
105  double get_schwarz_cutoff() { return cutoff_; }
106 
108  void set_metric_pow(double pow) { mpower_ = pow; }
109  double get_metric_pow() { return mpower_; }
110 
116  void hold_met(bool hold) { hold_met_ = hold; }
117  bool get_hold_met() { return hold_met_; }
118 
125  void set_JK_hint(bool hint) { JK_hint_ = hint; }
126  size_t get_JK_hint() { return JK_hint_; }
127 
129  void initialize();
130 
132  void print_header();
133 
139  void add_space(std::string key, SharedMatrix space);
140 
148  void add_transformation(std::string name, std::string key1, std::string key2, std::string order = "Qpq");
149 
151  void transform();
152 
153  // => Tensor IO <=
154  // many ways to access the 3-index tensors.
155 
165  void fill_tensor(std::string name, SharedMatrix M);
166  void fill_tensor(std::string name, SharedMatrix M, std::vector<size_t> a1);
167  void fill_tensor(std::string name, SharedMatrix M, std::vector<size_t> a1, std::vector<size_t> a2);
168  void fill_tensor(std::string name, SharedMatrix M, std::vector<size_t> a1, std::vector<size_t> a2,
169  std::vector<size_t> a3);
170 
177  void fill_tensor(std::string name, double* b, std::vector<size_t> a1, std::vector<size_t> a2,
178  std::vector<size_t> a3);
179  void fill_tensor(std::string name, double* b, std::vector<size_t> a1, std::vector<size_t> a2);
180  void fill_tensor(std::string name, double* b, std::vector<size_t> a1);
181  void fill_tensor(std::string name, double* b);
182 
190  SharedMatrix get_tensor(std::string name);
191  SharedMatrix get_tensor(std::string name, std::vector<size_t> a1);
192  SharedMatrix get_tensor(std::string name, std::vector<size_t> a1, std::vector<size_t> a2);
193  SharedMatrix get_tensor(std::string name, std::vector<size_t> a1, std::vector<size_t> a2, std::vector<size_t> a3);
194 
200  void add_disk_tensor(std::string key, std::tuple<size_t, size_t, size_t> dimensions);
201 
209  void write_disk_tensor(std::string name, SharedMatrix M);
210  void write_disk_tensor(std::string name, SharedMatrix M, std::vector<size_t> a1);
211  void write_disk_tensor(std::string name, SharedMatrix M, std::vector<size_t> a1, std::vector<size_t> a2);
212  void write_disk_tensor(std::string name, SharedMatrix M, std::vector<size_t> a1, std::vector<size_t> a2,
213  std::vector<size_t> a3);
214 
222  void write_disk_tensor(std::string name, double* b, std::vector<size_t> a1, std::vector<size_t> a2,
223  std::vector<size_t> a3);
224  void write_disk_tensor(std::string name, double* b, std::vector<size_t> a1, std::vector<size_t> a2);
225  void write_disk_tensor(std::string name, double* b, std::vector<size_t> a1);
226  void write_disk_tensor(std::string name, double* b);
227 
229  void transpose(std::string name, std::tuple<size_t, size_t, size_t> order);
230 
232  void clear_spaces();
233 
235  void clear_all();
236 
238  size_t get_space_size(std::string key);
239  size_t get_tensor_size(std::string key);
240  std::tuple<size_t, size_t, size_t> get_tensor_shape(std::string key);
241  size_t get_naux() { return naux_; }
242 
244  void build_JK(std::vector<SharedMatrix> Cleft, std::vector<SharedMatrix> Cright, std::vector<SharedMatrix> J,
245  std::vector<SharedMatrix> K);
246 
247  protected:
248  // => basis sets <=
249  std::shared_ptr<BasisSet> primary_;
250  std::shared_ptr<BasisSet> aux_;
251  size_t nao_;
252  size_t naux_;
253 
254  // => memory in doubles <=
255  size_t memory_ = 256000000;
256 
257  // => internal holders <=
258  std::string method_ = "STORE";
259  bool direct_;
260  bool AO_core_ = 1;
261  bool MO_core_ = 0;
262  size_t nthreads_ = 1;
263  double cutoff_ = 1e-12;
264  double tolerance_ = 0.0;
265  double condition_ = 1e-12;
266  double mpower_ = -0.5;
267  bool hold_met_ = false;
268  bool JK_hint_ = false;
269  bool built = false;
270  bool transformed_ = false;
271  std::pair<size_t, size_t> info_;
272  bool ordered_ = 0;
273  std::pair<size_t, size_t> identify_order();
274  void print_order();
275 
276  // => in-core machinery <=
277  std::vector<double> Ppq_;
278  std::map<double, SharedMatrix> metrics_;
279 
280  // => AO building machinery <=
281  void prepare_AO();
282  void prepare_AO_core();
283  void compute_AO_Q(const size_t start, const size_t stop, double* Mp,
284  std::vector<std::shared_ptr<TwoBodyAOInt>> eri);
285  void compute_AO_p(const size_t start, const size_t stop, double* Mp,
286  std::vector<std::shared_ptr<TwoBodyAOInt>> eri);
287  void compute_AO_p_symm(const size_t start, const size_t stop, double* Mp,
288  std::vector<std::shared_ptr<TwoBodyAOInt>> eri);
289  void contract_metric_AO_core_symm(double* Qpq, double* metp, size_t begin, size_t end);
290  void grab_AO(const size_t start, const size_t stop, double* Mp);
291 
292  // => index vectors for screened AOs <=
293  std::vector<size_t> small_skips_;
294  std::vector<size_t> big_skips_;
295  std::vector<size_t> symm_skips_;
296  std::vector<size_t> symm_sizes_;
297  std::vector<size_t> symm_agg_sizes_;
298 
299  // => shell info and blocking <=
300  size_t pshells_;
301  size_t Qshells_;
302  std::vector<size_t> pshell_aggs_;
303  std::vector<size_t> Qshell_aggs_;
304  void prepare_blocking();
305 
306  // => generalized blocking <=
307  std::pair<size_t, size_t> pshell_blocks_for_AO_build(const size_t mem, size_t symm,
308  std::vector<std::pair<size_t, size_t>>& b);
309  std::pair<size_t, size_t> Qshell_blocks_for_transform(const size_t mem, size_t wtmp, size_t wfinal,
310  std::vector<std::pair<size_t, size_t>>& b);
311 
312  // => Schwarz Screening <=
313  std::vector<size_t> schwarz_fun_mask_;
314  std::vector<size_t> schwarz_shell_mask_;
315  std::vector<size_t> schwarz_fun_count_;
316  void prepare_sparsity();
317 
318  // => Coulomb metric handling <=
319  std::vector<std::pair<double, std::string>> metric_keys_;
320  void prepare_metric();
321  void prepare_metric_core();
322  double* metric_prep_core(double pow);
323  std::string return_metfile(double pow);
324  std::string compute_metric(double pow);
325 
326  // => metric operations <=
327  void contract_metric(std::string file, double* metp, double* Mp, double* Fp, const size_t tots);
328  void contract_metric_core(std::string file);
329  void contract_metric_AO(double* Mp);
330  void contract_metric_AO_core(double* Qpq, double* metp);
331 
332  // => spaces and transformation maps <=
333  std::map<std::string, std::tuple<SharedMatrix, size_t>> spaces_;
334  std::map<std::string, std::tuple<std::string, std::string, size_t>> transf_;
335  std::map<std::string, std::vector<double>> transf_core_;
336 
337  // => transformation machinery <=
338  void transform_core();
339  void transform_disk();
340  std::vector<std::pair<std::string, size_t>> sorted_spaces_;
341  std::vector<std::string> order_;
342  std::vector<std::string> bspace_;
343  std::vector<size_t> strides_;
344 
345  // => FILE IO maintenence <=
346  struct stream {
347  FILE* fp;
348  std::string op;
349  };
350  std::map<std::string, stream> file_status_;
351  FILE* stream_check(std::string filename, std::string op);
352 
353  // => FILE IO machinery <=
354  void put_tensor(std::string file, double* b, std::pair<size_t, size_t> a1, std::pair<size_t, size_t> a2,
355  std::pair<size_t, size_t> a3, std::string op);
356 
357  void put_tensor(std::string file, double* b, const size_t start1, const size_t stop1, const size_t start2,
358  const size_t stop2, std::string op);
359  void get_tensor_(std::string file, double* b, std::pair<size_t, size_t> a1, std::pair<size_t, size_t> a2,
360  std::pair<size_t, size_t> a3);
361  void get_tensor_(std::string file, double* b, const size_t start1, const size_t stop1, const size_t start2,
362  const size_t stop2);
363  void put_tensor_AO(std::string file, double* Mp, size_t size, size_t start, std::string op);
364  void get_tensor_AO(std::string file, double* Mp, size_t size, size_t start);
365 
366  // => internal handlers for FILE IO <=
367  std::map<std::string, std::tuple<std::string, std::string>> files_;
368  std::map<std::string, std::tuple<size_t, size_t, size_t>> sizes_;
369  std::map<std::string, std::tuple<size_t, size_t, size_t>> tsizes_;
370  std::map<std::string, std::string> AO_files_;
371  std::vector<size_t> AO_file_sizes_;
372  std::vector<std::string> AO_names_;
373  void filename_maker(std::string name, size_t a0, size_t a1, size_t a2, size_t op = 0);
374  void AO_filename_maker(size_t i);
375  void check_file_key(std::string);
376  void check_file_tuple(std::string name, std::pair<size_t, size_t> t0, std::pair<size_t, size_t> t1,
377  std::pair<size_t, size_t> t2);
378  void check_matrix_size(std::string name, SharedMatrix M, std::pair<size_t, size_t> t0, std::pair<size_t, size_t> t1,
379  std::pair<size_t, size_t> t2);
380 
381  // => transpose a tensor <=
382  void transpose_core(std::string name, std::tuple<size_t, size_t, size_t> order);
383  void transpose_disk(std::string name, std::tuple<size_t, size_t, size_t> order);
384 
385  // => JK <=
386  void compute_JK(std::vector<SharedMatrix> Cleft, std::vector<SharedMatrix> Cright, std::vector<SharedMatrix> J,
387  std::vector<SharedMatrix> K);
388  void compute_D(std::vector<SharedMatrix>& D, std::vector<SharedMatrix> Cleft, std::vector<SharedMatrix> Cright);
389  void compute_J(std::vector<SharedMatrix> D, std::vector<SharedMatrix> J, double* Mp, double* T1p, double* T2p,
390  std::vector<std::vector<double>> D_buffers, size_t bcount, size_t block_size);
391  void compute_J_symm(std::vector<SharedMatrix> D, std::vector<SharedMatrix> J, double* Mp, double* T1p, double* T2p,
392  std::vector<std::vector<double>> D_buffers, size_t bcount, size_t block_size);
393  void compute_K(std::vector<SharedMatrix> Cleft, std::vector<SharedMatrix> Cright, std::vector<SharedMatrix> K,
394  double* Tp, double* Jtmp, double* Mp, size_t bcount, size_t block_size,
395  std::vector<std::vector<double>> C_buffers, std::vector<SharedMatrix> D,
396  std::vector<SharedMatrix> J);
397  std::tuple<size_t, size_t, size_t, size_t> Qshell_blocks_for_JK_build(std::vector<std::pair<size_t, size_t>>& b,
398  std::vector<SharedMatrix> Cleft,
399  std::vector<SharedMatrix> Cright);
400 
401 }; // End DF Helper class
402 } // psi4 namespace
403 #endif
void contract_metric_AO_core_symm(double *Qpq, double *metp, size_t begin, size_t end)
Definition: df_helper.cc:1143
std::map< std::string, std::tuple< size_t, size_t, size_t > > tsizes_
Definition: df_helper.h:369
bool hold_met_
Definition: df_helper.h:267
void clear_all()
clears spaces and transformations
Definition: df_helper.cc:1230
double mpower_
Definition: df_helper.h:266
void add_space(std::string key, SharedMatrix space)
Definition: df_helper.cc:1170
SharedMatrix get_tensor(std::string name)
Definition: df_helper.cc:1974
size_t get_naux()
Definition: df_helper.h:241
std::map< std::string, std::tuple< size_t, size_t, size_t > > sizes_
Definition: df_helper.h:368
void set_metric_pow(double pow)
fitting metric power (defaults to -0.5)
Definition: df_helper.h:108
size_t Qshells_
Definition: df_helper.h:301
Definition: df_helper.h:346
void compute_J(std::vector< SharedMatrix > D, std::vector< SharedMatrix > J, double *Mp, double *T1p, double *T2p, std::vector< std::vector< double >> D_buffers, size_t bcount, size_t block_size)
Definition: df_helper.cc:2742
size_t get_space_size(std::string key)
get sizes, shapes of tensors
Definition: df_helper.cc:2493
double * metric_prep_core(double pow)
Definition: df_helper.cc:971
size_t get_memory()
Definition: df_helper.h:78
void contract_metric_core(std::string file)
double condition_
Definition: df_helper.h:265
void compute_D(std::vector< SharedMatrix > &D, std::vector< SharedMatrix > Cleft, std::vector< SharedMatrix > Cright)
Definition: df_helper.cc:2646
void prepare_sparsity()
Definition: df_helper.cc:188
bool ordered_
Definition: df_helper.h:272
void prepare_metric_core()
Definition: df_helper.cc:964
void set_schwarz_cutoff(double cutoff)
schwarz screening cutoff (defaults to 1e-12)
Definition: df_helper.h:104
void initialize()
Initialize the object.
Definition: df_helper.cc:133
std::vector< size_t > schwarz_fun_mask_
Definition: df_helper.h:313
std::vector< size_t > symm_skips_
Definition: df_helper.h:295
std::string method_
Definition: df_helper.h:258
void transpose_disk(std::string name, std::tuple< size_t, size_t, size_t > order)
Definition: df_helper.cc:2334
std::string op
Definition: df_helper.h:348
void print_order()
Definition: df_helper.cc:1316
std::tuple< size_t, size_t, size_t > get_tensor_shape(std::string key)
Definition: df_helper.cc:2510
std::vector< std::pair< std::string, size_t > > sorted_spaces_
Definition: df_helper.h:340
void compute_AO_p_symm(const size_t start, const size_t stop, double *Mp, std::vector< std::shared_ptr< TwoBodyAOInt >> eri)
Definition: df_helper.cc:892
void compute_AO_Q(const size_t start, const size_t stop, double *Mp, std::vector< std::shared_ptr< TwoBodyAOInt >> eri)
Definition: df_helper.cc:779
~DF_Helper()
Definition: df_helper.cc:63
DF_Helper(std::shared_ptr< BasisSet > primary, std::shared_ptr< BasisSet > aux)
Definition: df_helper.cc:56
std::tuple< size_t, size_t, size_t, size_t > Qshell_blocks_for_JK_build(std::vector< std::pair< size_t, size_t >> &b, std::vector< SharedMatrix > Cleft, std::vector< SharedMatrix > Cright)
Definition: df_helper.cc:520
Definition: pointgrp.h:106
void set_MO_core(bool core)
Definition: df_helper.h:100
void contract_metric_AO_core(double *Qpq, double *metp)
Definition: df_helper.cc:1134
void prepare_AO()
Definition: df_helper.cc:290
double get_metric_pow()
Definition: df_helper.h:109
size_t get_AO_size()
Returns the number of doubles in the screened AO integrals.
Definition: df_helper.h:81
void compute_J_symm(std::vector< SharedMatrix > D, std::vector< SharedMatrix > J, double *Mp, double *T1p, double *T2p, std::vector< std::vector< double >> D_buffers, size_t bcount, size_t block_size)
Definition: df_helper.cc:2669
void contract_metric_AO(double *Mp)
std::vector< std::pair< double, std::string > > metric_keys_
Definition: df_helper.h:319
std::vector< size_t > pshell_aggs_
Definition: df_helper.h:302
bool get_hold_met()
Definition: df_helper.h:117
std::string compute_metric(double pow)
Definition: df_helper.cc:1023
void set_nthreads(size_t nthreads)
Definition: df_helper.h:69
void prepare_blocking()
Definition: df_helper.cc:75
double get_schwarz_cutoff()
Definition: df_helper.h:105
void check_file_tuple(std::string name, std::pair< size_t, size_t > t0, std::pair< size_t, size_t > t1, std::pair< size_t, size_t > t2)
Definition: df_helper.cc:2172
void compute_K(std::vector< SharedMatrix > Cleft, std::vector< SharedMatrix > Cright, std::vector< SharedMatrix > K, double *Tp, double *Jtmp, double *Mp, size_t bcount, size_t block_size, std::vector< std::vector< double >> C_buffers, std::vector< SharedMatrix > D, std::vector< SharedMatrix > J)
Definition: df_helper.cc:2805
bool MO_core_
Definition: df_helper.h:261
size_t pshells_
Definition: df_helper.h:300
std::map< std::string, std::tuple< std::string, std::string > > files_
Definition: df_helper.h:367
std::shared_ptr< BasisSet > primary_
Definition: df_helper.h:249
void clear_spaces()
clear spaces
Definition: df_helper.cc:1219
FILE * fp
Definition: df_helper.h:347
void transform()
invoke transformations
Definition: df_helper.cc:1336
std::vector< size_t > schwarz_shell_mask_
Definition: df_helper.h:314
bool direct_
Definition: df_helper.h:259
double cutoff_
Definition: df_helper.h:263
std::vector< size_t > big_skips_
Definition: df_helper.h:294
std::map< double, SharedMatrix > metrics_
Definition: df_helper.h:278
size_t get_nthreads()
Definition: df_helper.h:70
void transform_disk()
Definition: df_helper.cc:1574
std::vector< std::string > bspace_
Definition: df_helper.h:342
std::vector< size_t > symm_agg_sizes_
Definition: df_helper.h:297
size_t naux_
Definition: df_helper.h:252
void set_memory(size_t doubles)
Definition: df_helper.h:77
double tolerance_
Definition: df_helper.h:264
void AO_filename_maker(size_t i)
Definition: df_helper.cc:90
bool JK_hint_
Definition: df_helper.h:268
std::vector< size_t > symm_sizes_
Definition: df_helper.h:296
void write_disk_tensor(std::string name, SharedMatrix M)
Definition: df_helper.cc:2074
void set_AO_core(bool core)
Definition: df_helper.h:91
size_t get_JK_hint()
Definition: df_helper.h:126
void put_tensor(std::string file, double *b, std::pair< size_t, size_t > a1, std::pair< size_t, size_t > a2, std::pair< size_t, size_t > a3, std::string op)
Definition: df_helper.cc:593
std::map< std::string, std::string > AO_files_
Definition: df_helper.h:370
std::vector< size_t > AO_file_sizes_
Definition: df_helper.h:371
std::map< std::string, stream > file_status_
Definition: df_helper.h:350
std::vector< size_t > small_skips_
Definition: df_helper.h:293
std::vector< size_t > strides_
Definition: df_helper.h:343
size_t nao_
Definition: df_helper.h:251
std::vector< std::string > AO_names_
Definition: df_helper.h:372
std::map< std::string, std::tuple< SharedMatrix, size_t > > spaces_
Definition: df_helper.h:333
size_t memory_
Definition: df_helper.h:255
void transform_core()
Definition: df_helper.cc:1342
void print_header()
print tons of useful info
Definition: df_helper.cc:172
void compute_JK(std::vector< SharedMatrix > Cleft, std::vector< SharedMatrix > Cright, std::vector< SharedMatrix > J, std::vector< SharedMatrix > K)
Definition: df_helper.cc:2524
bool get_MO_core()
Definition: df_helper.h:101
void filename_maker(std::string name, size_t a0, size_t a1, size_t a2, size_t op=0)
Definition: df_helper.cc:103
std::vector< size_t > Qshell_aggs_
Definition: df_helper.h:303
std::shared_ptr< Matrix > SharedMatrix
Definition: adc.h:49
void prepare_metric()
Definition: df_helper.cc:991
void check_matrix_size(std::string name, SharedMatrix M, std::pair< size_t, size_t > t0, std::pair< size_t, size_t > t1, std::pair< size_t, size_t > t2)
Definition: df_helper.cc:2155
void transpose_core(std::string name, std::tuple< size_t, size_t, size_t > order)
Definition: df_helper.cc:2235
void contract_metric(std::string file, double *metp, double *Mp, double *Fp, const size_t tots)
Definition: df_helper.cc:1050
std::map< std::string, std::tuple< std::string, std::string, size_t > > transf_
Definition: df_helper.h:334
bool AO_core_
Definition: df_helper.h:260
void check_file_key(std::string)
Definition: df_helper.cc:2148
bool get_AO_core()
Definition: df_helper.h:92
void set_JK_hint(bool hint)
Definition: df_helper.h:125
void get_tensor_(std::string file, double *b, std::pair< size_t, size_t > a1, std::pair< size_t, size_t > a2, std::pair< size_t, size_t > a3)
Definition: df_helper.cc:694
std::string return_metfile(double pow)
Definition: df_helper.cc:1009
Definition: df_helper.h:49
std::vector< std::string > order_
Definition: df_helper.h:341
size_t nthreads_
Definition: df_helper.h:262
size_t get_tensor_size(std::string key)
Definition: df_helper.cc:2501
void prepare_AO_core()
Definition: df_helper.cc:369
void fill_tensor(std::string name, SharedMatrix M)
Definition: df_helper.cc:1887
void get_tensor_AO(std::string file, double *Mp, size_t size, size_t start)
Definition: df_helper.cc:679
void build_JK(std::vector< SharedMatrix > Cleft, std::vector< SharedMatrix > Cright, std::vector< SharedMatrix > J, std::vector< SharedMatrix > K)
builds J/K
Definition: df_helper.cc:2518
bool space(char c)
Definition: stl_string.cc:119
void grab_AO(const size_t start, const size_t stop, double *Mp)
Definition: df_helper.cc:950
std::pair< size_t, size_t > identify_order()
Definition: df_helper.cc:1269
void transpose(std::string name, std::tuple< size_t, size_t, size_t > order)
tranpose a tensor after it has been written
Definition: df_helper.cc:2226
void compute_AO_p(const size_t start, const size_t stop, double *Mp, std::vector< std::shared_ptr< TwoBodyAOInt >> eri)
Definition: df_helper.cc:834
std::shared_ptr< BasisSet > aux_
Definition: df_helper.h:250
std::string get_method()
Definition: df_helper.h:62
std::vector< size_t > schwarz_fun_count_
Definition: df_helper.h:315
void hold_met(bool hold)
Definition: df_helper.h:116
std::pair< size_t, size_t > pshell_blocks_for_AO_build(const size_t mem, size_t symm, std::vector< std::pair< size_t, size_t >> &b)
Definition: df_helper.cc:432
std::map< std::string, std::vector< double > > transf_core_
Definition: df_helper.h:335
void add_transformation(std::string name, std::string key1, std::string key2, std::string order="Qpq")
Definition: df_helper.cc:1190
void set_method(std::string method)
Definition: df_helper.h:61
bool built
Definition: df_helper.h:269
std::vector< double > Ppq_
Definition: df_helper.h:277
bool transformed_
Definition: df_helper.h:270
void put_tensor_AO(std::string file, double *Mp, size_t size, size_t start, std::string op)
Definition: df_helper.cc:664
std::pair< size_t, size_t > Qshell_blocks_for_transform(const size_t mem, size_t wtmp, size_t wfinal, std::vector< std::pair< size_t, size_t >> &b)
Definition: df_helper.cc:479
FILE * stream_check(std::string filename, std::string op)
Definition: df_helper.cc:573
std::pair< size_t, size_t > info_
Definition: df_helper.h:271
void add_disk_tensor(std::string key, std::tuple< size_t, size_t, size_t > dimensions)
Definition: df_helper.cc:2063