Psi4
wavefunction.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-2019 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 _psi_src_lib_libmints_wavefunction_h
30 #define _psi_src_lib_libmints_wavefunction_h
31 
32 #include "typedefs.h"
35 
36 #include <cstddef>
37 #include <vector>
38 #include <array>
39 #include <memory>
40 #include <map>
41 
42 #define MAX_IOFF 30000
43 extern size_t ioff[MAX_IOFF];
44 
45 #define MAX_DF 500
46 extern double df[MAX_DF];
47 
48 #define MAX_BC 20
49 extern double bc[MAX_BC][MAX_BC];
50 
51 #define MAX_FAC 100
52 extern double fac[MAX_FAC];
53 
54 #if !defined(EXPLICIT_IOFF)
55 #define EXPLICIT_IOFF(i) ((i) * ((i) + 1) / 2)
56 #endif
57 
58 #if !defined(INDEX2)
59 #define INDEX2(i, j) ((i) >= (j) ? EXPLICIT_IOFF(i) + (j) : EXPLICIT_IOFF(j) + (i))
60 #endif
61 
62 #if !defined(INDEX4)
63 #define INDEX4(i, j, k, l) (INDEX2(INDEX2((i), (j)), INDEX2((k), (l))))
64 #endif
65 
66 namespace psi {
67 
68 class Molecule;
69 class BasisSet;
70 class IntegralFactory;
71 class Matrix;
72 class Vector;
73 class MatrixFactory;
74 class Options;
75 class SOBasisSet;
76 class PCM;
77 class PSIO;
78 class OrbitalSpace;
79 class ExternalPotential;
80 
85 class PSI_API Wavefunction : public std::enable_shared_from_this<Wavefunction> {
86  protected:
88  std::string name_;
89 
91  std::map<std::string, std::shared_ptr<BasisSet>> basissets_;
92 
94  std::shared_ptr<BasisSet> basisset_;
95 
97  std::shared_ptr<SOBasisSet> sobasisset_;
98 
101 
103  std::shared_ptr<Molecule> molecule_;
104 
107 
108  // PSI file access variables
109  std::shared_ptr<PSIO> psio_;
110 
112  std::shared_ptr<IntegralFactory> integral_;
113 
115  std::shared_ptr<MatrixFactory> factory_;
116 
117  std::shared_ptr<Wavefunction> reference_wavefunction_;
118 
120  long int memory_;
121 
125  enum FieldType { nothing, dipole_x, dipole_y, dipole_z, dipole, embpot, dx, sphere };
128  std::array<double, 3> dipole_field_strength_;
129 
131  size_t debug_;
133  size_t print_;
134 
136  int nalpha_, nbeta_;
137 
139  int nfrzc_;
140 
153 
158 
161 
163  double energy_;
164 
166  double efzc_;
167 
169  int nso_;
171  int nmo_;
173  int nirrep_;
174 
177 
180 
185 
190 
193 
198 
203 
206 
209 
211  SharedMatrix C_subset_helper(SharedMatrix C, const Dimension& noccpi, SharedVector epsilon,
212  const std::string& basis, const std::string& subset) const;
213  SharedVector epsilon_subset_helper(SharedVector epsilon, const Dimension& noccpi, const std::string& basis,
214  const std::string& subset) const;
215  std::vector<std::vector<int>> subset_occupation(const Dimension& noccpi, const std::string& subset) const;
216 
218  std::shared_ptr<std::vector<double>> esp_at_nuclei_;
219 
221  std::vector<SharedVector> mo_extents_;
222 
224  std::shared_ptr<std::vector<double>> atomic_point_charges_;
225 
227  std::vector<std::vector<std::tuple<double, int, int>>> no_occupations_;
228 
231 
235 
236  // The external potential
237  std::shared_ptr<ExternalPotential> external_pot_;
238 
239  // Collection of scalar variables
240  std::map<std::string, double> variables_;
241 
242  // Collection of Matrix variables
243  // * any '<mtd> GRADIENT' is an energy derivative w.r.t. nuclear perturbations (a.u.) as a (nat, 3) Matrix
244  // * any '<mtd> DIPOLE GRADIENT' is a dipole derivative w.r.t. nuclear perturbations (a.u.) as a degree-of-freedom
245  // by dipole component (3 * nat, 3) Matrix
246  std::map<std::string, SharedMatrix> arrays_;
247 
248  // Polarizable continuum model
250  std::shared_ptr<PCM> PCM_;
251 
252  private:
253  // Wavefunction() {}
254  void common_init();
255 
256  public:
258  Wavefunction(std::shared_ptr<Molecule> molecule, std::shared_ptr<BasisSet> basis, Options& options);
259 
261  Wavefunction(std::shared_ptr<Molecule> molecule, std::shared_ptr<BasisSet> basis);
262 
265  Wavefunction(std::shared_ptr<Molecule> molecule, std::shared_ptr<BasisSet> basisset,
266  std::map<std::string, std::shared_ptr<Matrix>> matrices,
267  std::map<std::string, std::shared_ptr<Vector>> vectors, std::map<std::string, Dimension> dimensions,
268  std::map<std::string, int> ints, std::map<std::string, std::string> strings,
269  std::map<std::string, bool> booleans, std::map<std::string, double> floats);
270 
272  Wavefunction(SharedWavefunction reference_wavefunction, Options& options);
273 
275  Wavefunction(Options& options);
276 
285  void shallow_copy(SharedWavefunction other);
286  void shallow_copy(const Wavefunction* other);
287 
295  void deep_copy(SharedWavefunction other);
296  void deep_copy(const Wavefunction* other);
297 
305  std::shared_ptr<Wavefunction> c1_deep_copy(std::shared_ptr<BasisSet> basis);
306 
307  virtual ~Wavefunction();
308 
310  virtual double compute_energy() {
311  throw PSIEXCEPTION("Compute energy has not been implemented for this wavefunction.");
312  }
313 
316  throw PSIEXCEPTION("Analytic gradients are not available for this wavefunction.");
317  }
318 
321  throw PSIEXCEPTION("Analytic Hessians are not available for this wavefunction.");
322  }
323 
325  bool same_a_b_orbs() const { return same_a_b_orbs_; }
326  bool same_a_b_dens() const { return same_a_b_dens_; }
327 
330  Dimension map_irreps(const Dimension& dimpi);
331 
333  std::shared_ptr<Molecule> molecule() const;
334  std::shared_ptr<PSIO> psio() const;
335  Options& options() const;
336 
338  std::shared_ptr<IntegralFactory> integral() const;
340  std::shared_ptr<BasisSet> basisset() const;
342  std::shared_ptr<SOBasisSet> sobasisset() const;
343 
345  std::shared_ptr<BasisSet> get_basisset(std::string label);
346  void set_basisset(std::string label, std::shared_ptr<BasisSet> basis);
347  bool basisset_exists(std::string label);
348 
350  std::shared_ptr<MatrixFactory> matrix_factory() const;
352  std::shared_ptr<Wavefunction> reference_wavefunction() const;
354  void set_reference_wavefunction(const std::shared_ptr<Wavefunction> wfn);
355 
357  bool density_fitted() const { return density_fitted_; }
358 
360  int get_print() const { return print_; }
361  static void initialize_singletons();
362 
364  const Dimension& doccpi() const { return doccpi_; }
366  const Dimension& soccpi() const { return soccpi_; }
368  const Dimension& nsopi() const { return nsopi_; }
370  const Dimension& nmopi() const { return nmopi_; }
372  const Dimension& nalphapi() const { return nalphapi_; }
374  const Dimension& nbetapi() const { return nbetapi_; }
376  const Dimension& frzcpi() const { return frzcpi_; }
378  const Dimension& frzvpi() const { return frzvpi_; }
379 
380  /* Return the magnitude of the dipole perturbation strength in the x,y,z direction */
381  std::array<double, 3> get_dipole_field_strength() const;
382  FieldType get_dipole_perturbation_type() const;
383 
389  void force_doccpi(const Dimension& doccpi);
395  void force_soccpi(const Dimension& soccpi);
396 
398  void set_frzvpi(const Dimension& frzvpi);
399 
401  int nfrzc() const { return nfrzc_; }
403  int nalpha() const { return nalpha_; }
405  int nbeta() const { return nbeta_; }
407  int nso() const { return nso_; }
409  int nmo() const { return nmo_; }
411  int nirrep() const { return nirrep_; }
414  "Using `Wavefunction.reference_energy` instead of `Wavefunction.energy` is deprecated, and in 1.4 it will "
415  "stop working")
416  double reference_energy() const { return energy_; }
417  double energy() const { return energy_; }
419  void set_energy(double ene) { energy_ = ene; }
421  double efzc() const { return efzc_; }
423  void set_efzc(double efzc) { efzc_ = efzc; }
424 
426  SharedMatrix S() const { return S_; }
427 
429  SharedMatrix H() const { return H_; }
430 
432  SharedMatrix Ca() const;
434  SharedMatrix Cb() const;
436  SharedMatrix Fa() const;
438  SharedMatrix Fb() const;
440  SharedVector epsilon_a() const;
442  SharedVector epsilon_b() const;
444  SharedMatrix Lagrangian() const;
445 
446  SharedMatrix aotoso() const { return AO2SO_; }
447 
449  const SharedMatrix Da() const;
451  SharedMatrix Db() const;
452 
461  SharedMatrix Ca_subset(const std::string& basis = "SO", const std::string& subset = "ALL") const;
462 
471  SharedMatrix Cb_subset(const std::string& basis = "SO", const std::string& subset = "ALL") const;
472 
482  OrbitalSpace alpha_orbital_space(const std::string& id, const std::string& basis = "SO",
483  const std::string& subset = "ALL");
493  OrbitalSpace beta_orbital_space(const std::string& id, const std::string& basis = "SO",
494  const std::string& subset = "ALL");
495 
502  SharedMatrix Da_subset(const std::string& basis = "SO") const;
503 
510  SharedMatrix Db_subset(const std::string& basis = "SO") const;
511 
520  SharedMatrix D_subset_helper(SharedMatrix D, SharedMatrix C, const std::string& basis) const;
521 
528  SharedMatrix Fa_subset(const std::string& basis = "SO") const;
529 
536  SharedMatrix Fb_subset(const std::string& basis = "SO") const;
537 
546  SharedMatrix F_subset_helper(SharedMatrix F, SharedMatrix C, const std::string& basis) const;
547 
556  SharedMatrix matrix_subset_helper(SharedMatrix M, SharedMatrix C, const std::string& basis,
557  const std::string matrix_basename) const;
558 
566  SharedVector epsilon_a_subset(const std::string& basis = "SO", const std::string& subset = "ALL") const;
567 
575  SharedVector epsilon_b_subset(const std::string& basis = "SO", const std::string& subset = "ALL") const;
576 
585  SharedMatrix basis_projection(SharedMatrix Cold, Dimension noccpi, std::shared_ptr<BasisSet> old_basis,
586  std::shared_ptr<BasisSet> new_basis);
587 
589  SharedMatrix X() const;
590 
592  SharedMatrix gradient() const;
594  void set_gradient(SharedMatrix grad);
595 
597  SharedMatrix hessian() const;
599  void set_hessian(SharedMatrix hess);
600 
602  std::shared_ptr<std::vector<double>> esp_at_nuclei() const { return esp_at_nuclei_; }
603 
605  std::shared_ptr<Vector> get_esp_at_nuclei() const;
606 
608  void set_esp_at_nuclei(const std::shared_ptr<std::vector<double>>& nesps) { esp_at_nuclei_ = nesps; }
609 
611  std::vector<SharedVector> mo_extents() const { return mo_extents_; }
612 
614  std::vector<SharedVector> get_mo_extents() const;
615 
617  void set_mo_extents(const std::vector<SharedVector> mo_es) { mo_extents_ = mo_es; }
618 
620  std::shared_ptr<std::vector<double>> atomic_point_charges() const { return atomic_point_charges_; }
622  SharedVector get_atomic_point_charges() const;
623 
625  void set_atomic_point_charges(const std::shared_ptr<std::vector<double>>& apcs) { atomic_point_charges_ = apcs; }
626 
628  std::vector<std::vector<std::tuple<double, int, int>>> no_occupations() const { return no_occupations_; }
629 
631  std::vector<std::vector<std::tuple<double, int, int>>> get_no_occupations() const;
632 
634  void set_no_occupations(const std::vector<std::vector<std::tuple<double, int, int>>> no_ocs) {
635  no_occupations_ = no_ocs;
636  }
637 
640  "Using `Wavefunction.frequencies` c-side instead of `Wavefunction.frequencies` py-side is deprecated, and in "
641  "1.4 it will stop working")
642  SharedVector frequencies() const;
643 
645  PSI_DEPRECATED("Using `Wavefunction.set_frequencies` is deprecated, and in 1.4 it will stop working")
646  void set_frequencies(std::shared_ptr<Vector> freqs);
647 
649  void set_name(const std::string& name) { name_ = name; }
650 
652  const std::string& name() const { return name_; }
653 
654  // Set the print flag level
655  void set_print(size_t print) { print_ = print; }
656 
657  // Set the debug flag level
658  void set_debug(size_t debug) { debug_ = debug; }
659 
661  virtual void save() const;
662 
663  // Set the external potential
664  void set_external_potential(std::shared_ptr<ExternalPotential> external) { external_pot_ = external; }
665 
667  bool has_scalar_variable(const std::string& key);
668  bool has_array_variable(const std::string& key);
669  double scalar_variable(const std::string& key);
670  SharedMatrix array_variable(const std::string& key);
671  void set_scalar_variable(const std::string& key, double value);
672  void set_array_variable(const std::string& key, SharedMatrix value);
673  int del_scalar_variable(const std::string& key);
674  int del_array_variable(const std::string& key);
675  std::map<std::string, double> scalar_variables();
676  std::map<std::string, SharedMatrix> array_variables();
677 
679  "Using `Wavefunction.get_variable` instead of `Wavefunction.scalar_variable` is deprecated, and in 1.4 it will "
680  "stop working")
681  double get_variable(const std::string& key);
683  "Using `Wavefunction.set_variable` instead of `Wavefunction.set_scalar_variable` is deprecated, and in 1.4 it "
684  "will stop working")
685  void set_variable(const std::string& key, double value);
687  "Using `Wavefunction.variables` instead of `Wavefunction.scalar_variables` is deprecated, and in 1.4 it will "
688  "stop working")
689  std::map<std::string, double> variables();
691  "Using `Wavefunction.get_array` instead of `Wavefunction.array_variable` is deprecated, and in 1.4 it will "
692  "stop working")
693  SharedMatrix get_array(const std::string& key);
695  "Using `Wavefunction.set_array` instead of `Wavefunction.set_array_variable` is deprecated, and in 1.4 it will "
696  "stop working")
697  void set_array(const std::string& key, SharedMatrix value);
699  "Using `Wavefunction.arrays` instead of `Wavefunction.array_variables` is deprecated, and in 1.4 it will stop "
700  "working")
701  std::map<std::string, SharedMatrix> arrays();
702 
704  void set_PCM(const std::shared_ptr<PCM>& pcm);
706  std::shared_ptr<PCM> get_PCM() const;
707  bool PCM_enabled() const { return PCM_enabled_; }
708 };
709 
710 } // namespace psi
711 
712 #endif
FieldType dipole_field_type_
Definition: wavefunction.h:126
#define MAX_BC
Definition: wavefunction.h:48
SharedVector epsilon_a_
Alpha orbital eneriges.
Definition: wavefunction.h:200
SharedMatrix S_
Overlap matrix.
Definition: wavefunction.h:176
const Dimension & frzvpi() const
Returns the frozen virtual orbitals per irrep array.
Definition: wavefunction.h:378
const Dimension & nsopi() const
Returns the number of SOs per irrep array.
Definition: wavefunction.h:368
std::shared_ptr< std::vector< double > > esp_at_nuclei() const
Returns electrostatic potentials at nuclei.
Definition: wavefunction.h:602
SharedMatrix AO2SO_
AO2SO conversion matrix (AO in rows, SO in cols)
Definition: wavefunction.h:100
std::shared_ptr< PSIO > psio_
Definition: wavefunction.h:109
SharedMatrix S() const
Returns the overlap matrix.
Definition: wavefunction.h:426
int nmo_
Total number of MOs.
Definition: wavefunction.h:171
Dimension soccpi_
Number of singly occupied per irrep.
Definition: wavefunction.h:144
int nbeta_
Definition: wavefunction.h:136
std::shared_ptr< BasisSet > basis
Definition: dx_write.cc:59
void set_no_occupations(const std::vector< std::vector< std::tuple< double, int, int >>> no_ocs)
Sets the NO occupations.
Definition: wavefunction.h:634
SharedMatrix H_
Core Hamiltonian matrix.
Definition: wavefunction.h:179
void set_print(size_t print)
Definition: wavefunction.h:655
Dimension frzcpi_
Number of frozen core per irrep.
Definition: wavefunction.h:146
bool same_a_b_dens() const
Definition: wavefunction.h:326
std::shared_ptr< MatrixFactory > factory_
Matrix factory for creating standard sized matrices.
Definition: wavefunction.h:115
double efzc_
Frozen-core energy associated with this wavefunction.
Definition: wavefunction.h:166
double df[MAX_DF]
Definition: wavefunction.cc:67
const Dimension & soccpi() const
Returns the SOCC per irrep array.
Definition: wavefunction.h:366
size_t print_
Print flag.
Definition: wavefunction.h:133
std::shared_ptr< std::vector< double > > atomic_point_charges() const
Returns the atomic point charges.
Definition: wavefunction.h:620
SharedMatrix Lagrangian_
Lagrangian matrix.
Definition: wavefunction.h:192
double efzc() const
Returns the frozen-core energy.
Definition: wavefunction.h:421
long int memory_
How much memory you have access to.
Definition: wavefunction.h:120
std::shared_ptr< PCM > PCM_
Definition: wavefunction.h:250
std::shared_ptr< IntegralFactory > integral_
Integral factory.
Definition: wavefunction.h:112
void set_debug(size_t debug)
Definition: wavefunction.h:658
void set_efzc(double efzc)
Sets the frozen-core energy.
Definition: wavefunction.h:423
double energy_
The energy associated with this wavefunction.
Definition: wavefunction.h:163
bool PCM_enabled_
Definition: wavefunction.h:249
#define MAX_FAC
Definition: wavefunction.h:51
int get_print() const
Returns the print level.
Definition: wavefunction.h:360
std::map< std::string, double > variables_
Definition: wavefunction.h:240
int perturb_h_
Perturb the Hamiltonian?
Definition: wavefunction.h:123
std::vector< SharedVector > mo_extents() const
Returns Molecular orbital extents.
Definition: wavefunction.h:611
double bc[MAX_BC][MAX_BC]
Definition: wavefunction.cc:68
bool same_a_b_dens_
Same orbs or dens.
Definition: wavefunction.h:233
const Dimension & nmopi() const
Returns the number of MOs per irrep array.
Definition: wavefunction.h:370
#define MAX_DF
Definition: wavefunction.h:45
void set_energy(double ene)
Sets the energy.
Definition: wavefunction.h:419
int nfrzc_
Total frozen core orbitals.
Definition: wavefunction.h:139
double energy() const
Definition: wavefunction.h:417
int nalpha() const
Return the number of alpha electrons.
Definition: wavefunction.h:403
int nso_
Total number of SOs.
Definition: wavefunction.h:169
std::shared_ptr< std::vector< double > > atomic_point_charges_
If atomic point charges are available they will be here.
Definition: wavefunction.h:224
FieldType
With what...
Definition: wavefunction.h:125
SharedMatrix Ca_
Alpha MO coefficients.
Definition: wavefunction.h:182
SharedMatrix Cb_
Beta MO coefficients.
Definition: wavefunction.h:184
std::array< double, 3 > dipole_field_strength_
How big of a field perturbation to apply.
Definition: wavefunction.h:128
size_t debug_
Debug flag.
Definition: wavefunction.h:131
std::string name_
Name of the wavefunction.
Definition: wavefunction.h:88
const Dimension & doccpi() const
Returns the DOCC per irrep array.
Definition: wavefunction.h:364
bool density_fitted_
Whether this wavefunction was obtained using density fitting.
Definition: wavefunction.h:160
SharedMatrix hessian_
Hessian, if available, as natom_*3 x natom_*3 SharedMatrix (NOT mass-weighted!)
Definition: wavefunction.h:208
std::shared_ptr< Wavefunction > reference_wavefunction_
Definition: wavefunction.h:117
Options & options_
Options object.
Definition: wavefunction.h:106
Definition: dimension.h:40
std::shared_ptr< Molecule > molecule
Definition: dx_write.cc:58
virtual SharedMatrix compute_hessian()
Compute Hessian. Subclasses override this function to compute the Hessian.
Definition: wavefunction.h:320
SharedMatrix H() const
Returns the core Hamiltonian matrix.
Definition: wavefunction.h:429
Definition: liboptions.h:352
int nso() const
Returns the number of SOs.
Definition: wavefunction.h:407
virtual double compute_energy()
Compute energy. Subclasses override this function to compute its energy.
Definition: wavefunction.h:310
std::shared_ptr< BasisSet > basisset_
The ORBITAL basis.
Definition: wavefunction.h:94
void set_external_potential(std::shared_ptr< ExternalPotential > external)
Definition: wavefunction.h:664
std::shared_ptr< Matrix > SharedMatrix
Definition: adc.h:49
std::shared_ptr< Wavefunction > wfn
Definition: dx_write.cc:60
double fac[MAX_FAC]
Definition: wavefunction.cc:69
Simple wavefunction base class.
Definition: wavefunction.h:85
#define PSI_API
Definition: pragma.h:155
bool same_a_b_orbs_
Definition: wavefunction.h:234
#define MAX_IOFF
Definition: wavefunction.h:42
std::map< std::string, std::shared_ptr< BasisSet > > basissets_
DF/RI/F12/etc basis sets.
Definition: wavefunction.h:91
Dimension frzvpi_
Number of frozen virtuals per irrep.
Definition: wavefunction.h:148
std::shared_ptr< Molecule > molecule_
Molecule that this wavefunction is run on.
Definition: wavefunction.h:103
int nfrzc() const
Return the number of frozen core orbitals.
Definition: wavefunction.h:401
int nmo() const
Returns the number of MOs.
Definition: wavefunction.h:409
std::vector< std::vector< std::tuple< double, int, int > > > no_occupations() const
Returns NO occupations.
Definition: wavefunction.h:628
SharedMatrix Fa_
Alpha Fock matrix.
Definition: wavefunction.h:195
PSI_DEPRECATED("Using `Wavefunction.reference_energy` instead of `Wavefunction.energy` is deprecated, and in 1.4 it will ""stop working") double reference_energy() const
Returns the energy.
Definition: wavefunction.h:413
std::shared_ptr< SOBasisSet > sobasisset_
Primary basis set for SO integrals.
Definition: wavefunction.h:97
const Dimension & nbetapi() const
Returns the number of beta electrons per irrep array.
Definition: wavefunction.h:374
SharedMatrix Da_
Alpha density matrix.
Definition: wavefunction.h:187
std::shared_ptr< ExternalPotential > external_pot_
Definition: wavefunction.h:237
void set_mo_extents(const std::vector< SharedVector > mo_es)
Sets molecular orbital extents.
Definition: wavefunction.h:617
const std::string & name() const
Returns the wavefunction name.
Definition: wavefunction.h:652
The OrbitalSpace class.
Definition: orbitalspace.h:48
SharedVector frequencies_
If frequencies are available, they will be here:
Definition: wavefunction.h:230
int nbeta() const
Return the number of beta electrons.
Definition: wavefunction.h:405
void set_atomic_point_charges(const std::shared_ptr< std::vector< double >> &apcs)
Sets the atomic point charges.
Definition: wavefunction.h:625
bool density_fitted() const
Returns whether this wavefunction was obtained using density fitting or not.
Definition: wavefunction.h:357
SharedVector epsilon_b_
Beta orbital energies.
Definition: wavefunction.h:202
int nirrep_
Number of irreps.
Definition: wavefunction.h:173
EXTERN int * ioff
Definition: cc/ccresponse/globals.h:48
SharedMatrix aotoso() const
Definition: wavefunction.h:446
bool same_a_b_orbs() const
Is this a restricted wavefunction?
Definition: wavefunction.h:325
const Dimension & nalphapi() const
Returns the number of alpha electrons per irrep array.
Definition: wavefunction.h:372
SharedMatrix Db_
Beta density matrix.
Definition: wavefunction.h:189
const Dimension & frzcpi() const
Returns the frozen core orbitals per irrep array.
Definition: wavefunction.h:376
std::vector< std::vector< std::tuple< double, int, int > > > no_occupations_
Should natural orbital occupations be available, they will be here.
Definition: wavefunction.h:227
Dimension nmopi_
Number of mo per irrep.
Definition: wavefunction.h:157
std::shared_ptr< Wavefunction > SharedWavefunction
Definition: typedefs.h:54
std::map< std::string, SharedMatrix > arrays_
Definition: wavefunction.h:246
SharedMatrix Fb_
Beta Fock matrix.
Definition: wavefunction.h:197
Dimension nbetapi_
Number of beta electrons per irrep.
Definition: wavefunction.h:152
#define PSIEXCEPTION(message)
Definition: exception.h:48
void set_esp_at_nuclei(const std::shared_ptr< std::vector< double >> &nesps)
Sets the electrostatic potentials at nuclei.
Definition: wavefunction.h:608
#define PSI_DEPRECATED(msg)
Definition: pragma.h:164
Dimension nalphapi_
Number of alpha electrons per irrep.
Definition: wavefunction.h:150
Definition: vector.h:44
int nirrep() const
Returns the number of irreps.
Definition: wavefunction.h:411
virtual SharedMatrix compute_gradient()
Compute gradient. Subclasses override this function to compute the gradient.
Definition: wavefunction.h:315
std::shared_ptr< Vector > SharedVector
Definition: adc.h:51
Dimension nsopi_
Number of so per irrep.
Definition: wavefunction.h:155
std::shared_ptr< std::vector< double > > esp_at_nuclei_
Should nuclear electrostatic potentials be available, they will be here.
Definition: wavefunction.h:218
SharedMatrix gradient_
gradient, if available, as natom_ x 3 SharedMatrix
Definition: wavefunction.h:205
PCM_enabled_(false)
Definition: wavefunction.cc:76
std::vector< SharedVector > mo_extents_
Should molecular orbital extents be available, they will be here.
Definition: wavefunction.h:221
Dimension doccpi_
Number of doubly occupied per irrep.
Definition: wavefunction.h:142