Psi4
psipcm.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 PCM_H
30 #define PCM_H
31 #ifdef USING_PCMSolver
32 
33 #include <vector>
34 #include "psi4/libpsio/psio.hpp"
35 #include "psi4/pragma.h"
37  PRAGMA_WARNING_PUSH
38  PRAGMA_WARNING_IGNORE_DEPRECATED_DECLARATIONS
39  #include <memory>
41 
42 #include <PCMSolver/pcmsolver.h>
43 
44 namespace psi {
45 class BasisSet;
46 class Options;
47 using SharedMatrix=std::shared_ptr<Matrix>;
48 
49 class PCM {
50  public:
51  enum CalcType {Total, NucAndEle, EleOnly};
52  PCM() {};
53  PCM(Options &options, std::shared_ptr<PSIO> psio, int nirrep, std::shared_ptr<BasisSet> basisset);
54  ~PCM();
55  double compute_E(SharedMatrix &D, CalcType type = NucAndEle);//Total); this should be the default (once an advanced option is available)
56  SharedMatrix compute_V();
57  SharedMatrix compute_V_electronic(); // This is needed by the CC code (and maybe the LR-SCF code)
58 
59  protected:
61  int ntess_;
63  int ntessirr_;
65  SharedMatrix tess_Zxyz_;
67  double * tess_pot_e_;
69  double * tess_pot_n_;
71  double * tess_pot_;
73  double * tess_charges_e_;
75  double * tess_charges_n_;
77  double * tess_charges_;
79  double compute_E_total(SharedMatrix &D);
81  double compute_E_separate(SharedMatrix &D);
83  double compute_E_electronic(SharedMatrix &D);
84 
86  std::shared_ptr<BasisSet> basisset_;
87 
90  SharedMatrix my_aotoso_;
91 
93  PCMPotentialInt* potential_int_;
94 
96  pcmsolver_context_t * context_;
97 
99  int pcm_print_;
100 
101 };
102 
103 typedef std::shared_ptr<PCM> SharedPCM;
104 
105 void host_writer(const char * message);
106 
107 } // psi
108 #endif
109 #endif
PRAGMA_WARNING_PUSH PRAGMA_WARNING_IGNORE_DEPRECATED_DECLARATIONS PRAGMA_WARNING_POP
Definition: integraliter.cc:43
std::shared_ptr< Matrix > SharedMatrix
Definition: adc.h:49